@atproto/identity 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @atproto/identity
2
2
 
3
+ ## 0.5.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4967](https://github.com/bluesky-social/atproto/pull/4967) [`9fc720c`](https://github.com/bluesky-social/atproto/commit/9fc720ce75f3ee88a5e48a9be919b07c7647f6f5) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Use TypeScript 7 to build package
8
+
9
+ - Updated dependencies [[`9fc720c`](https://github.com/bluesky-social/atproto/commit/9fc720ce75f3ee88a5e48a9be919b07c7647f6f5)]:
10
+ - @atproto/common-web@0.5.1
11
+ - @atproto/crypto@0.5.1
12
+
3
13
  ## 0.5.0
4
14
 
5
15
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"atproto-data.d.ts","sourceRoot":"","sources":["../../src/did/atproto-data.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EAEf,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EACL,MAAM,EACN,kBAAkB,IAAI,UAAU,EAChC,SAAS,EACT,gBAAgB,IAAI,QAAQ,EAC5B,cAAc,IAAI,MAAM,GACzB,CAAA;AAED,eAAO,MAAM,MAAM,GAAI,KAAK,WAAW,KAAG,MAAM,GAAG,SAIlD,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,KAAK;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;CAC3B,KAAG,MAAM,GAAG,SAYZ,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,KAAK,WAAW,KACf,OAAO,CAAC,WAAW,CAQrB,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,KAAK,WAAW,KAAG,WAepD,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,WAAW,KAAG,MAMnD,CAAA"}
1
+ {"version":3,"file":"atproto-data.d.ts","sourceRoot":"","sources":["../../src/did/atproto-data.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,kBAAkB,EAClB,SAAS,EACT,gBAAgB,EAChB,cAAc,EAEf,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EACL,MAAM,EACN,kBAAkB,IAAI,UAAU,EAChC,SAAS,EACT,gBAAgB,IAAI,QAAQ,EAC5B,cAAc,IAAI,MAAM,GACzB,CAAA;AAED,eAAO,MAAM,MAAM,QAAS,WAAW,KAAG,MAAM,GAAG,SAIlD,CAAA;AAED,eAAO,MAAM,sBAAsB,QAAS;IAC1C,IAAI,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;CAC3B,KAAG,MAAM,GAAG,SAYZ,CAAA;AAED,eAAO,MAAM,sBAAsB,QAC5B,WAAW,KACf,OAAO,CAAC,WAAW,CAQrB,CAAA;AAED,eAAO,MAAM,iBAAiB,QAAS,WAAW,KAAG,WAepD,CAAA;AAED,eAAO,MAAM,gBAAgB,QAAS,WAAW,KAAG,MAMnD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-resolver.d.ts","sourceRoot":"","sources":["../../src/did/base-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EAEZ,MAAM,aAAa,CAAA;AAGpB,8BAAsB,YAAY;IACb,KAAK,CAAC,EAAE,QAAQ;gBAAhB,KAAK,CAAC,EAAE,QAAQ,YAAA;IAEnC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAE7D,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW;IAUhD,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAMxD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlE,OAAO,CACX,GAAG,EAAE,MAAM,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAqBxB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAQtE,kBAAkB,CACtB,GAAG,EAAE,MAAM,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,WAAW,CAAC;IAKjB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IASrE,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC;CAIpB"}
1
+ {"version":3,"file":"base-resolver.d.ts","sourceRoot":"","sources":["../../src/did/base-resolver.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,WAAW,EAEZ,MAAM,aAAa,CAAA;AAGpB,8BAAsB,YAAY;IACb,KAAK,CAAC,EAAE,QAAQ;IAAnC,YAAmB,KAAK,CAAC,EAAE,QAAQ,YAAA,EAAI;IAEvC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAE7D,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,WAAW,CAQrD;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAI7D;IAEK,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMvE;IAEK,OAAO,CACX,GAAG,EAAE,MAAM,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAmB7B;IAEK,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CAM3E;IAEK,kBAAkB,CACtB,GAAG,EAAE,MAAM,EACX,YAAY,UAAQ,GACnB,OAAO,CAAC,WAAW,CAAC,CAGtB;IAEK,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAO1E;IAEK,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,UAAU,EACf,YAAY,UAAQ,GACnB,OAAO,CAAC,OAAO,CAAC,CAGlB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"base-resolver.js","sourceRoot":"","sources":["../../src/did/base-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAA;AAChF,OAAO,EAKL,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAEhD,MAAM,OAAgB,YAAY;IAChC,YAAmB,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;IAAG,CAAC;IAIvC,cAAc,CAAC,GAAW,EAAE,GAAY;QACtC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,+BAA+B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACrD,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC;YACnB,MAAM,IAAI,+BAA+B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACrD,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW,EAAE,UAAwB;QACtD,MAAM,IAAI,CAAC,KAAK,EAAE,YAAY,CAC5B,GAAG,EACH,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAC9B,UAAU,CACX,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CACX,GAAW,EACX,YAAY,GAAG,KAAK;QAEpB,IAAI,SAAS,GAAuB,IAAI,CAAA;QACxC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC;oBACrB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;gBACzC,CAAC;gBACD,OAAO,SAAS,CAAC,GAAG,CAAA;YACtB,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAC1C,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,CAAA;YACjC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,IAAI,SAAS,CAAC,CAAA;QAC5D,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,YAAY,GAAG,KAAK;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QACpD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,GAAW,EACX,YAAY,GAAG,KAAK;QAEpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAC/D,OAAO,WAAW,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;IACnD,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAW,EAAE,YAAY,GAAG,KAAK;QACvD,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,OAAO,GAAG,CAAA;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;YAC/D,OAAO,WAAW,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,GAAW,EACX,IAAgB,EAChB,GAAe,EACf,YAAY,GAAG,KAAK;QAEpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;QAClE,OAAO,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC;CACF","sourcesContent":["import { check } from '@atproto/common-web'\nimport * as crypto from '@atproto/crypto'\nimport { DidNotFoundError, PoorlyFormattedDidDocumentError } from '../errors.js'\nimport {\n AtprotoData,\n CacheResult,\n DidCache,\n DidDocument,\n didDocument,\n} from '../types.js'\nimport * as atprotoData from './atproto-data.js'\n\nexport abstract class BaseResolver {\n constructor(public cache?: DidCache) {}\n\n abstract resolveNoCheck(did: string): Promise<unknown | null>\n\n validateDidDoc(did: string, val: unknown): DidDocument {\n if (!check.is(val, didDocument)) {\n throw new PoorlyFormattedDidDocumentError(did, val)\n }\n if (val.id !== did) {\n throw new PoorlyFormattedDidDocumentError(did, val)\n }\n return val\n }\n\n async resolveNoCache(did: string): Promise<DidDocument | null> {\n const got = await this.resolveNoCheck(did)\n if (got === null) return null\n return this.validateDidDoc(did, got)\n }\n\n async refreshCache(did: string, prevResult?: CacheResult): Promise<void> {\n await this.cache?.refreshCache(\n did,\n () => this.resolveNoCache(did),\n prevResult,\n )\n }\n\n async resolve(\n did: string,\n forceRefresh = false,\n ): Promise<DidDocument | null> {\n let fromCache: CacheResult | null = null\n if (this.cache && !forceRefresh) {\n fromCache = await this.cache.checkCache(did)\n if (fromCache && !fromCache.expired) {\n if (fromCache?.stale) {\n await this.refreshCache(did, fromCache)\n }\n return fromCache.doc\n }\n }\n\n const got = await this.resolveNoCache(did)\n if (got === null) {\n await this.cache?.clearEntry(did)\n return null\n }\n await this.cache?.cacheDid(did, got, fromCache ?? undefined)\n return got\n }\n\n async ensureResolve(did: string, forceRefresh = false): Promise<DidDocument> {\n const result = await this.resolve(did, forceRefresh)\n if (result === null) {\n throw new DidNotFoundError(did)\n }\n return result\n }\n\n async resolveAtprotoData(\n did: string,\n forceRefresh = false,\n ): Promise<AtprotoData> {\n const didDocument = await this.ensureResolve(did, forceRefresh)\n return atprotoData.ensureAtpDocument(didDocument)\n }\n\n async resolveAtprotoKey(did: string, forceRefresh = false): Promise<string> {\n if (did.startsWith('did:key:')) {\n return did\n } else {\n const didDocument = await this.ensureResolve(did, forceRefresh)\n return atprotoData.ensureAtprotoKey(didDocument)\n }\n }\n\n async verifySignature(\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n forceRefresh = false,\n ): Promise<boolean> {\n const signingKey = await this.resolveAtprotoKey(did, forceRefresh)\n return crypto.verifySignature(signingKey, data, sig)\n }\n}\n"]}
1
+ {"version":3,"file":"base-resolver.js","sourceRoot":"","sources":["../../src/did/base-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { check } from '@atproto/common-web'\nimport * as crypto from '@atproto/crypto'\nimport { DidNotFoundError, PoorlyFormattedDidDocumentError } from '../errors.js'\nimport {\n AtprotoData,\n CacheResult,\n DidCache,\n DidDocument,\n didDocument,\n} from '../types.js'\nimport * as atprotoData from './atproto-data.js'\n\nexport abstract class BaseResolver {\n constructor(public cache?: DidCache) {}\n\n abstract resolveNoCheck(did: string): Promise<unknown | null>\n\n validateDidDoc(did: string, val: unknown): DidDocument {\n if (!check.is(val, didDocument)) {\n throw new PoorlyFormattedDidDocumentError(did, val)\n }\n if (val.id !== did) {\n throw new PoorlyFormattedDidDocumentError(did, val)\n }\n return val\n }\n\n async resolveNoCache(did: string): Promise<DidDocument | null> {\n const got = await this.resolveNoCheck(did)\n if (got === null) return null\n return this.validateDidDoc(did, got)\n }\n\n async refreshCache(did: string, prevResult?: CacheResult): Promise<void> {\n await this.cache?.refreshCache(\n did,\n () => this.resolveNoCache(did),\n prevResult,\n )\n }\n\n async resolve(\n did: string,\n forceRefresh = false,\n ): Promise<DidDocument | null> {\n let fromCache: CacheResult | null = null\n if (this.cache && !forceRefresh) {\n fromCache = await this.cache.checkCache(did)\n if (fromCache && !fromCache.expired) {\n if (fromCache?.stale) {\n await this.refreshCache(did, fromCache)\n }\n return fromCache.doc\n }\n }\n\n const got = await this.resolveNoCache(did)\n if (got === null) {\n await this.cache?.clearEntry(did)\n return null\n }\n await this.cache?.cacheDid(did, got, fromCache ?? undefined)\n return got\n }\n\n async ensureResolve(did: string, forceRefresh = false): Promise<DidDocument> {\n const result = await this.resolve(did, forceRefresh)\n if (result === null) {\n throw new DidNotFoundError(did)\n }\n return result\n }\n\n async resolveAtprotoData(\n did: string,\n forceRefresh = false,\n ): Promise<AtprotoData> {\n const didDocument = await this.ensureResolve(did, forceRefresh)\n return atprotoData.ensureAtpDocument(didDocument)\n }\n\n async resolveAtprotoKey(did: string, forceRefresh = false): Promise<string> {\n if (did.startsWith('did:key:')) {\n return did\n } else {\n const didDocument = await this.ensureResolve(did, forceRefresh)\n return atprotoData.ensureAtprotoKey(didDocument)\n }\n }\n\n async verifySignature(\n did: string,\n data: Uint8Array,\n sig: Uint8Array,\n forceRefresh = false,\n ): Promise<boolean> {\n const signingKey = await this.resolveAtprotoKey(did, forceRefresh)\n return crypto.verifySignature(signingKey, data, sig)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"did-resolver.d.ts","sourceRoot":"","sources":["../../src/did/did-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;gBAEtB,IAAI,EAAE,eAAe;IAU3B,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAepD"}
1
+ {"version":3,"file":"did-resolver.d.ts","sourceRoot":"","sources":["../../src/did/did-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAIjD,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAElC,YAAY,IAAI,EAAE,eAAe,EAQhC;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAclD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/did/memory-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEhE,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,WAAW,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qBAAa,WAAY,YAAW,QAAQ;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;gBACT,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAKvC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAY;IAEzC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,YAAY,CAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC;IAOV,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAcpD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
1
+ {"version":3,"file":"memory-cache.d.ts","sourceRoot":"","sources":["../../src/did/memory-cache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAEhE,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,WAAW,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,qBAAa,WAAY,YAAW,QAAQ;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACrB,YAAY,QAAQ,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAG7C;IAEM,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAY;IAEzC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;IAEK,YAAY,CAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC,CAKf;IAEK,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAYzD;IAEK,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"plc-resolver.d.ts","sourceRoot":"","sources":["../../src/did/plc-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,qBAAa,cAAe,SAAQ,YAAY;IAErC,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,KAAK,CAAC,EAAE,QAAQ;gBAFhB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,YAAA;IAKnB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAmBpD"}
1
+ {"version":3,"file":"plc-resolver.d.ts","sourceRoot":"","sources":["../../src/did/plc-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,qBAAa,cAAe,SAAQ,YAAY;IAErC,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,KAAK,CAAC,EAAE,QAAQ;IAHzB,YACS,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,YAAA,EAGxB;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBlD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"plc-resolver.js","sourceRoot":"","sources":["../../src/did/plc-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEjC,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YACS,MAAc,EACd,OAAe,EACf,KAAgB;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;QAJL,WAAM,GAAN,MAAM,CAAQ;QACd,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAW;IAGzB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE;gBAC/D,MAAM;aACP,CAAC,CAAA;YAEF,yDAAyD;YACzD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAA;YAEnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACxE,CAAC;YAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF","sourcesContent":["import { DidCache } from '../types.js'\nimport { BaseResolver } from './base-resolver.js'\nimport { timed } from './util.js'\n\nexport class DidPlcResolver extends BaseResolver {\n constructor(\n public plcUrl: string,\n public timeout: number,\n public cache?: DidCache,\n ) {\n super(cache)\n }\n\n async resolveNoCheck(did: string): Promise<unknown> {\n return timed(this.timeout, async (signal) => {\n const url = new URL(`/${encodeURIComponent(did)}`, this.plcUrl)\n const res = await fetch(url, {\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n signal,\n })\n\n // Positively not found, versus due to e.g. network error\n if (res.status === 404) return null\n\n if (!res.ok) {\n throw Object.assign(new Error(res.statusText), { status: res.status })\n }\n\n return res.json()\n })\n }\n}\n"]}
1
+ {"version":3,"file":"plc-resolver.js","sourceRoot":"","sources":["../../src/did/plc-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEjC,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YACS,MAAc,EACd,OAAe,EACf,KAAgB;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;sBAJL,MAAM;uBACN,OAAO;qBACP,KAAK;IAGd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE;gBAC/D,MAAM;aACP,CAAC,CAAA;YAEF,yDAAyD;YACzD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;gBAAE,OAAO,IAAI,CAAA;YAEnC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACxE,CAAC;YAED,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF","sourcesContent":["import { DidCache } from '../types.js'\nimport { BaseResolver } from './base-resolver.js'\nimport { timed } from './util.js'\n\nexport class DidPlcResolver extends BaseResolver {\n constructor(\n public plcUrl: string,\n public timeout: number,\n public cache?: DidCache,\n ) {\n super(cache)\n }\n\n async resolveNoCheck(did: string): Promise<unknown> {\n return timed(this.timeout, async (signal) => {\n const url = new URL(`/${encodeURIComponent(did)}`, this.plcUrl)\n const res = await fetch(url, {\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n signal,\n })\n\n // Positively not found, versus due to e.g. network error\n if (res.status === 404) return null\n\n if (!res.ok) {\n throw Object.assign(new Error(res.statusText), { status: res.status })\n }\n\n return res.json()\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"web-resolver.d.ts","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,eAAO,MAAM,QAAQ,0BAA0B,CAAA;AAE/C,qBAAa,cAAe,SAAQ,YAAY;IAErC,OAAO,EAAE,MAAM;IACf,KAAK,CAAC,EAAE,QAAQ;gBADhB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,YAAA;IAKnB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAgCpD"}
1
+ {"version":3,"file":"web-resolver.d.ts","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,eAAO,MAAM,QAAQ,0BAA0B,CAAA;AAE/C,qBAAa,cAAe,SAAQ,YAAY;IAErC,OAAO,EAAE,MAAM;IACf,KAAK,CAAC,EAAE,QAAQ;IAFzB,YACS,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,YAAA,EAGxB;IAEK,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BlD;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-resolver.js","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEjC,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAA;AAE/C,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YACS,OAAe,EACf,KAAgB;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;QAHL,YAAO,GAAP,OAAO,CAAQ;QACf,UAAK,GAAL,KAAK,CAAW;IAGzB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACzD,IAAI,IAAY,CAAA;QAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,sCAAsC;YACtC,MAAM,IAAI,0BAA0B,CAAC,GAAG,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAA;QACvB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM;gBACN,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE;aAChE,CAAC,CAAA;YAEF,yDAAyD;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAA;YAExB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF","sourcesContent":["import {\n PoorlyFormattedDidError,\n UnsupportedDidWebPathError,\n} from '../errors.js'\nimport { DidCache } from '../types.js'\nimport { BaseResolver } from './base-resolver.js'\nimport { timed } from './util.js'\n\nexport const DOC_PATH = '/.well-known/did.json'\n\nexport class DidWebResolver extends BaseResolver {\n constructor(\n public timeout: number,\n public cache?: DidCache,\n ) {\n super(cache)\n }\n\n async resolveNoCheck(did: string): Promise<unknown> {\n const parsedId = did.split(':').slice(2).join(':')\n const parts = parsedId.split(':').map(decodeURIComponent)\n let path: string\n if (parts.length < 1) {\n throw new PoorlyFormattedDidError(did)\n } else if (parts.length === 1) {\n path = parts[0] + DOC_PATH\n } else {\n // how we *would* resolve a did:web with path, if atproto supported it\n //path = parts.join('/') + '/did.json'\n throw new UnsupportedDidWebPathError(did)\n }\n\n const url = new URL(`https://${path}`)\n if (url.hostname === 'localhost') {\n url.protocol = 'http'\n }\n\n return timed(this.timeout, async (signal) => {\n const res = await fetch(url, {\n signal,\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n })\n\n // Positively not found, versus due to e.g. network error\n if (!res.ok) return null\n\n return res.json()\n })\n }\n}\n"]}
1
+ {"version":3,"file":"web-resolver.js","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAEjC,MAAM,CAAC,MAAM,QAAQ,GAAG,uBAAuB,CAAA;AAE/C,MAAM,OAAO,cAAe,SAAQ,YAAY;IAC9C,YACS,OAAe,EACf,KAAgB;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;uBAHL,OAAO;qBACP,KAAK;IAGd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,GAAW;QAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAClD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACzD,IAAI,IAAY,CAAA;QAChB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,sCAAsC;YACtC,MAAM,IAAI,0BAA0B,CAAC,GAAG,CAAC,CAAA;QAC3C,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,CAAA;QACtC,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAA;QACvB,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM;gBACN,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,EAAE,MAAM,EAAE,0CAA0C,EAAE;aAChE,CAAC,CAAA;YAEF,yDAAyD;YACzD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAA;YAExB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF","sourcesContent":["import {\n PoorlyFormattedDidError,\n UnsupportedDidWebPathError,\n} from '../errors.js'\nimport { DidCache } from '../types.js'\nimport { BaseResolver } from './base-resolver.js'\nimport { timed } from './util.js'\n\nexport const DOC_PATH = '/.well-known/did.json'\n\nexport class DidWebResolver extends BaseResolver {\n constructor(\n public timeout: number,\n public cache?: DidCache,\n ) {\n super(cache)\n }\n\n async resolveNoCheck(did: string): Promise<unknown> {\n const parsedId = did.split(':').slice(2).join(':')\n const parts = parsedId.split(':').map(decodeURIComponent)\n let path: string\n if (parts.length < 1) {\n throw new PoorlyFormattedDidError(did)\n } else if (parts.length === 1) {\n path = parts[0] + DOC_PATH\n } else {\n // how we *would* resolve a did:web with path, if atproto supported it\n //path = parts.join('/') + '/did.json'\n throw new UnsupportedDidWebPathError(did)\n }\n\n const url = new URL(`https://${path}`)\n if (url.hostname === 'localhost') {\n url.protocol = 'http'\n }\n\n return timed(this.timeout, async (signal) => {\n const res = await fetch(url, {\n signal,\n redirect: 'error',\n headers: { accept: 'application/did+ld+json,application/json' },\n })\n\n // Positively not found, versus due to e.g. network error\n if (!res.ok) return null\n\n return res.json()\n })\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IACtB,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAG/B;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAC7B,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAG/B;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAC/B,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAG/B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;IAE/C,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;gBADZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO;CAItB;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IAChC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CAG/B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAiB,SAAQ,KAAK;IACtB,GAAG,EAAE,MAAM;IAA9B,YAAmB,GAAG,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,uBAAwB,SAAQ,KAAK;IAC7B,GAAG,EAAE,MAAM;IAA9B,YAAmB,GAAG,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,yBAA0B,SAAQ,KAAK;IAC/B,GAAG,EAAE,MAAM;IAA9B,YAAmB,GAAG,EAAE,MAAM,EAE7B;CACF;AAED,qBAAa,+BAAgC,SAAQ,KAAK;IAE/C,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,OAAO;IAFrB,YACS,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,OAAO,EAGpB;CACF;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IAChC,GAAG,EAAE,MAAM;IAA9B,YAAmB,GAAG,EAAE,MAAM,EAE7B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAmB,GAAW;QAC5B,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;QADrB,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAmB,GAAW;QAC5B,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;QADpB,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAmB,GAAW;QAC5B,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;QADtB,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACF;AAED,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IACxD,YACS,GAAW,EACX,GAAY;QAEnB,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAA;QAHvC,QAAG,GAAH,GAAG,CAAQ;QACX,QAAG,GAAH,GAAG,CAAS;IAGrB,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAmB,GAAW;QAC5B,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QADzB,QAAG,GAAH,GAAG,CAAQ;IAE9B,CAAC;CACF","sourcesContent":["export class DidNotFoundError extends Error {\n constructor(public did: string) {\n super(`Could not resolve DID: ${did}`)\n }\n}\n\nexport class PoorlyFormattedDidError extends Error {\n constructor(public did: string) {\n super(`Poorly formatted DID: ${did}`)\n }\n}\n\nexport class UnsupportedDidMethodError extends Error {\n constructor(public did: string) {\n super(`Unsupported DID method: ${did}`)\n }\n}\n\nexport class PoorlyFormattedDidDocumentError extends Error {\n constructor(\n public did: string,\n public doc: unknown,\n ) {\n super(`Poorly formatted DID Document: ${doc}`)\n }\n}\n\nexport class UnsupportedDidWebPathError extends Error {\n constructor(public did: string) {\n super(`Unsupported did:web paths: ${did}`)\n }\n}\n"]}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,YAAmB,GAAW;QAC5B,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;mBADrB,GAAG;IAEtB,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAmB,GAAW;QAC5B,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;mBADpB,GAAG;IAEtB,CAAC;CACF;AAED,MAAM,OAAO,yBAA0B,SAAQ,KAAK;IAClD,YAAmB,GAAW;QAC5B,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;mBADtB,GAAG;IAEtB,CAAC;CACF;AAED,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IACxD,YACS,GAAW,EACX,GAAY;QAEnB,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAA;mBAHvC,GAAG;mBACH,GAAG;IAGZ,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IACnD,YAAmB,GAAW;QAC5B,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;mBADzB,GAAG;IAEtB,CAAC;CACF","sourcesContent":["export class DidNotFoundError extends Error {\n constructor(public did: string) {\n super(`Could not resolve DID: ${did}`)\n }\n}\n\nexport class PoorlyFormattedDidError extends Error {\n constructor(public did: string) {\n super(`Poorly formatted DID: ${did}`)\n }\n}\n\nexport class UnsupportedDidMethodError extends Error {\n constructor(public did: string) {\n super(`Unsupported DID method: ${did}`)\n }\n}\n\nexport class PoorlyFormattedDidDocumentError extends Error {\n constructor(\n public did: string,\n public doc: unknown,\n ) {\n super(`Poorly formatted DID Document: ${doc}`)\n }\n}\n\nexport class UnsupportedDidWebPathError extends Error {\n constructor(public did: string) {\n super(`Unsupported did:web paths: ${did}`)\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAKhD,qBAAa,cAAc;IAClB,OAAO,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,IAAI,GAAE,kBAAuB;IAKnC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAmBpD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAUvD,WAAW,CACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAcxB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAcnE,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS;YAShD,sBAAsB;CAgBrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAKhD,qBAAa,cAAc;IAClB,OAAO,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,mBAAmB,CAAsB;IAEjD,YAAY,IAAI,GAAE,kBAAuB,EAGxC;IAEK,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiBzD;IAEK,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQ5D;IAEK,WAAW,CACf,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY7B;IAEK,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAYlE;IAED,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,GAAG,SAAS,CAO7D;YAEa,sBAAsB;CAgBrC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dns from 'node:dns/promises'\nimport { HandleResolverOpts } from '../types.js'\n\nconst SUBDOMAIN = '_atproto'\nconst PREFIX = 'did='\n\nexport class HandleResolver {\n public timeout: number\n private backupNameservers: string[] | undefined\n private backupNameserverIps: string[] | undefined\n\n constructor(opts: HandleResolverOpts = {}) {\n this.timeout = opts.timeout ?? 3000\n this.backupNameservers = opts.backupNameservers\n }\n\n async resolve(handle: string): Promise<string | undefined> {\n const dnsPromise = this.resolveDns(handle)\n const httpAbort = new AbortController()\n const httpPromise = this.resolveHttp(handle, httpAbort.signal).catch(\n () => undefined,\n )\n\n const dnsRes = await dnsPromise\n if (dnsRes) {\n httpAbort.abort()\n return dnsRes\n }\n const res = await httpPromise\n if (res) {\n return res\n }\n return this.resolveDnsBackup(handle)\n }\n\n async resolveDns(handle: string): Promise<string | undefined> {\n let chunkedResults: string[][]\n try {\n chunkedResults = await dns.resolveTxt(`${SUBDOMAIN}.${handle}`)\n } catch (err) {\n return undefined\n }\n return this.parseDnsResult(chunkedResults)\n }\n\n async resolveHttp(\n handle: string,\n signal?: AbortSignal,\n ): Promise<string | undefined> {\n const url = new URL('/.well-known/atproto-did', `https://${handle}`)\n try {\n const res = await fetch(url, { signal })\n const did = (await res.text()).split('\\n')[0].trim()\n if (typeof did === 'string' && did.startsWith('did:')) {\n return did\n }\n return undefined\n } catch (err) {\n return undefined\n }\n }\n\n async resolveDnsBackup(handle: string): Promise<string | undefined> {\n let chunkedResults: string[][]\n try {\n const backupIps = await this.getBackupNameserverIps()\n if (!backupIps || backupIps.length < 1) return undefined\n const resolver = new dns.Resolver()\n resolver.setServers(backupIps)\n chunkedResults = await resolver.resolveTxt(`${SUBDOMAIN}.${handle}`)\n } catch (err) {\n return undefined\n }\n return this.parseDnsResult(chunkedResults)\n }\n\n parseDnsResult(chunkedResults: string[][]): string | undefined {\n const results = chunkedResults.map((chunks) => chunks.join(''))\n const found = results.filter((i) => i.startsWith(PREFIX))\n if (found.length !== 1) {\n return undefined\n }\n return found[0].slice(PREFIX.length)\n }\n\n private async getBackupNameserverIps(): Promise<string[] | undefined> {\n if (!this.backupNameservers) {\n return undefined\n } else if (!this.backupNameserverIps) {\n const responses = await Promise.allSettled(\n this.backupNameservers.map((h) => dns.lookup(h)),\n )\n for (const res of responses) {\n if (res.status === 'fulfilled') {\n this.backupNameserverIps ??= []\n this.backupNameserverIps.push(res.value.address)\n }\n }\n }\n return this.backupNameserverIps\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"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","sourcesContent":["import * as dns from 'node:dns/promises'\nimport { HandleResolverOpts } from '../types.js'\n\nconst SUBDOMAIN = '_atproto'\nconst PREFIX = 'did='\n\nexport class HandleResolver {\n public timeout: number\n private backupNameservers: string[] | undefined\n private backupNameserverIps: string[] | undefined\n\n constructor(opts: HandleResolverOpts = {}) {\n this.timeout = opts.timeout ?? 3000\n this.backupNameservers = opts.backupNameservers\n }\n\n async resolve(handle: string): Promise<string | undefined> {\n const dnsPromise = this.resolveDns(handle)\n const httpAbort = new AbortController()\n const httpPromise = this.resolveHttp(handle, httpAbort.signal).catch(\n () => undefined,\n )\n\n const dnsRes = await dnsPromise\n if (dnsRes) {\n httpAbort.abort()\n return dnsRes\n }\n const res = await httpPromise\n if (res) {\n return res\n }\n return this.resolveDnsBackup(handle)\n }\n\n async resolveDns(handle: string): Promise<string | undefined> {\n let chunkedResults: string[][]\n try {\n chunkedResults = await dns.resolveTxt(`${SUBDOMAIN}.${handle}`)\n } catch (err) {\n return undefined\n }\n return this.parseDnsResult(chunkedResults)\n }\n\n async resolveHttp(\n handle: string,\n signal?: AbortSignal,\n ): Promise<string | undefined> {\n const url = new URL('/.well-known/atproto-did', `https://${handle}`)\n try {\n const res = await fetch(url, { signal })\n const did = (await res.text()).split('\\n')[0].trim()\n if (typeof did === 'string' && did.startsWith('did:')) {\n return did\n }\n return undefined\n } catch (err) {\n return undefined\n }\n }\n\n async resolveDnsBackup(handle: string): Promise<string | undefined> {\n let chunkedResults: string[][]\n try {\n const backupIps = await this.getBackupNameserverIps()\n if (!backupIps || backupIps.length < 1) return undefined\n const resolver = new dns.Resolver()\n resolver.setServers(backupIps)\n chunkedResults = await resolver.resolveTxt(`${SUBDOMAIN}.${handle}`)\n } catch (err) {\n return undefined\n }\n return this.parseDnsResult(chunkedResults)\n }\n\n parseDnsResult(chunkedResults: string[][]): string | undefined {\n const results = chunkedResults.map((chunks) => chunks.join(''))\n const found = results.filter((i) => i.startsWith(PREFIX))\n if (found.length !== 1) {\n return undefined\n }\n return found[0].slice(PREFIX.length)\n }\n\n private async getBackupNameserverIps(): Promise<string[] | undefined> {\n if (!this.backupNameservers) {\n return undefined\n } else if (!this.backupNameserverIps) {\n const responses = await Promise.allSettled(\n this.backupNameservers.map((h) => dns.lookup(h)),\n )\n for (const res of responses) {\n if (res.status === 'fulfilled') {\n this.backupNameserverIps ??= []\n this.backupNameserverIps.push(res.value.address)\n }\n }\n }\n return this.backupNameserverIps\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"id-resolver.d.ts","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,qBAAa,UAAU;IACd,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,EAAE,WAAW,CAAA;gBAEX,IAAI,GAAE,oBAAyB;CAQ5C"}
1
+ {"version":3,"file":"id-resolver.d.ts","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,qBAAa,UAAU;IACd,MAAM,EAAE,cAAc,CAAA;IACtB,GAAG,EAAE,WAAW,CAAA;IAEvB,YAAY,IAAI,GAAE,oBAAyB,EAO1C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"id-resolver.js","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,MAAM,OAAO,UAAU;IAIrB,YAAY,OAA6B,EAAE;QACzC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,OAAO;YACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC3D,CAAC;CACF","sourcesContent":["import { DidResolver } from './did/did-resolver.js'\nimport { HandleResolver } from './handle/index.js'\nimport { IdentityResolverOpts } from './types.js'\n\nexport class IdResolver {\n public handle: HandleResolver\n public did: DidResolver\n\n constructor(opts: IdentityResolverOpts = {}) {\n const { timeout = 3000, plcUrl, didCache } = opts\n this.handle = new HandleResolver({\n timeout,\n backupNameservers: opts.backupNameservers,\n })\n this.did = new DidResolver({ timeout, plcUrl, didCache })\n }\n}\n"]}
1
+ {"version":3,"file":"id-resolver.js","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAGlD,MAAM,OAAO,UAAU;IAIrB,YAAY,IAAI,GAAyB,EAAE;QACzC,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,cAAc,CAAC;YAC/B,OAAO;YACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC3D,CAAC;CACF","sourcesContent":["import { DidResolver } from './did/did-resolver.js'\nimport { HandleResolver } from './handle/index.js'\nimport { IdentityResolverOpts } from './types.js'\n\nexport class IdResolver {\n public handle: HandleResolver\n public did: DidResolver\n\n constructor(opts: IdentityResolverOpts = {}) {\n const { timeout = 3000, plcUrl, didCache } = opts\n this.handle = new HandleResolver({\n timeout,\n backupNameservers: opts.backupNameservers,\n })\n this.did = new DidResolver({ timeout, plcUrl, didCache })\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/identity",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "license": "MIT",
5
5
  "description": "Library for decentralized identities in atproto using DIDs and handles",
6
6
  "keywords": [
@@ -18,8 +18,8 @@
18
18
  "node": ">=22"
19
19
  },
20
20
  "dependencies": {
21
- "@atproto/common-web": "^0.5.0",
22
- "@atproto/crypto": "^0.5.0"
21
+ "@atproto/common-web": "^0.5.1",
22
+ "@atproto/crypto": "^0.5.1"
23
23
  },
24
24
  "devDependencies": {
25
25
  "@did-plc/lib": "^0.0.1",
@@ -28,8 +28,7 @@
28
28
  "cors": "^2.8.5",
29
29
  "express": "^4.18.2",
30
30
  "get-port": "^6.1.2",
31
- "jest": "^30.0.0",
32
- "typescript": "^6.0.3"
31
+ "jest": "^30.0.0"
33
32
  },
34
33
  "type": "module",
35
34
  "exports": {
@@ -41,6 +40,6 @@
41
40
  "scripts": {
42
41
  "test": "NODE_OPTIONS=--experimental-vm-modules jest",
43
42
  "test:log": "cat test.log | pino-pretty",
44
- "build": "tsc --build tsconfig.build.json"
43
+ "build": "tsgo --build tsconfig.build.json"
45
44
  }
46
45
  }
@@ -2,7 +2,7 @@
2
2
  "extends": "../../tsconfig/isomorphic.json",
3
3
  "compilerOptions": {
4
4
  "rootDir": "./src",
5
- "outDir": "./dist"
5
+ "outDir": "./dist",
6
6
  },
7
- "include": ["./src"]
7
+ "include": ["./src"],
8
8
  }
@@ -1 +1 @@
1
- {"root":["./src/errors.ts","./src/id-resolver.ts","./src/index.ts","./src/types.ts","./src/did/atproto-data.ts","./src/did/base-resolver.ts","./src/did/did-resolver.ts","./src/did/index.ts","./src/did/memory-cache.ts","./src/did/plc-resolver.ts","./src/did/util.ts","./src/did/web-resolver.ts","./src/handle/index.ts"],"version":"6.0.3"}
1
+ {"version":"7.0.0-dev.20260614.1","root":["./src/errors.ts","./src/id-resolver.ts","./src/index.ts","./src/types.ts","./src/did/atproto-data.ts","./src/did/base-resolver.ts","./src/did/did-resolver.ts","./src/did/index.ts","./src/did/memory-cache.ts","./src/did/plc-resolver.ts","./src/did/util.ts","./src/did/web-resolver.ts","./src/handle/index.ts"]}
package/tsconfig.json CHANGED
@@ -2,6 +2,6 @@
2
2
  "include": [],
3
3
  "references": [
4
4
  { "path": "./tsconfig.build.json" },
5
- { "path": "./tsconfig.tests.json" }
6
- ]
5
+ { "path": "./tsconfig.tests.json" },
6
+ ],
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "extends": "../../tsconfig/tests.json",
3
3
  "compilerOptions": {
4
- "rootDir": "."
4
+ "rootDir": ".",
5
5
  },
6
- "include": ["./tests"]
6
+ "include": ["./tests"],
7
7
  }