@atproto/did 0.1.1-rc.1 → 0.1.2

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,21 @@
1
1
  # @atproto/did
2
2
 
3
+ ## 0.1.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#2776](https://github.com/bluesky-social/atproto/pull/2776) [`cb4abbb67`](https://github.com/bluesky-social/atproto/commit/cb4abbb673c69a8a89b49dca5c038f3da2153c6c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Disallow path component in Web DID's (as per spec)
8
+
9
+ - [#2776](https://github.com/bluesky-social/atproto/pull/2776) [`cb4abbb67`](https://github.com/bluesky-social/atproto/commit/cb4abbb673c69a8a89b49dca5c038f3da2153c6c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Properly parse localhost did:web
10
+
11
+ - [#2776](https://github.com/bluesky-social/atproto/pull/2776) [`cb4abbb67`](https://github.com/bluesky-social/atproto/commit/cb4abbb673c69a8a89b49dca5c038f3da2153c6c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Code optimizations and documentation. Rename `check*` utility function to `assert*`.
12
+
13
+ ## 0.1.1
14
+
15
+ ### Patch Changes
16
+
17
+ - [#2483](https://github.com/bluesky-social/atproto/pull/2483) [`b934b396b`](https://github.com/bluesky-social/atproto/commit/b934b396b13ba32bf2bf7e75ecdf6871e5f310dd) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Expose atproto specific types and utilities
18
+
3
19
  ## 0.1.0
4
20
 
5
21
  ### Minor Changes
package/dist/atproto.d.ts CHANGED
@@ -3,7 +3,8 @@ export type AtprotoIdentityDidMethods = 'plc' | 'web';
3
3
  export type AtprotoDid = Did<AtprotoIdentityDidMethods>;
4
4
  export declare function isAtprotoDid(input: unknown): input is AtprotoDid;
5
5
  export declare function asAtprotoDid(input: unknown): AtprotoDid;
6
- export declare function checkAtprotoDid(input: unknown): asserts input is AtprotoDid;
6
+ export declare function assertAtprotoDid(input: unknown): asserts input is AtprotoDid;
7
+ export declare function assertAtprotoDidWeb(input: unknown): asserts input is Did<'web'>;
7
8
  /**
8
9
  * @see {@link https://atproto.com/specs/did#blessed-did-methods}
9
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"atproto.d.ts","sourceRoot":"","sources":["../src/atproto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAY9B,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,KAAK,CAAA;AACrD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAA;AAEvD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAahE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAGvD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAa3E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAoBnE"}
1
+ {"version":3,"file":"atproto.d.ts","sourceRoot":"","sources":["../src/atproto.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAW9B,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,KAAK,CAAA;AACrD,MAAM,MAAM,UAAU,GAAG,GAAG,CAAC,yBAAyB,CAAC,CAAA;AAEvD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAahE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAGvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAa5E;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAmB7B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAOnE"}
package/dist/atproto.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isAtprotoDidWeb = exports.checkAtprotoDid = exports.asAtprotoDid = exports.isAtprotoDid = void 0;
3
+ exports.isAtprotoDidWeb = exports.assertAtprotoDidWeb = exports.assertAtprotoDid = exports.asAtprotoDid = exports.isAtprotoDid = void 0;
4
4
  const did_error_js_1 = require("./did-error.js");
5
5
  const methods_js_1 = require("./methods.js");
6
6
  function isAtprotoDid(input) {
@@ -21,43 +21,47 @@ function isAtprotoDid(input) {
21
21
  }
22
22
  exports.isAtprotoDid = isAtprotoDid;
23
23
  function asAtprotoDid(input) {
24
- checkAtprotoDid(input);
24
+ assertAtprotoDid(input);
25
25
  return input;
26
26
  }
27
27
  exports.asAtprotoDid = asAtprotoDid;
28
- function checkAtprotoDid(input) {
28
+ function assertAtprotoDid(input) {
29
29
  if (typeof input !== 'string') {
30
30
  throw new did_error_js_1.InvalidDidError(typeof input, `DID must be a string`);
31
31
  }
32
32
  else if (input.startsWith(methods_js_1.DID_PLC_PREFIX)) {
33
- (0, methods_js_1.checkDidPlc)(input);
33
+ (0, methods_js_1.assertDidPlc)(input);
34
34
  }
35
35
  else if (input.startsWith(methods_js_1.DID_WEB_PREFIX)) {
36
- (0, methods_js_1.checkDidWeb)(input);
36
+ assertAtprotoDidWeb(input);
37
37
  }
38
38
  else {
39
39
  throw new did_error_js_1.InvalidDidError(input, `Atproto only allows "plc" and "web" DID methods`);
40
40
  }
41
41
  }
42
- exports.checkAtprotoDid = checkAtprotoDid;
42
+ exports.assertAtprotoDid = assertAtprotoDid;
43
+ function assertAtprotoDidWeb(input) {
44
+ (0, methods_js_1.assertDidWeb)(input);
45
+ if (input.includes(':', methods_js_1.DID_WEB_PREFIX.length)) {
46
+ throw new did_error_js_1.InvalidDidError(input, `Atproto does not allow path components in Web DIDs`);
47
+ }
48
+ if (input.includes('%3A', methods_js_1.DID_WEB_PREFIX.length) &&
49
+ !input.startsWith('did:web:localhost%3A')) {
50
+ throw new did_error_js_1.InvalidDidError(input, `Atproto does not allow port numbers in Web DIDs, except for localhost`);
51
+ }
52
+ }
53
+ exports.assertAtprotoDidWeb = assertAtprotoDidWeb;
43
54
  /**
44
55
  * @see {@link https://atproto.com/specs/did#blessed-did-methods}
45
56
  */
46
57
  function isAtprotoDidWeb(input) {
47
- // Optimization: make cheap checks first
48
- if (typeof input !== 'string') {
49
- return false;
50
- }
51
- // Path are not allowed
52
- if (input.includes(':', methods_js_1.DID_WEB_PREFIX.length)) {
53
- return false;
58
+ try {
59
+ assertAtprotoDidWeb(input);
60
+ return true;
54
61
  }
55
- // Port numbers are not allowed, except for localhost
56
- if (input.includes('%3A', methods_js_1.DID_WEB_PREFIX.length) &&
57
- !input.startsWith('did:web:localhost%3A')) {
62
+ catch {
58
63
  return false;
59
64
  }
60
- return (0, methods_js_1.isDidWeb)(input);
61
65
  }
62
66
  exports.isAtprotoDidWeb = isAtprotoDidWeb;
63
67
  //# sourceMappingURL=atproto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"atproto.js","sourceRoot":"","sources":["../src/atproto.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAEhD,6CAOqB;AAOrB,SAAgB,YAAY,CAAC,KAAc;IACzC,2BAA2B;IAC3B,mDAAmD;IAEnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAA;IACxB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAbD,oCAaC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,eAAe,CAAC,KAAK,CAAC,CAAA;IACtB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,oCAGC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAA;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAA;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,iDAAiD,CAClD,CAAA;IACH,CAAC;AACH,CAAC;AAbD,0CAaC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,wCAAwC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;IAED,uBAAuB;IACvB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qDAAqD;IACrD,IACE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAAc,CAAC,MAAM,CAAC;QAC5C,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACzC,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAA;AACxB,CAAC;AApBD,0CAoBC"}
1
+ {"version":3,"file":"atproto.js","sourceRoot":"","sources":["../src/atproto.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAEhD,6CAMqB;AAOrB,SAAgB,YAAY,CAAC,KAAc;IACzC,2BAA2B;IAC3B,mDAAmD;IAEnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAA;IACd,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAA,qBAAQ,EAAC,KAAK,CAAC,CAAA;IACxB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAbD,oCAaC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,gBAAgB,CAAC,KAAK,CAAC,CAAA;IACvB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,oCAGC;AAED,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,IAAA,yBAAY,EAAC,KAAK,CAAC,CAAA;IACrB,CAAC;SAAM,IAAI,KAAK,CAAC,UAAU,CAAC,2BAAc,CAAC,EAAE,CAAC;QAC5C,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,iDAAiD,CAClD,CAAA;IACH,CAAC;AACH,CAAC;AAbD,4CAaC;AAED,SAAgB,mBAAmB,CACjC,KAAc;IAEd,IAAA,yBAAY,EAAC,KAAK,CAAC,CAAA;IAEnB,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,2BAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,oDAAoD,CACrD,CAAA;IACH,CAAC;IAED,IACE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAAc,CAAC,MAAM,CAAC;QAC5C,CAAC,KAAK,CAAC,UAAU,CAAC,sBAAsB,CAAC,EACzC,CAAC;QACD,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,uEAAuE,CACxE,CAAA;IACH,CAAC;AACH,CAAC;AArBD,kDAqBC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,KAAc;IAC5C,IAAI,CAAC;QACH,mBAAmB,CAAC,KAAK,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAPD,0CAOC"}
@@ -130,7 +130,7 @@ export declare const didDocumentSchema: z.ZodObject<{
130
130
  export type DidDocument<Method extends string = string> = z.infer<typeof didDocumentSchema> & {
131
131
  id: Did<Method>;
132
132
  };
133
- export declare const didDocumentValidator: z.ZodEffects<z.ZodEffects<z.ZodObject<{
133
+ export declare const didDocumentValidator: z.ZodEffects<z.ZodObject<{
134
134
  '@context': z.ZodUnion<[z.ZodLiteral<"https://www.w3.org/ns/did/v1">, z.ZodEffects<z.ZodArray<z.ZodString, "atleastone">, [string, ...string[]], [string, ...string[]]>]>;
135
135
  id: z.ZodEffects<z.ZodString, `did:${string}:${string}`, string>;
136
136
  controller: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, `did:${string}:${string}`, string>, z.ZodArray<z.ZodEffects<z.ZodString, `did:${string}:${string}`, string>, "many">]>>;
@@ -282,54 +282,6 @@ export declare const didDocumentValidator: z.ZodEffects<z.ZodEffects<z.ZodObject
282
282
  publicKeyJwk?: Record<string, unknown> | undefined;
283
283
  publicKeyMultibase?: string | undefined;
284
284
  })[] | undefined;
285
- }>, {
286
- id: `did:${string}:${string}`;
287
- '@context': "https://www.w3.org/ns/did/v1" | [string, ...string[]];
288
- controller?: `did:${string}:${string}` | `did:${string}:${string}`[] | undefined;
289
- alsoKnownAs?: string[] | undefined;
290
- service?: {
291
- type: string | string[];
292
- id: string;
293
- serviceEndpoint: string | Record<string, string> | [string | Record<string, string>, ...(string | Record<string, string>)[]];
294
- }[] | undefined;
295
- authentication?: (string | {
296
- type: string;
297
- id: string;
298
- controller: `did:${string}:${string}` | `did:${string}:${string}`[];
299
- publicKeyJwk?: Record<string, unknown> | undefined;
300
- publicKeyMultibase?: string | undefined;
301
- })[] | undefined;
302
- verificationMethod?: (string | {
303
- type: string;
304
- id: string;
305
- controller: `did:${string}:${string}` | `did:${string}:${string}`[];
306
- publicKeyJwk?: Record<string, unknown> | undefined;
307
- publicKeyMultibase?: string | undefined;
308
- })[] | undefined;
309
- }, {
310
- id: string;
311
- '@context': "https://www.w3.org/ns/did/v1" | [string, ...string[]];
312
- controller?: string | string[] | undefined;
313
- alsoKnownAs?: string[] | undefined;
314
- service?: {
315
- type: string | string[];
316
- id: string;
317
- serviceEndpoint: string | Record<string, string> | [string | Record<string, string>, ...(string | Record<string, string>)[]];
318
- }[] | undefined;
319
- authentication?: (string | {
320
- type: string;
321
- id: string;
322
- controller: string | string[];
323
- publicKeyJwk?: Record<string, unknown> | undefined;
324
- publicKeyMultibase?: string | undefined;
325
- })[] | undefined;
326
- verificationMethod?: (string | {
327
- type: string;
328
- id: string;
329
- controller: string | string[];
330
- publicKeyJwk?: Record<string, unknown> | undefined;
331
- publicKeyMultibase?: string | undefined;
332
- })[] | undefined;
333
285
  }>;
334
286
  export {};
335
287
  //# sourceMappingURL=did-document.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"did-document.d.ts","sourceRoot":"","sources":["../src/did-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,GAAG,EAAa,MAAM,UAAU,CAAA;AAqEzC;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAQzD;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB5B,CAAA;AAEF,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAC/D,OAAO,iBAAiB,CACzB,GAAG;IAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAGvB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgC7B,CAAA"}
1
+ {"version":3,"file":"did-document.d.ts","sourceRoot":"","sources":["../src/did-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,GAAG,EAAa,MAAM,UAAU,CAAA;AAqEzC;;;GAGG;AACH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAIpB,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAQzD;;;GAGG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB5B,CAAA;AAEF,MAAM,MAAM,WAAW,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,KAAK,CAC/D,OAAO,iBAAiB,CACzB,GAAG;IAAE,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAA;AAGvB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwB7B,CAAA"}
@@ -103,33 +103,26 @@ exports.didDocumentSchema = zod_1.z.object({
103
103
  });
104
104
  // @TODO: add other refinements ?
105
105
  exports.didDocumentValidator = exports.didDocumentSchema
106
- .superRefine((data, ctx) => {
107
- if (data.service) {
108
- for (let i = 0; i < data.service.length; i++) {
109
- if (data.service[i].id === data.id) {
106
+ // Ensure that every service id is unique
107
+ .superRefine(({ id: did, service }, ctx) => {
108
+ if (service) {
109
+ const visited = new Set();
110
+ for (let i = 0; i < service.length; i++) {
111
+ const current = service[i];
112
+ const serviceId = current.id.startsWith('#')
113
+ ? `${did}${current.id}`
114
+ : current.id;
115
+ if (!visited.has(serviceId)) {
116
+ visited.add(serviceId);
117
+ }
118
+ else {
110
119
  ctx.addIssue({
111
120
  code: zod_1.z.ZodIssueCode.custom,
112
- message: `Service id must be different from the document id`,
121
+ message: `Duplicate service id (${current.id}) found in the document`,
113
122
  path: ['service', i, 'id'],
114
123
  });
115
124
  }
116
125
  }
117
126
  }
118
- })
119
- .superRefine((data, ctx) => {
120
- if (data.service) {
121
- const normalizedIds = data.service.map((s) => s.id?.startsWith('#') ? `${data.id}${s.id}` : s.id);
122
- for (let i = 0; i < normalizedIds.length; i++) {
123
- for (let j = i + 1; j < normalizedIds.length; j++) {
124
- if (normalizedIds[i] === normalizedIds[j]) {
125
- ctx.addIssue({
126
- code: zod_1.z.ZodIssueCode.custom,
127
- message: `Duplicate service id (${normalizedIds[j]}) found in the document`,
128
- path: ['service', j, 'id'],
129
- });
130
- }
131
- }
132
- }
133
- }
134
127
  });
135
128
  //# sourceMappingURL=did-document.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"did-document.js","sourceRoot":"","sources":["../src/did-document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"did-document.js","sourceRoot":"","sources":["../src/did-document.ts"],"names":[],"mappings":"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"}
package/dist/did.d.ts CHANGED
@@ -38,7 +38,7 @@ type AsDidMethodInternal<S, Acc extends string> = S extends `${infer H}${infer T
38
38
  * Check if the input is a valid DID method name, at the position between
39
39
  * `start` (inclusive) and `end` (exclusive).
40
40
  */
41
- export declare function checkDidMethod(input: string, start?: number, end?: number): void;
41
+ export declare function assertDidMethod(input: string, start?: number, end?: number): void;
42
42
  /**
43
43
  * This method assumes the input is a valid Did
44
44
  */
@@ -49,8 +49,8 @@ export declare function extractDidMethod<D extends Did>(did: D): D extends `did:
49
49
  * Check if the input is a valid DID method-specific identifier, at the position
50
50
  * between `start` (inclusive) and `end` (exclusive).
51
51
  */
52
- export declare function checkDidMsid(input: string, start?: number, end?: number): void;
53
- export declare function checkDid(input: unknown): asserts input is Did;
52
+ export declare function assertDidMsid(input: string, start?: number, end?: number): void;
53
+ export declare function assertDid(input: unknown): asserts input is Did;
54
54
  export declare function isDid(input: unknown): input is Did;
55
55
  export declare function asDid(input: unknown): Did;
56
56
  export declare const didSchema: z.ZodEffects<z.ZodString, `did:${string}:${string}`, string>;
package/dist/did.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,UAAU,SAAS,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,GACzC,MAAM,GACN,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAE9B,KAAK,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAAA;AAClD,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAC1E,KAAK,cAAc,GACf,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAA;AAEP,KAAK,mBAAmB,CACtB,CAAC,EACD,GAAG,SAAS,MAAM,IAChB,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAChC,CAAC,SAAS,gBAAgB,GACxB,mBAAmB,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GACpC,KAAK,GACP,GAAG,SAAS,EAAE,GACZ,KAAK,GACL,GAAG,CAAA;AAET;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,GAAG,SAAe,GACjB,IAAI,CA0BN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,iFAIrD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,GAAG,SAAe,GACjB,IAAI,CAuEN;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAqB7D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAYlD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAGzC;AAED,eAAO,MAAM,SAAS,8DAalB,CAAA"}
1
+ {"version":3,"file":"did.d.ts","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,QAAA,MAAM,UAAU,SAAS,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAA;AAE9E;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,GACzC,MAAM,GACN,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAE9B,KAAK,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAAA;AAClD,KAAK,SAAS,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAC1E,KAAK,cAAc,GACf,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,GACH,GAAG,CAAA;AAEP,KAAK,mBAAmB,CACtB,CAAC,EACD,GAAG,SAAS,MAAM,IAChB,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAChC,CAAC,SAAS,gBAAgB,GACxB,mBAAmB,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GACpC,KAAK,GACP,GAAG,SAAS,EAAE,GACZ,KAAK,GACL,GAAG,CAAA;AAET;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,GAAG,SAAe,GACjB,IAAI,CA0BN;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,iFAIrD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,EACT,GAAG,SAAe,GACjB,IAAI,CAuEN;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAqB9D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAYlD;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAGzC;AAED,eAAO,MAAM,SAAS,8DAalB,CAAA"}
package/dist/did.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.didSchema = exports.asDid = exports.isDid = exports.checkDid = exports.checkDidMsid = exports.extractDidMethod = exports.checkDidMethod = exports.DID_PREFIX = void 0;
3
+ exports.didSchema = exports.asDid = exports.isDid = exports.assertDid = exports.assertDidMsid = exports.extractDidMethod = exports.assertDidMethod = exports.DID_PREFIX = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const did_error_js_1 = require("./did-error.js");
6
6
  const DID_PREFIX = 'did:';
@@ -12,7 +12,7 @@ const DID_PREFIX_LENGTH = DID_PREFIX.length;
12
12
  * Check if the input is a valid DID method name, at the position between
13
13
  * `start` (inclusive) and `end` (exclusive).
14
14
  */
15
- function checkDidMethod(input, start = 0, end = input.length) {
15
+ function assertDidMethod(input, start = 0, end = input.length) {
16
16
  if (!Number.isFinite(end) ||
17
17
  !Number.isFinite(start) ||
18
18
  end < start ||
@@ -32,7 +32,7 @@ function checkDidMethod(input, start = 0, end = input.length) {
32
32
  }
33
33
  }
34
34
  }
35
- exports.checkDidMethod = checkDidMethod;
35
+ exports.assertDidMethod = assertDidMethod;
36
36
  /**
37
37
  * This method assumes the input is a valid Did
38
38
  */
@@ -48,7 +48,7 @@ exports.extractDidMethod = extractDidMethod;
48
48
  * Check if the input is a valid DID method-specific identifier, at the position
49
49
  * between `start` (inclusive) and `end` (exclusive).
50
50
  */
51
- function checkDidMsid(input, start = 0, end = input.length) {
51
+ function assertDidMsid(input, start = 0, end = input.length) {
52
52
  if (!Number.isFinite(end) ||
53
53
  !Number.isFinite(start) ||
54
54
  end < start ||
@@ -97,8 +97,8 @@ function checkDidMsid(input, start = 0, end = input.length) {
97
97
  }
98
98
  }
99
99
  }
100
- exports.checkDidMsid = checkDidMsid;
101
- function checkDid(input) {
100
+ exports.assertDidMsid = assertDidMsid;
101
+ function assertDid(input) {
102
102
  if (typeof input !== 'string') {
103
103
  throw new did_error_js_1.InvalidDidError(typeof input, `DID must be a string`);
104
104
  }
@@ -113,13 +113,13 @@ function checkDid(input) {
113
113
  if (idSep === -1) {
114
114
  throw new did_error_js_1.InvalidDidError(input, `Missing colon after method name`);
115
115
  }
116
- checkDidMethod(input, DID_PREFIX_LENGTH, idSep);
117
- checkDidMsid(input, idSep + 1, length);
116
+ assertDidMethod(input, DID_PREFIX_LENGTH, idSep);
117
+ assertDidMsid(input, idSep + 1, length);
118
118
  }
119
- exports.checkDid = checkDid;
119
+ exports.assertDid = assertDid;
120
120
  function isDid(input) {
121
121
  try {
122
- checkDid(input);
122
+ assertDid(input);
123
123
  return true;
124
124
  }
125
125
  catch (err) {
@@ -132,7 +132,7 @@ function isDid(input) {
132
132
  }
133
133
  exports.isDid = isDid;
134
134
  function asDid(input) {
135
- checkDid(input);
135
+ assertDid(input);
136
136
  return input;
137
137
  }
138
138
  exports.asDid = asDid;
@@ -140,7 +140,7 @@ exports.didSchema = zod_1.z
140
140
  .string()
141
141
  .superRefine((value, ctx) => {
142
142
  try {
143
- checkDid(value);
143
+ assertDid(value);
144
144
  return true;
145
145
  }
146
146
  catch (err) {
package/dist/did.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"did.js","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AACvB,iDAA0D;AAE1D,MAAM,UAAU,GAAG,MAAM,CAAA;AAEhB,gCAAU;AADnB,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAA;AA2E3C;;;;;GAKG;AACH,SAAgB,cAAc,CAC5B,KAAa,EACb,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,KAAK,CAAC,MAAM;IAElB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,GAAG,GAAG,KAAK;QACX,GAAG,GAAG,KAAK,CAAC,MAAM,EAClB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;IACvD,CAAC;IAED,IAAI,CAAS,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACvB,IACE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM;YAChC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM;UAC7B,CAAC;YACD,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,iCAAiC,CAAC,qBAAqB,CACxD,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AA9BD,wCA8BC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAgB,GAAM;IACpD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;IACpD,OAAO,MAA6C,CAAA;AACtD,CAAC;AAJD,4CAIC;AAED;;;;;GAKG;AACH,SAAgB,YAAY,CAC1B,KAAa,EACb,KAAK,GAAG,CAAC,EACT,GAAG,GAAG,KAAK,CAAC,MAAM;IAElB,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QACrB,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvB,GAAG,GAAG,KAAK;QACX,GAAG,GAAG,KAAK,CAAC,MAAM,EAClB,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAA;IAC9E,CAAC;IAED,IAAI,CAAS,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAEvB,iCAAiC;QACjC,IACE,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM;YAChC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM;YAChC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM;YAChC,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,CAAC,IAAI;UACf,CAAC;YACD,uCAAuC;YAEvC,MAAM;YACN,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;oBAClB,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;gBAC7D,CAAC;gBACD,SAAQ;YACV,CAAC;YAED,cAAc;YACd,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzB,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,6CAA6C,CAAC,EAAE,CACjD,CAAA;gBACH,CAAC;gBAED,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;gBACzB,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;oBACrD,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,6CAA6C,CAAC,EAAE,CACjD,CAAA;gBACH,CAAC;gBAED,4CAA4C;gBAC5C,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;oBACb,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,gDAAgD,CAAC,GAAG,CAAC,EAAE,CACxD,CAAA;gBACH,CAAC;gBAED,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,2CAA2C,CAAC,EAAE,CAC/C,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC;AA3ED,oCA2EC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IACxB,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,kCAAkC,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,iBAAiB,UAAU,UAAU,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAA;IACnD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAA;IACrE,CAAC;IAED,cAAc,CAAC,KAAK,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC/C,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AArBD,4BAqBC;AAED,SAAgB,KAAK,CAAC,KAAc;IAClC,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,uBAAQ,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,6CAA6C;QAC7C,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAZD,sBAYC;AAED,SAAgB,KAAK,CAAC,KAAc;IAClC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,sBAGC;AAEY,QAAA,SAAS,GAAG,OAAC;KACvB,MAAM,EAAE;KACR,WAAW,CAAC,CAAC,KAAa,EAAE,GAAoB,EAAgB,EAAE;IACjE,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAA;QACf,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,OAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB;SACjE,CAAC,CAAA;QACF,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"did.js","sourceRoot":"","sources":["../src/did.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,5 @@ declare const DID_PLC_PREFIX = "did:plc:";
3
3
  export { DID_PLC_PREFIX };
4
4
  export declare function isDidPlc(input: unknown): input is Did<'plc'>;
5
5
  export declare function asDidPlc(input: unknown): Did<'plc'>;
6
- export declare function checkDidPlc(input: unknown): asserts input is Did<'plc'>;
6
+ export declare function assertDidPlc(input: unknown): asserts input is Did<'plc'>;
7
7
  //# sourceMappingURL=plc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plc.d.ts","sourceRoot":"","sources":["../../src/methods/plc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE/B,QAAA,MAAM,cAAc,aAAa,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAU5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAGnD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAwBvE"}
1
+ {"version":3,"file":"plc.d.ts","sourceRoot":"","sources":["../../src/methods/plc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAE/B,QAAA,MAAM,cAAc,aAAa,CAAA;AAIjC,OAAO,EAAE,cAAc,EAAE,CAAA;AAEzB,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAS5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAGnD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAyBxE"}
@@ -1,30 +1,32 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkDidPlc = exports.asDidPlc = exports.isDidPlc = exports.DID_PLC_PREFIX = void 0;
3
+ exports.assertDidPlc = exports.asDidPlc = exports.isDidPlc = exports.DID_PLC_PREFIX = void 0;
4
4
  const did_error_js_1 = require("../did-error.js");
5
5
  const DID_PLC_PREFIX = `did:plc:`;
6
6
  exports.DID_PLC_PREFIX = DID_PLC_PREFIX;
7
7
  const DID_PLC_PREFIX_LENGTH = DID_PLC_PREFIX.length;
8
8
  const DID_PLC_LENGTH = 32;
9
9
  function isDidPlc(input) {
10
- // Optimization: make cheap checks first
10
+ // Optimization: equivalent to try/catch around "assertDidPlc"
11
11
  if (typeof input !== 'string')
12
12
  return false;
13
- try {
14
- checkDidPlc(input);
15
- return true;
16
- }
17
- catch {
13
+ if (input.length !== DID_PLC_LENGTH)
14
+ return false;
15
+ if (!input.startsWith(DID_PLC_PREFIX))
18
16
  return false;
17
+ for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {
18
+ if (!isBase32Char(input.charCodeAt(i)))
19
+ return false;
19
20
  }
21
+ return true;
20
22
  }
21
23
  exports.isDidPlc = isDidPlc;
22
24
  function asDidPlc(input) {
23
- checkDidPlc(input);
25
+ assertDidPlc(input);
24
26
  return input;
25
27
  }
26
28
  exports.asDidPlc = asDidPlc;
27
- function checkDidPlc(input) {
29
+ function assertDidPlc(input) {
28
30
  if (typeof input !== 'string') {
29
31
  throw new did_error_js_1.InvalidDidError(typeof input, `DID must be a string`);
30
32
  }
@@ -34,14 +36,14 @@ function checkDidPlc(input) {
34
36
  if (!input.startsWith(DID_PLC_PREFIX)) {
35
37
  throw new did_error_js_1.InvalidDidError(input, `Invalid did:plc prefix`);
36
38
  }
37
- let c;
39
+ // The following check is not necessary, as the check below is more strict:
40
+ // assertDidMsid(input, DID_PLC_PREFIX.length)
38
41
  for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {
39
- c = input.charCodeAt(i);
40
- // Base32 encoding ([a-z2-7])
41
- if ((c < 0x61 || c > 0x7a) && (c < 0x32 || c > 0x37)) {
42
+ if (!isBase32Char(input.charCodeAt(i))) {
42
43
  throw new did_error_js_1.InvalidDidError(input, `Invalid character at position ${i}`);
43
44
  }
44
45
  }
45
46
  }
46
- exports.checkDidPlc = checkDidPlc;
47
+ exports.assertDidPlc = assertDidPlc;
48
+ const isBase32Char = (c) => (c >= 0x61 && c <= 0x7a) || (c >= 0x32 && c <= 0x37); // [a-z2-7]
47
49
  //# sourceMappingURL=plc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plc.js","sourceRoot":"","sources":["../../src/methods/plc.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AAGjD,MAAM,cAAc,GAAG,UAAU,CAAA;AAIxB,wCAAc;AAHvB,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAA;AACnD,MAAM,cAAc,GAAG,EAAE,CAAA;AAIzB,SAAgB,QAAQ,CAAC,KAAc;IACrC,wCAAwC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,CAAC;QACH,WAAW,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAVD,4BAUC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,WAAW,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,4BAGC;AAED,SAAgB,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,mBAAmB,cAAc,kBAAkB,CACpD,CAAA;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,CAAS,CAAA;IACb,KAAK,IAAI,CAAC,GAAG,qBAAqB,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACvB,6BAA6B;QAC7B,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;YACrD,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,iCAAiC,CAAC,EAAE,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAxBD,kCAwBC"}
1
+ {"version":3,"file":"plc.js","sourceRoot":"","sources":["../../src/methods/plc.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AAGjD,MAAM,cAAc,GAAG,UAAU,CAAA;AAIxB,wCAAc;AAHvB,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAA;AACnD,MAAM,cAAc,GAAG,EAAE,CAAA;AAIzB,SAAgB,QAAQ,CAAC,KAAc;IACrC,8DAA8D;IAC9D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc;QAAE,OAAO,KAAK,CAAA;IACjD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC;QAAE,OAAO,KAAK,CAAA;IACnD,KAAK,IAAI,CAAC,GAAG,qBAAqB,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;IACtD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AATD,4BASC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,YAAY,CAAC,KAAK,CAAC,CAAA;IACnB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,4BAGC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,8BAAe,CACvB,KAAK,EACL,mBAAmB,cAAc,kBAAkB,CACpD,CAAA;IACH,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAA;IAC5D,CAAC;IAED,2EAA2E;IAE3E,8CAA8C;IAE9C,KAAK,IAAI,CAAC,GAAG,qBAAqB,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5D,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,8BAAe,CAAC,KAAK,EAAE,iCAAiC,CAAC,EAAE,CAAC,CAAA;QACxE,CAAC;IACH,CAAC;AACH,CAAC;AAzBD,oCAyBC;AAED,MAAM,YAAY,GAAG,CAAC,CAAS,EAAW,EAAE,CAC1C,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,CAAC,WAAW"}
@@ -5,7 +5,7 @@ export declare const DID_WEB_PREFIX = "did:web:";
5
5
  */
6
6
  export declare function isDidWeb(input: unknown): input is Did<'web'>;
7
7
  export declare function asDidWeb(input: unknown): Did<'web'>;
8
- export declare function checkDidWeb(input: unknown): asserts input is Did<'web'>;
8
+ export declare function assertDidWeb(input: unknown): asserts input is Did<'web'>;
9
9
  export declare function didWebToUrl(did: string): URL;
10
10
  export declare function urlToDidWeb(url: URL): Did<'web'>;
11
11
  //# sourceMappingURL=web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/methods/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAgB,MAAM,WAAW,CAAA;AAE7C,eAAO,MAAM,cAAc,aAAkC,CAAA;AAE7D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAU5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAGnD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAMvE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAmB5C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAOhD"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/methods/web.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAiB,MAAM,WAAW,CAAA;AAE9C,eAAO,MAAM,cAAc,aAAkC,CAAA;AAE7D;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAU5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAGnD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,CAMxE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAuB5C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAOhD"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.urlToDidWeb = exports.didWebToUrl = exports.checkDidWeb = exports.asDidWeb = exports.isDidWeb = exports.DID_WEB_PREFIX = void 0;
3
+ exports.urlToDidWeb = exports.didWebToUrl = exports.assertDidWeb = exports.asDidWeb = exports.isDidWeb = exports.DID_WEB_PREFIX = void 0;
4
4
  const did_error_js_1 = require("../did-error.js");
5
5
  const did_js_1 = require("../did.js");
6
6
  exports.DID_WEB_PREFIX = `did:web:`;
@@ -12,7 +12,7 @@ function isDidWeb(input) {
12
12
  if (typeof input !== 'string')
13
13
  return false;
14
14
  try {
15
- checkDidWeb(input);
15
+ assertDidWeb(input);
16
16
  return true;
17
17
  }
18
18
  catch {
@@ -21,17 +21,17 @@ function isDidWeb(input) {
21
21
  }
22
22
  exports.isDidWeb = isDidWeb;
23
23
  function asDidWeb(input) {
24
- checkDidWeb(input);
24
+ assertDidWeb(input);
25
25
  return input;
26
26
  }
27
27
  exports.asDidWeb = asDidWeb;
28
- function checkDidWeb(input) {
28
+ function assertDidWeb(input) {
29
29
  if (typeof input !== 'string') {
30
30
  throw new did_error_js_1.InvalidDidError(typeof input, `DID must be a string`);
31
31
  }
32
32
  void didWebToUrl(input);
33
33
  }
34
- exports.checkDidWeb = checkDidWeb;
34
+ exports.assertDidWeb = assertDidWeb;
35
35
  function didWebToUrl(did) {
36
36
  if (!did.startsWith(exports.DID_WEB_PREFIX)) {
37
37
  throw new did_error_js_1.InvalidDidError(did, `did:web must start with ${exports.DID_WEB_PREFIX}`);
@@ -40,11 +40,15 @@ function didWebToUrl(did) {
40
40
  throw new did_error_js_1.InvalidDidError(did, 'did:web MSID must not start with a colon');
41
41
  }
42
42
  // Make sure every char is valid (per DID spec)
43
- (0, did_js_1.checkDidMsid)(did, exports.DID_WEB_PREFIX.length);
43
+ (0, did_js_1.assertDidMsid)(did, exports.DID_WEB_PREFIX.length);
44
44
  try {
45
45
  const msid = did.slice(exports.DID_WEB_PREFIX.length);
46
46
  const parts = msid.split(':').map(decodeURIComponent);
47
- return new URL(`https://${parts.join('/')}`);
47
+ const url = new URL(`https://${parts.join('/')}`);
48
+ if (url.hostname === 'localhost') {
49
+ url.protocol = 'http:';
50
+ }
51
+ return url;
48
52
  }
49
53
  catch (cause) {
50
54
  throw new did_error_js_1.InvalidDidError(did, 'Invalid Web DID', cause);
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/methods/web.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,sCAA6C;AAEhC,QAAA,cAAc,GAAG,UAA+B,CAAA;AAE7D;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,wCAAwC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,CAAC;QACH,WAAW,CAAC,KAAK,CAAC,CAAA;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAVD,4BAUC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,WAAW,CAAC,KAAK,CAAC,CAAA;IAClB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,4BAGC;AAED,SAAgB,WAAW,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,WAAW,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAND,kCAMC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAc,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,2BAA2B,sBAAc,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,sBAAc,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAC9C,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAA;IAC5E,CAAC;IAED,+CAA+C;IAC/C,IAAA,qBAAY,EAAC,GAAG,EAAE,sBAAc,CAAC,MAAM,CAAC,CAAA;IAExC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACrD,OAAO,IAAI,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC;AAnBD,kCAmBC;AAED,SAAgB,WAAW,CAAC,GAAQ;IAClC,MAAM,IAAI,GACR,GAAG,CAAC,QAAQ,KAAK,GAAG;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAExE,OAAO,WAAW,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAC3E,CAAC;AAPD,kCAOC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/methods/web.ts"],"names":[],"mappings":";;;AAAA,kDAAiD;AACjD,sCAA8C;AAEjC,QAAA,cAAc,GAAG,UAA+B,CAAA;AAE7D;;GAEG;AACH,SAAgB,QAAQ,CAAC,KAAc;IACrC,wCAAwC;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAE3C,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,CAAC,CAAA;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAVD,4BAUC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,YAAY,CAAC,KAAK,CAAC,CAAA;IACnB,OAAO,KAAK,CAAA;AACd,CAAC;AAHD,4BAGC;AAED,SAAgB,YAAY,CAAC,KAAc;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,8BAAe,CAAC,OAAO,KAAK,EAAE,sBAAsB,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,WAAW,CAAC,KAAK,CAAC,CAAA;AACzB,CAAC;AAND,oCAMC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAc,CAAC,EAAE,CAAC;QACpC,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,2BAA2B,sBAAc,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,CAAC,sBAAc,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QAC9C,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,0CAA0C,CAAC,CAAA;IAC5E,CAAC;IAED,+CAA+C;IAC/C,IAAA,sBAAa,EAAC,GAAG,EAAE,sBAAc,CAAC,MAAM,CAAC,CAAA;IAEzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,sBAAc,CAAC,MAAM,CAAC,CAAA;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjD,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;YACjC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAA;QACxB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,8BAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;AACH,CAAC;AAvBD,kCAuBC;AAED,SAAgB,WAAW,CAAC,GAAQ;IAClC,MAAM,IAAI,GACR,GAAG,CAAC,QAAQ,KAAK,GAAG;QAClB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAExE,OAAO,WAAW,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AAC3E,CAAC;AAPD,kCAOC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/did",
3
- "version": "0.1.1-rc.1",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "description": "DID resolution and verification library",
6
6
  "keywords": [
package/src/atproto.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import { InvalidDidError } from './did-error.js'
2
2
  import { Did } from './did.js'
3
3
  import {
4
- checkDidPlc,
5
- checkDidWeb,
4
+ assertDidPlc,
5
+ assertDidWeb,
6
6
  DID_PLC_PREFIX,
7
7
  DID_WEB_PREFIX,
8
8
  isDidPlc,
9
- isDidWeb,
10
9
  } from './methods.js'
11
10
 
12
11
  // This file contains atproto-specific DID validation utilities.
@@ -30,17 +29,17 @@ export function isAtprotoDid(input: unknown): input is AtprotoDid {
30
29
  }
31
30
 
32
31
  export function asAtprotoDid(input: unknown): AtprotoDid {
33
- checkAtprotoDid(input)
32
+ assertAtprotoDid(input)
34
33
  return input
35
34
  }
36
35
 
37
- export function checkAtprotoDid(input: unknown): asserts input is AtprotoDid {
36
+ export function assertAtprotoDid(input: unknown): asserts input is AtprotoDid {
38
37
  if (typeof input !== 'string') {
39
38
  throw new InvalidDidError(typeof input, `DID must be a string`)
40
39
  } else if (input.startsWith(DID_PLC_PREFIX)) {
41
- checkDidPlc(input)
40
+ assertDidPlc(input)
42
41
  } else if (input.startsWith(DID_WEB_PREFIX)) {
43
- checkDidWeb(input)
42
+ assertAtprotoDidWeb(input)
44
43
  } else {
45
44
  throw new InvalidDidError(
46
45
  input,
@@ -49,27 +48,37 @@ export function checkAtprotoDid(input: unknown): asserts input is AtprotoDid {
49
48
  }
50
49
  }
51
50
 
52
- /**
53
- * @see {@link https://atproto.com/specs/did#blessed-did-methods}
54
- */
55
- export function isAtprotoDidWeb(input: unknown): input is Did<'web'> {
56
- // Optimization: make cheap checks first
57
- if (typeof input !== 'string') {
58
- return false
59
- }
51
+ export function assertAtprotoDidWeb(
52
+ input: unknown,
53
+ ): asserts input is Did<'web'> {
54
+ assertDidWeb(input)
60
55
 
61
- // Path are not allowed
62
56
  if (input.includes(':', DID_WEB_PREFIX.length)) {
63
- return false
57
+ throw new InvalidDidError(
58
+ input,
59
+ `Atproto does not allow path components in Web DIDs`,
60
+ )
64
61
  }
65
62
 
66
- // Port numbers are not allowed, except for localhost
67
63
  if (
68
64
  input.includes('%3A', DID_WEB_PREFIX.length) &&
69
65
  !input.startsWith('did:web:localhost%3A')
70
66
  ) {
71
- return false
67
+ throw new InvalidDidError(
68
+ input,
69
+ `Atproto does not allow port numbers in Web DIDs, except for localhost`,
70
+ )
72
71
  }
72
+ }
73
73
 
74
- return isDidWeb(input)
74
+ /**
75
+ * @see {@link https://atproto.com/specs/did#blessed-did-methods}
76
+ */
77
+ export function isAtprotoDidWeb(input: unknown): input is Did<'web'> {
78
+ try {
79
+ assertAtprotoDidWeb(input)
80
+ return true
81
+ } catch {
82
+ return false
83
+ }
75
84
  }
@@ -117,35 +117,27 @@ export type DidDocument<Method extends string = string> = z.infer<
117
117
 
118
118
  // @TODO: add other refinements ?
119
119
  export const didDocumentValidator = didDocumentSchema
120
- .superRefine((data, ctx) => {
121
- if (data.service) {
122
- for (let i = 0; i < data.service.length; i++) {
123
- if (data.service[i].id === data.id) {
120
+ // Ensure that every service id is unique
121
+ .superRefine(({ id: did, service }, ctx) => {
122
+ if (service) {
123
+ const visited = new Set()
124
+
125
+ for (let i = 0; i < service.length; i++) {
126
+ const current = service[i]
127
+
128
+ const serviceId = current.id.startsWith('#')
129
+ ? `${did}${current.id}`
130
+ : current.id
131
+
132
+ if (!visited.has(serviceId)) {
133
+ visited.add(serviceId)
134
+ } else {
124
135
  ctx.addIssue({
125
136
  code: z.ZodIssueCode.custom,
126
- message: `Service id must be different from the document id`,
137
+ message: `Duplicate service id (${current.id}) found in the document`,
127
138
  path: ['service', i, 'id'],
128
139
  })
129
140
  }
130
141
  }
131
142
  }
132
143
  })
133
- .superRefine((data, ctx) => {
134
- if (data.service) {
135
- const normalizedIds = data.service.map((s) =>
136
- s.id?.startsWith('#') ? `${data.id}${s.id}` : s.id,
137
- )
138
-
139
- for (let i = 0; i < normalizedIds.length; i++) {
140
- for (let j = i + 1; j < normalizedIds.length; j++) {
141
- if (normalizedIds[i] === normalizedIds[j]) {
142
- ctx.addIssue({
143
- code: z.ZodIssueCode.custom,
144
- message: `Duplicate service id (${normalizedIds[j]}) found in the document`,
145
- path: ['service', j, 'id'],
146
- })
147
- }
148
- }
149
- }
150
- }
151
- })
package/src/did.ts CHANGED
@@ -83,7 +83,7 @@ type AsDidMethodInternal<
83
83
  * Check if the input is a valid DID method name, at the position between
84
84
  * `start` (inclusive) and `end` (exclusive).
85
85
  */
86
- export function checkDidMethod(
86
+ export function assertDidMethod(
87
87
  input: string,
88
88
  start = 0,
89
89
  end = input.length,
@@ -130,7 +130,7 @@ export function extractDidMethod<D extends Did>(did: D) {
130
130
  * Check if the input is a valid DID method-specific identifier, at the position
131
131
  * between `start` (inclusive) and `end` (exclusive).
132
132
  */
133
- export function checkDidMsid(
133
+ export function assertDidMsid(
134
134
  input: string,
135
135
  start = 0,
136
136
  end = input.length,
@@ -207,7 +207,7 @@ export function checkDidMsid(
207
207
  }
208
208
  }
209
209
 
210
- export function checkDid(input: unknown): asserts input is Did {
210
+ export function assertDid(input: unknown): asserts input is Did {
211
211
  if (typeof input !== 'string') {
212
212
  throw new InvalidDidError(typeof input, `DID must be a string`)
213
213
  }
@@ -226,13 +226,13 @@ export function checkDid(input: unknown): asserts input is Did {
226
226
  throw new InvalidDidError(input, `Missing colon after method name`)
227
227
  }
228
228
 
229
- checkDidMethod(input, DID_PREFIX_LENGTH, idSep)
230
- checkDidMsid(input, idSep + 1, length)
229
+ assertDidMethod(input, DID_PREFIX_LENGTH, idSep)
230
+ assertDidMsid(input, idSep + 1, length)
231
231
  }
232
232
 
233
233
  export function isDid(input: unknown): input is Did {
234
234
  try {
235
- checkDid(input)
235
+ assertDid(input)
236
236
  return true
237
237
  } catch (err) {
238
238
  if (err instanceof DidError) {
@@ -245,7 +245,7 @@ export function isDid(input: unknown): input is Did {
245
245
  }
246
246
 
247
247
  export function asDid(input: unknown): Did {
248
- checkDid(input)
248
+ assertDid(input)
249
249
  return input
250
250
  }
251
251
 
@@ -253,7 +253,7 @@ export const didSchema = z
253
253
  .string()
254
254
  .superRefine((value: string, ctx: z.RefinementCtx): value is Did => {
255
255
  try {
256
- checkDid(value)
256
+ assertDid(value)
257
257
  return true
258
258
  } catch (err) {
259
259
  ctx.addIssue({
@@ -8,23 +8,22 @@ const DID_PLC_LENGTH = 32
8
8
  export { DID_PLC_PREFIX }
9
9
 
10
10
  export function isDidPlc(input: unknown): input is Did<'plc'> {
11
- // Optimization: make cheap checks first
11
+ // Optimization: equivalent to try/catch around "assertDidPlc"
12
12
  if (typeof input !== 'string') return false
13
-
14
- try {
15
- checkDidPlc(input)
16
- return true
17
- } catch {
18
- return false
13
+ if (input.length !== DID_PLC_LENGTH) return false
14
+ if (!input.startsWith(DID_PLC_PREFIX)) return false
15
+ for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {
16
+ if (!isBase32Char(input.charCodeAt(i))) return false
19
17
  }
18
+ return true
20
19
  }
21
20
 
22
21
  export function asDidPlc(input: unknown): Did<'plc'> {
23
- checkDidPlc(input)
22
+ assertDidPlc(input)
24
23
  return input
25
24
  }
26
25
 
27
- export function checkDidPlc(input: unknown): asserts input is Did<'plc'> {
26
+ export function assertDidPlc(input: unknown): asserts input is Did<'plc'> {
28
27
  if (typeof input !== 'string') {
29
28
  throw new InvalidDidError(typeof input, `DID must be a string`)
30
29
  }
@@ -40,12 +39,16 @@ export function checkDidPlc(input: unknown): asserts input is Did<'plc'> {
40
39
  throw new InvalidDidError(input, `Invalid did:plc prefix`)
41
40
  }
42
41
 
43
- let c: number
42
+ // The following check is not necessary, as the check below is more strict:
43
+
44
+ // assertDidMsid(input, DID_PLC_PREFIX.length)
45
+
44
46
  for (let i = DID_PLC_PREFIX_LENGTH; i < DID_PLC_LENGTH; i++) {
45
- c = input.charCodeAt(i)
46
- // Base32 encoding ([a-z2-7])
47
- if ((c < 0x61 || c > 0x7a) && (c < 0x32 || c > 0x37)) {
47
+ if (!isBase32Char(input.charCodeAt(i))) {
48
48
  throw new InvalidDidError(input, `Invalid character at position ${i}`)
49
49
  }
50
50
  }
51
51
  }
52
+
53
+ const isBase32Char = (c: number): boolean =>
54
+ (c >= 0x61 && c <= 0x7a) || (c >= 0x32 && c <= 0x37) // [a-z2-7]
@@ -1,5 +1,5 @@
1
1
  import { InvalidDidError } from '../did-error.js'
2
- import { Did, checkDidMsid } from '../did.js'
2
+ import { Did, assertDidMsid } from '../did.js'
3
3
 
4
4
  export const DID_WEB_PREFIX = `did:web:` satisfies Did<'web'>
5
5
 
@@ -11,7 +11,7 @@ export function isDidWeb(input: unknown): input is Did<'web'> {
11
11
  if (typeof input !== 'string') return false
12
12
 
13
13
  try {
14
- checkDidWeb(input)
14
+ assertDidWeb(input)
15
15
  return true
16
16
  } catch {
17
17
  return false
@@ -19,11 +19,11 @@ export function isDidWeb(input: unknown): input is Did<'web'> {
19
19
  }
20
20
 
21
21
  export function asDidWeb(input: unknown): Did<'web'> {
22
- checkDidWeb(input)
22
+ assertDidWeb(input)
23
23
  return input
24
24
  }
25
25
 
26
- export function checkDidWeb(input: unknown): asserts input is Did<'web'> {
26
+ export function assertDidWeb(input: unknown): asserts input is Did<'web'> {
27
27
  if (typeof input !== 'string') {
28
28
  throw new InvalidDidError(typeof input, `DID must be a string`)
29
29
  }
@@ -41,12 +41,16 @@ export function didWebToUrl(did: string): URL {
41
41
  }
42
42
 
43
43
  // Make sure every char is valid (per DID spec)
44
- checkDidMsid(did, DID_WEB_PREFIX.length)
44
+ assertDidMsid(did, DID_WEB_PREFIX.length)
45
45
 
46
46
  try {
47
47
  const msid = did.slice(DID_WEB_PREFIX.length)
48
48
  const parts = msid.split(':').map(decodeURIComponent)
49
- return new URL(`https://${parts.join('/')}`)
49
+ const url = new URL(`https://${parts.join('/')}`)
50
+ if (url.hostname === 'localhost') {
51
+ url.protocol = 'http:'
52
+ }
53
+ return url
50
54
  } catch (cause) {
51
55
  throw new InvalidDidError(did, 'Invalid Web DID', cause)
52
56
  }