diff --git a/.php-cs-fixer.php b/.php-cs-fixer.php
new file mode 100644
index 0000000..fd35f11
--- /dev/null
+++ b/.php-cs-fixer.php
@@ -0,0 +1,35 @@
+in(__DIR__ . '/src')
+ ->in(__DIR__ . '/tests')
+ ->name('*.php')
+ ->notName('*.blade.php')
+ ->ignoreDotFiles(true)
+ ->ignoreVCS(true);
+
+return (new Config())
+ ->setRules([
+ '@PSR12' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ 'ordered_imports' => ['sort_algorithm' => 'alpha'],
+ 'no_unused_imports' => true,
+ 'not_operator_with_successor_space' => true,
+ 'trailing_comma_in_multiline' => true,
+ 'phpdoc_scalar' => true,
+ 'unary_operator_spaces' => true,
+ 'binary_operator_spaces' => true,
+ 'blank_line_before_statement' => [
+ 'statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'],
+ ],
+ 'phpdoc_single_line_var_spacing' => true,
+ 'phpdoc_var_without_name' => true,
+ 'method_argument_space' => [
+ 'on_multiline' => 'ensure_fully_multiline',
+ 'keep_multiple_spaces_after_comma' => true,
+ ],
+ ])
+ ->setFinder($finder);
diff --git a/README.md b/README.md
index a4d4344..89ed3bb 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,353 @@
-# Beacon
+[](https://github.com/socialdept/atp-signals)
-[![Latest Version on Packagist][ico-version]][link-packagist]
-[![Total Downloads][ico-downloads]][link-downloads]
-[![Build Status][ico-travis]][link-travis]
-[![StyleCI][ico-styleci]][link-styleci]
+
+ Resolve AT Protocol identities in your Laravel application.
+
-This is where your description should go. Take a look at [contributing.md](CONTRIBUTING.md) to see a to do list.
+
+
+
+
+
+
+
+
+---
+
+## What is Beacon?
+
+**Beacon** is a Laravel package that resolves AT Protocol identities. Convert DIDs to handles, find PDS endpoints, and resolve DID documents with automatic caching and fallback support for both `did:plc` and `did:web` methods.
+
+Think of it as a Swiss Army knife for AT Protocol identity resolution.
+
+## Why use Beacon?
+
+- **Simple API** - Resolve DIDs and handles with one method call
+- **Automatic caching** - Smart caching with configurable TTLs
+- **Multiple DID methods** - Support for `did:plc` and `did:web`
+- **PDS discovery** - Find the correct PDS endpoint for any user
+- **Production ready** - Battle-tested with proper error handling
+- **Zero config** - Works out of the box with sensible defaults
+
+## Quick Example
+
+```php
+use SocialDept\Beacon\Facades\Beacon;
+
+// Resolve a DID to its document
+$document = Beacon::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
+$handle = $document->getHandle(); // "user.bsky.social"
+$pds = $document->getPdsEndpoint(); // "https://bsky.social"
+
+// Resolve a handle to its DID
+$did = Beacon::resolveHandle('user.bsky.social');
+// "did:plc:ewvi7nxzyoun6zhxrhs64oiz"
+
+// Find someone's PDS endpoint
+$pds = Beacon::resolvePds('alice.bsky.social');
+// "https://bsky.social"
+```
## Installation
-Via Composer
+```bash
+composer require socialdept/atp-beacon
+```
+
+Beacon will auto-register with Laravel. Optionally publish the config:
```bash
-composer require social-dept/beacon
+php artisan vendor:publish --tag=beacon-config
```
-## Usage
+## Basic Usage
-## Change log
+### Resolving DIDs
-Please see the [changelog](changelog.md) for more information on what has changed recently.
+Beacon supports both `did:plc` and `did:web` methods:
-## Testing
+```php
+use SocialDept\Beacon\Facades\Beacon;
-```bash
-composer test
+// PLC directory resolution
+$document = Beacon::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
+
+// Web DID resolution
+$document = Beacon::resolveDid('did:web:example.com');
+
+// Access document data
+$handle = $document->getHandle();
+$pdsEndpoint = $document->getPdsEndpoint();
+$services = $document->service;
+```
+
+### Resolving Handles
+
+Convert human-readable handles to DIDs:
+
+```php
+$did = Beacon::resolveHandle('alice.bsky.social');
+// "did:plc:ewvi7nxzyoun6zhxrhs64oiz"
+
+// Get the full DID document
+$document = Beacon::resolveHandleToDid('alice.bsky.social');
+```
+
+### Finding PDS Endpoints
+
+Automatically discover a user's Personal Data Server:
+
+```php
+// From a DID
+$pds = Beacon::resolvePds('did:plc:ewvi7nxzyoun6zhxrhs64oiz');
+
+// From a handle
+$pds = Beacon::resolvePds('alice.bsky.social');
+
+// Returns: "https://bsky.social" or user's custom PDS
```
-## Contributing
+This is particularly useful when you need to make API calls to a user's PDS instead of hardcoding Bluesky's public instance.
+
+### Cache Management
+
+Beacon automatically caches resolutions. Clear the cache when needed:
+
+```php
+// Clear specific DID cache
+Beacon::clearDidCache('did:plc:abc123');
+
+// Clear specific handle cache
+Beacon::clearHandleCache('alice.bsky.social');
+
+// Clear specific PDS cache
+Beacon::clearPdsCache('alice.bsky.social');
+
+// Clear all cached data
+Beacon::clearCache();
+```
+
+### Disable Caching
+
+Pass `false` as the second parameter to bypass cache:
+
+```php
+$document = Beacon::resolveDid('did:plc:abc123', useCache: false);
+$did = Beacon::resolveHandle('alice.bsky.social', useCache: false);
+$pds = Beacon::resolvePds('alice.bsky.social', useCache: false);
+```
+
+### Identity Validation
+
+Beacon includes static helper methods to validate DIDs and handles:
+
+```php
+use SocialDept\Beacon\Support\Identity;
+
+// Validate handles
+Identity::isHandle('alice.bsky.social'); // true
+Identity::isHandle('invalid'); // false
+
+// Validate DIDs
+Identity::isDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz'); // true
+Identity::isDid('did:web:example.com'); // true
+Identity::isDid('invalid'); // false
+
+// Extract DID method
+Identity::extractDidMethod('did:plc:abc123'); // "plc"
+Identity::extractDidMethod('did:web:test'); // "web"
+
+// Check specific DID types
+Identity::isPlcDid('did:plc:abc123'); // true
+Identity::isWebDid('did:web:test'); // true
+```
+
+These helpers are useful for validating user input before making resolution calls.
+
+## Configuration
+
+Beacon works great with zero configuration, but you can customize behavior in `config/beacon.php`:
+
+```php
+return [
+ // PLC directory for did:plc resolution
+ 'plc_directory' => env('BEACON_PLC_DIRECTORY', 'https://plc.directory'),
+
+ // Default PDS endpoint for handle resolution
+ 'pds_endpoint' => env('BEACON_PDS_ENDPOINT', 'https://bsky.social'),
+
+ // HTTP request timeout
+ 'timeout' => env('BEACON_TIMEOUT', 10),
+
+ // Cache configuration
+ 'cache' => [
+ 'enabled' => env('BEACON_CACHE_ENABLED', true),
+
+ // Cache TTL for DID documents (1 hour)
+ 'did_ttl' => env('BEACON_CACHE_DID_TTL', 3600),
+
+ // Cache TTL for handle resolutions (1 hour)
+ 'handle_ttl' => env('BEACON_CACHE_HANDLE_TTL', 3600),
+
+ // Cache TTL for PDS endpoints (1 hour)
+ 'pds_ttl' => env('BEACON_CACHE_PDS_TTL', 3600),
+ ],
+];
+```
+
+## API Reference
+
+### Available Methods
+
+```php
+// DID Resolution
+Beacon::resolveDid(string $did, bool $useCache = true): DidDocument
+
+// Handle Resolution
+Beacon::handleToDid(string $handle, bool $useCache = true): string
+Beacon::resolveHandle(string $handle, bool $useCache = true): DidDocument
+
+// Identity Resolution
+Beacon::resolveIdentity(string $actor, bool $useCache = true): DidDocument
+
+// PDS Resolution
+Beacon::resolvePds(string $actor, bool $useCache = true): ?string
+
+// Cache Management
+Beacon::clearDidCache(string $did): void
+Beacon::clearHandleCache(string $handle): void
+Beacon::clearPdsCache(string $actor): void
+Beacon::clearCache(): void
+
+// Identity Validation (static helpers)
+Identity::isHandle(?string $handle): bool
+Identity::isDid(?string $did): bool
+Identity::extractDidMethod(string $did): ?string
+Identity::isPlcDid(string $did): bool
+Identity::isWebDid(string $did): bool
+```
+
+### DidDocument Object
+
+```php
+$document->id; // string - The DID
+$document->alsoKnownAs; // array - Alternative identifiers
+$document->verificationMethod; // array - Verification methods
+$document->service; // array - Service endpoints
+$document->raw; // array - Raw DID document
+
+// Helper methods
+$document->getHandle(); // ?string - Extract handle from alsoKnownAs
+$document->getPdsEndpoint(); // ?string - Extract PDS service endpoint
+$document->toArray(); // array - Convert to array
+```
+
+## Error Handling
+
+Beacon throws descriptive exceptions when resolution fails:
+
+```php
+use SocialDept\Beacon\Exceptions\DidResolutionException;
+use SocialDept\Beacon\Exceptions\HandleResolutionException;
+
+try {
+ $document = Beacon::resolveDid('did:invalid:format');
+} catch (DidResolutionException $e) {
+ // Handle DID resolution errors
+ logger()->error('DID resolution failed', [
+ 'message' => $e->getMessage(),
+ ]);
+}
+
+try {
+ $did = Beacon::resolveHandle('invalid-handle');
+} catch (HandleResolutionException $e) {
+ // Handle handle resolution errors
+}
+```
+
+## Use Cases
+
+### Building an AppView
+
+```php
+// Resolve user identity from DID
+$document = Beacon::resolveDid($event->did);
+$handle = $document->getHandle();
+
+// Make authenticated requests to their PDS
+$pds = Beacon::resolvePds($event->did);
+$client = new AtProtoClient($pds);
+```
+
+### Custom Feed Generators
+
+```php
+// Resolve multiple handles efficiently (caching kicks in)
+$dids = collect(['alice.bsky.social', 'bob.bsky.social'])
+ ->map(fn($handle) => Beacon::resolveHandle($handle))
+ ->all();
+```
+
+### Profile Resolution
+
+```php
+// Get complete identity information
+$document = Beacon::resolveHandleToDid($username);
+
+$profile = [
+ 'did' => $document->id,
+ 'handle' => $document->getHandle(),
+ 'pds' => $document->getPdsEndpoint(),
+];
+```
+
+### Input Validation
+
+```php
+use SocialDept\Beacon\Support\Identity;
+use SocialDept\Beacon\Facades\Beacon;
+
+// Validate user input before resolving
+$userInput = request()->input('identifier');
+
+if (Identity::isHandle($userInput)) {
+ $did = Beacon::resolveHandle($userInput);
+} elseif (Identity::isDid($userInput)) {
+ $document = Beacon::resolveDid($userInput);
+} else {
+ abort(422, 'Invalid handle or DID');
+}
+```
+
+## Requirements
+
+- PHP 8.2+
+- Laravel 11+
+- `ext-gmp` extension
+
+## Resources
+
+- [AT Protocol Documentation](https://atproto.com/)
+- [DID:PLC Specification](https://github.com/did-method-plc/did-method-plc)
+- [DID:Web Specification](https://w3c-ccg.github.io/did-method-web/)
+- [PLC Directory](https://plc.directory/)
-Please see [contributing.md](CONTRIBUTING.md) for details and a todolist.
+## Support & Contributing
-## Security
+Found a bug or have a feature request? [Open an issue](https://github.com/socialdept/atp-beacon/issues).
-If you discover any security related issues, please email author@email.com instead of using the issue tracker.
+Want to contribute? We'd love your help! Check out the [contribution guidelines](CONTRIBUTING.md).
## Credits
-- [Author Name][link-author]
-- [All Contributors][link-contributors]
+- [Miguel Batres](https://batres.co) - founder & lead maintainer
+- [All contributors](https://github.com/socialdept/atp-beacon/graphs/contributors)
## License
-MIT. Please see the [license file](LICENSE) for more information.
+Beacon is open-source software licensed under the [MIT license](LICENSE).
-[ico-version]: https://img.shields.io/packagist/v/social-dept/beacon.svg?style=flat-square
-[ico-downloads]: https://img.shields.io/packagist/dt/social-dept/beacon.svg?style=flat-square
-[ico-travis]: https://img.shields.io/travis/social-dept/beacon/master.svg?style=flat-square
-[ico-styleci]: https://styleci.io/repos/12345678/shield
+---
-[link-packagist]: https://packagist.org/packages/social-dept/beacon
-[link-downloads]: https://packagist.org/packages/social-dept/beacon
-[link-travis]: https://travis-ci.org/social-dept/beacon
-[link-styleci]: https://styleci.io/repos/12345678
-[link-author]: https://github.com/social-dept
-[link-contributors]: ../../contributors
+**Built for the Federation** • By Social Dept.
diff --git a/composer.json b/composer.json
index 45e4ebe..3430015 100644
--- a/composer.json
+++ b/composer.json
@@ -1,22 +1,20 @@
{
"name": "socialdept/atp-beacon",
- "description": ":package_description",
+ "description": "Resolve AT Protocol DIDs, handles, and lexicon schemas in Laravel",
+ "type": "library",
"license": "MIT",
- "authors": [
- {
- "name": "Author Name",
- "email": "author@email.com",
- "homepage": "http://author.com"
- }
- ],
- "homepage": "https://github.com/social-dept/beacon",
- "keywords": ["Laravel", "Beacon"],
"require": {
- "illuminate/support": "~9"
+ "php": "^8.2",
+ "ext-gmp": "*",
+ "illuminate/support": "^11.0|^12.0",
+ "illuminate/console": "^11.0|^12.0",
+ "illuminate/cache": "^11.0|^12.0",
+ "guzzlehttp/guzzle": "^7.5"
},
"require-dev": {
- "phpunit/phpunit": "~9.0",
- "orchestra/testbench": "~7"
+ "orchestra/testbench": "^9.0",
+ "phpunit/phpunit": "^11.0",
+ "friendsofphp/php-cs-fixer": "^3.89"
},
"autoload": {
"psr-4": {
@@ -25,7 +23,7 @@
},
"autoload-dev": {
"psr-4": {
- "SocialDept\\Beacon\\Tests\\": "tests"
+ "SocialDept\\Beacon\\Tests\\": "tests/"
}
},
"extra": {
diff --git a/config/beacon.php b/config/beacon.php
index 035fcd5..a695aa2 100644
--- a/config/beacon.php
+++ b/config/beacon.php
@@ -1,5 +1,71 @@
env('BEACON_PLC_DIRECTORY', 'https://plc.directory'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | PDS Endpoint
+ |--------------------------------------------------------------------------
+ |
+ | The Personal Data Server endpoint used for handle resolution. This is
+ | used when resolving handles to DIDs via the AT Protocol API.
+ |
+ */
+
+ 'pds_endpoint' => env('BEACON_PDS_ENDPOINT', 'https://bsky.social'),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Request Timeout
+ |--------------------------------------------------------------------------
+ |
+ | The timeout in seconds for HTTP requests to external services when
+ | resolving DIDs, handles, and lexicons.
+ |
+ */
+
+ 'timeout' => env('BEACON_TIMEOUT', 10),
+
+ /*
+ |--------------------------------------------------------------------------
+ | Cache Configuration
+ |--------------------------------------------------------------------------
+ |
+ | Configure caching behavior for resolved DIDs, handles, and lexicons.
+ | TTL values are in seconds.
+ |
+ */
+
+ 'cache' => [
+
+ // Enable or disable caching globally
+ 'enabled' => env('BEACON_CACHE_ENABLED', true),
+
+ // Cache TTL for DID documents (1 hour default)
+ 'did_ttl' => env('BEACON_CACHE_DID_TTL', 3600),
+
+ // Cache TTL for handle resolutions (1 hour default)
+ 'handle_ttl' => env('BEACON_CACHE_HANDLE_TTL', 3600),
+
+ // Cache TTL for PDS endpoints (1 hour default)
+ 'pds_ttl' => env('BEACON_CACHE_PDS_TTL', 3600),
+
+ // Cache TTL for lexicon schemas (24 hours default)
+ 'lexicon_ttl' => env('BEACON_CACHE_LEXICON_TTL', 86400),
+
+ ],
+
];
\ No newline at end of file
diff --git a/header.png b/header.png
new file mode 100644
index 0000000000000000000000000000000000000000..32a713ddd5525dd742f7445844b7d513a028c695
GIT binary patch
literal 371267
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 |