Resolve AT Protocol DIDs, handles, and schemas with intelligent caching for Laravel

Compare changes

Choose any two refs to compare.

-2
.github/workflows/code-style.yml
··· 1 1 name: Code Style 2 2 3 3 on: 4 - push: 5 - branches: [ main, dev ] 6 4 pull_request: 7 5 branches: [ main, dev ] 8 6
-2
.github/workflows/tests.yml
··· 1 1 name: Tests 2 2 3 3 on: 4 - push: 5 - branches: [ main, dev ] 6 4 pull_request: 7 5 branches: [ main, dev ] 8 6
+1
.gitignore
··· 1 1 .DS_Store 2 + .phpunit.cache 2 3 .phpunit.result.cache 3 4 .php-cs-fixer.cache 4 5 composer.lock
+7 -7
README.md
··· 32 32 ## Quick Example 33 33 34 34 ```php 35 - use SocialDept\Resolver\Facades\Resolver; 35 + use SocialDept\AtpResolver\Facades\Resolver; 36 36 37 37 // Resolve a DID to its document 38 38 $document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz'); ··· 70 70 Resolver supports both `did:plc` and `did:web` methods: 71 71 72 72 ```php 73 - use SocialDept\Resolver\Facades\Resolver; 73 + use SocialDept\AtpResolver\Facades\Resolver; 74 74 75 75 // PLC directory resolution 76 76 $document = Resolver::resolveDid('did:plc:ewvi7nxzyoun6zhxrhs64oiz'); ··· 165 165 Beacon includes static helper methods to validate DIDs and handles: 166 166 167 167 ```php 168 - use SocialDept\Resolver\Support\Identity; 168 + use SocialDept\AtpResolver\Support\Identity; 169 169 170 170 // Validate handles 171 171 Identity::isHandle('alice.bsky.social'); // true ··· 270 270 Beacon throws descriptive exceptions when resolution fails: 271 271 272 272 ```php 273 - use SocialDept\Resolver\Exceptions\DidResolutionException; 274 - use SocialDept\Resolver\Exceptions\HandleResolutionException; 273 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 274 + use SocialDept\AtpResolver\Exceptions\HandleResolutionException; 275 275 276 276 try { 277 277 $document = Resolver::resolveDid('did:invalid:format'); ··· 328 328 ### Input Validation 329 329 330 330 ```php 331 - use SocialDept\Resolver\Support\Identity; 332 - use SocialDept\Resolver\Facades\Resolver; 331 + use SocialDept\AtpResolver\Support\Identity; 332 + use SocialDept\AtpResolver\Facades\Resolver; 333 333 334 334 // Validate user input before resolving 335 335 $actor = request()->input('actor');
+4 -4
composer.json
··· 18 18 }, 19 19 "autoload": { 20 20 "psr-4": { 21 - "SocialDept\\Resolver\\": "src/" 21 + "SocialDept\\AtpResolver\\": "src/" 22 22 } 23 23 }, 24 24 "autoload-dev": { 25 25 "psr-4": { 26 - "SocialDept\\Resolver\\Tests\\": "tests/" 26 + "SocialDept\\AtpResolver\\Tests\\": "tests/" 27 27 } 28 28 }, 29 29 "extra": { 30 30 "laravel": { 31 31 "providers": [ 32 - "SocialDept\\Resolver\\ResolverServiceProvider" 32 + "SocialDept\\AtpResolver\\ResolverServiceProvider" 33 33 ], 34 34 "aliases": { 35 - "Resolver": "SocialDept\\Resolver\\Facades\\Resolver" 35 + "Resolver": "SocialDept\\AtpResolver\\Facades\\Resolver" 36 36 } 37 37 } 38 38 }
+2 -2
src/Cache/LaravelCacheStore.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Cache; 3 + namespace SocialDept\AtpResolver\Cache; 4 4 5 5 use Illuminate\Contracts\Cache\Repository; 6 - use SocialDept\Resolver\Contracts\CacheStore; 6 + use SocialDept\AtpResolver\Contracts\CacheStore; 7 7 8 8 class LaravelCacheStore implements CacheStore 9 9 {
+1 -1
src/Contracts/CacheStore.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Contracts; 3 + namespace SocialDept\AtpResolver\Contracts; 4 4 5 5 interface CacheStore 6 6 {
+3 -3
src/Contracts/DidResolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Contracts; 3 + namespace SocialDept\AtpResolver\Contracts; 4 4 5 - use SocialDept\Resolver\Data\DidDocument; 5 + use SocialDept\AtpResolver\Data\DidDocument; 6 6 7 7 interface DidResolver 8 8 { ··· 12 12 * @param string $did The DID to resolve (e.g., "did:plc:abc123" or "did:web:example.com") 13 13 * @return DidDocument 14 14 * 15 - * @throws \SocialDept\Resolver\Exceptions\DidResolutionException 15 + * @throws \SocialDept\AtpResolver\Exceptions\DidResolutionException 16 16 */ 17 17 public function resolve(string $did): DidDocument; 18 18
+2 -2
src/Contracts/HandleResolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Contracts; 3 + namespace SocialDept\AtpResolver\Contracts; 4 4 5 5 interface HandleResolver 6 6 { ··· 10 10 * @param string $handle The handle to resolve (e.g., "user.bsky.social") 11 11 * @return string The resolved DID 12 12 * 13 - * @throws \SocialDept\Resolver\Exceptions\HandleResolutionException 13 + * @throws \SocialDept\AtpResolver\Exceptions\HandleResolutionException 14 14 */ 15 15 public function resolve(string $handle): string; 16 16 }
+1 -1
src/Data/DidDocument.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Data; 3 + namespace SocialDept\AtpResolver\Data; 4 4 5 5 class DidDocument 6 6 {
+1 -1
src/Exceptions/DidResolutionException.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Exceptions; 3 + namespace SocialDept\AtpResolver\Exceptions; 4 4 5 5 class DidResolutionException extends ResolverException 6 6 {
+1 -1
src/Exceptions/HandleResolutionException.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Exceptions; 3 + namespace SocialDept\AtpResolver\Exceptions; 4 4 5 5 class HandleResolutionException extends ResolverException 6 6 {
+1 -1
src/Exceptions/ResolverException.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Exceptions; 3 + namespace SocialDept\AtpResolver\Exceptions; 4 4 5 5 use Exception; 6 6
+1 -1
src/Facades/Resolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Facades; 3 + namespace SocialDept\AtpResolver\Facades; 4 4 5 5 use Illuminate\Support\Facades\Facade; 6 6
+9 -9
src/Resolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver; 3 + namespace SocialDept\AtpResolver; 4 4 5 - use SocialDept\Resolver\Contracts\CacheStore; 6 - use SocialDept\Resolver\Contracts\DidResolver; 7 - use SocialDept\Resolver\Contracts\HandleResolver; 8 - use SocialDept\Resolver\Data\DidDocument; 9 - use SocialDept\Resolver\Exceptions\DidResolutionException; 10 - use SocialDept\Resolver\Exceptions\HandleResolutionException; 11 - use SocialDept\Resolver\Support\Concerns\HasConfig; 12 - use SocialDept\Resolver\Support\Identity; 5 + use SocialDept\AtpResolver\Contracts\CacheStore; 6 + use SocialDept\AtpResolver\Contracts\DidResolver; 7 + use SocialDept\AtpResolver\Contracts\HandleResolver; 8 + use SocialDept\AtpResolver\Data\DidDocument; 9 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 10 + use SocialDept\AtpResolver\Exceptions\HandleResolutionException; 11 + use SocialDept\AtpResolver\Support\Concerns\HasConfig; 12 + use SocialDept\AtpResolver\Support\Identity; 13 13 14 14 class Resolver 15 15 {
+7 -7
src/ResolverServiceProvider.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver; 3 + namespace SocialDept\AtpResolver; 4 4 5 5 use Illuminate\Support\ServiceProvider; 6 - use SocialDept\Resolver\Cache\LaravelCacheStore; 7 - use SocialDept\Resolver\Contracts\CacheStore; 8 - use SocialDept\Resolver\Contracts\DidResolver; 9 - use SocialDept\Resolver\Contracts\HandleResolver; 10 - use SocialDept\Resolver\Resolvers\AtProtoHandleResolver; 11 - use SocialDept\Resolver\Resolvers\DidResolverManager; 6 + use SocialDept\AtpResolver\Cache\LaravelCacheStore; 7 + use SocialDept\AtpResolver\Contracts\CacheStore; 8 + use SocialDept\AtpResolver\Contracts\DidResolver; 9 + use SocialDept\AtpResolver\Contracts\HandleResolver; 10 + use SocialDept\AtpResolver\Resolvers\AtProtoHandleResolver; 11 + use SocialDept\AtpResolver\Resolvers\DidResolverManager; 12 12 13 13 class ResolverServiceProvider extends ServiceProvider 14 14 {
+4 -4
src/Resolvers/AtProtoHandleResolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Resolvers; 3 + namespace SocialDept\AtpResolver\Resolvers; 4 4 5 5 use GuzzleHttp\Client; 6 6 use GuzzleHttp\Exception\GuzzleException; 7 - use SocialDept\Resolver\Contracts\HandleResolver; 8 - use SocialDept\Resolver\Exceptions\HandleResolutionException; 9 - use SocialDept\Resolver\Support\Concerns\HasConfig; 7 + use SocialDept\AtpResolver\Contracts\HandleResolver; 8 + use SocialDept\AtpResolver\Exceptions\HandleResolutionException; 9 + use SocialDept\AtpResolver\Support\Concerns\HasConfig; 10 10 11 11 class AtProtoHandleResolver implements HandleResolver 12 12 {
+5 -5
src/Resolvers/DidResolverManager.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Resolvers; 3 + namespace SocialDept\AtpResolver\Resolvers; 4 4 5 - use SocialDept\Resolver\Contracts\DidResolver; 6 - use SocialDept\Resolver\Data\DidDocument; 7 - use SocialDept\Resolver\Exceptions\DidResolutionException; 8 - use SocialDept\Resolver\Support\Concerns\ParsesDid; 5 + use SocialDept\AtpResolver\Contracts\DidResolver; 6 + use SocialDept\AtpResolver\Data\DidDocument; 7 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 8 + use SocialDept\AtpResolver\Support\Concerns\ParsesDid; 9 9 10 10 class DidResolverManager implements DidResolver 11 11 {
+6 -6
src/Resolvers/PlcDidResolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Resolvers; 3 + namespace SocialDept\AtpResolver\Resolvers; 4 4 5 5 use GuzzleHttp\Client; 6 6 use GuzzleHttp\Exception\GuzzleException; 7 - use SocialDept\Resolver\Contracts\DidResolver; 8 - use SocialDept\Resolver\Data\DidDocument; 9 - use SocialDept\Resolver\Exceptions\DidResolutionException; 10 - use SocialDept\Resolver\Support\Concerns\HasConfig; 11 - use SocialDept\Resolver\Support\Concerns\ParsesDid; 7 + use SocialDept\AtpResolver\Contracts\DidResolver; 8 + use SocialDept\AtpResolver\Data\DidDocument; 9 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 10 + use SocialDept\AtpResolver\Support\Concerns\HasConfig; 11 + use SocialDept\AtpResolver\Support\Concerns\ParsesDid; 12 12 13 13 class PlcDidResolver implements DidResolver 14 14 {
+6 -6
src/Resolvers/WebDidResolver.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Resolvers; 3 + namespace SocialDept\AtpResolver\Resolvers; 4 4 5 5 use GuzzleHttp\Client; 6 6 use GuzzleHttp\Exception\GuzzleException; 7 - use SocialDept\Resolver\Contracts\DidResolver; 8 - use SocialDept\Resolver\Data\DidDocument; 9 - use SocialDept\Resolver\Exceptions\DidResolutionException; 10 - use SocialDept\Resolver\Support\Concerns\HasConfig; 11 - use SocialDept\Resolver\Support\Concerns\ParsesDid; 7 + use SocialDept\AtpResolver\Contracts\DidResolver; 8 + use SocialDept\AtpResolver\Data\DidDocument; 9 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 10 + use SocialDept\AtpResolver\Support\Concerns\HasConfig; 11 + use SocialDept\AtpResolver\Support\Concerns\ParsesDid; 12 12 13 13 class WebDidResolver implements DidResolver 14 14 {
+1 -1
src/Support/Concerns/HasConfig.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Support\Concerns; 3 + namespace SocialDept\AtpResolver\Support\Concerns; 4 4 5 5 trait HasConfig 6 6 {
+2 -2
src/Support/Concerns/ParsesDid.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Support\Concerns; 3 + namespace SocialDept\AtpResolver\Support\Concerns; 4 4 5 - use SocialDept\Resolver\Exceptions\DidResolutionException; 5 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 6 6 7 7 trait ParsesDid 8 8 {
+1 -1
src/Support/Identity.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Support; 3 + namespace SocialDept\AtpResolver\Support; 4 4 5 5 class Identity 6 6 {
+2 -2
tests/Unit/DidDocumentTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Data\DidDocument; 6 + use SocialDept\AtpResolver\Data\DidDocument; 7 7 8 8 class DidDocumentTest extends TestCase 9 9 {
+5 -5
tests/Unit/DidResolverManagerTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Contracts\DidResolver; 7 - use SocialDept\Resolver\Data\DidDocument; 8 - use SocialDept\Resolver\Exceptions\DidResolutionException; 9 - use SocialDept\Resolver\Resolvers\DidResolverManager; 6 + use SocialDept\AtpResolver\Contracts\DidResolver; 7 + use SocialDept\AtpResolver\Data\DidDocument; 8 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 9 + use SocialDept\AtpResolver\Resolvers\DidResolverManager; 10 10 11 11 class DidResolverManagerTest extends TestCase 12 12 {
+2 -2
tests/Unit/IdentityTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Support\Identity; 6 + use SocialDept\AtpResolver\Support\Identity; 7 7 8 8 class IdentityTest extends TestCase 9 9 {
+3 -3
tests/Unit/PlcDidResolverTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Exceptions\DidResolutionException; 7 - use SocialDept\Resolver\Resolvers\PlcDidResolver; 6 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 7 + use SocialDept\AtpResolver\Resolvers\PlcDidResolver; 8 8 9 9 class PlcDidResolverTest extends TestCase 10 10 {
+6 -6
tests/Unit/ResolverIdentityTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Resolver; 7 - use SocialDept\Resolver\Contracts\CacheStore; 8 - use SocialDept\Resolver\Contracts\DidResolver; 9 - use SocialDept\Resolver\Contracts\HandleResolver; 10 - use SocialDept\Resolver\Data\DidDocument; 6 + use SocialDept\AtpResolver\Contracts\CacheStore; 7 + use SocialDept\AtpResolver\Contracts\DidResolver; 8 + use SocialDept\AtpResolver\Contracts\HandleResolver; 9 + use SocialDept\AtpResolver\Data\DidDocument; 10 + use SocialDept\AtpResolver\Resolver; 11 11 12 12 class ResolverIdentityTest extends TestCase 13 13 {
+6 -6
tests/Unit/ResolverTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Resolver; 7 - use SocialDept\Resolver\Contracts\CacheStore; 8 - use SocialDept\Resolver\Contracts\DidResolver; 9 - use SocialDept\Resolver\Contracts\HandleResolver; 10 - use SocialDept\Resolver\Data\DidDocument; 6 + use SocialDept\AtpResolver\Contracts\CacheStore; 7 + use SocialDept\AtpResolver\Contracts\DidResolver; 8 + use SocialDept\AtpResolver\Contracts\HandleResolver; 9 + use SocialDept\AtpResolver\Data\DidDocument; 10 + use SocialDept\AtpResolver\Resolver; 11 11 12 12 class ResolverTest extends TestCase 13 13 {
+3 -3
tests/Unit/WebDidResolverTest.php
··· 1 1 <?php 2 2 3 - namespace SocialDept\Resolver\Tests\Unit; 3 + namespace SocialDept\AtpResolver\Tests\Unit; 4 4 5 5 use PHPUnit\Framework\TestCase; 6 - use SocialDept\Resolver\Exceptions\DidResolutionException; 7 - use SocialDept\Resolver\Resolvers\WebDidResolver; 6 + use SocialDept\AtpResolver\Exceptions\DidResolutionException; 7 + use SocialDept\AtpResolver\Resolvers\WebDidResolver; 8 8 9 9 class WebDidResolverTest extends TestCase 10 10 {