@atproto/identity 0.4.11 → 0.5.0-next.0

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.
Files changed (67) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/did/atproto-data.d.ts +1 -1
  3. package/dist/did/atproto-data.d.ts.map +1 -1
  4. package/dist/did/atproto-data.js +16 -61
  5. package/dist/did/atproto-data.js.map +1 -1
  6. package/dist/did/base-resolver.d.ts +1 -1
  7. package/dist/did/base-resolver.d.ts.map +1 -1
  8. package/dist/did/base-resolver.js +11 -53
  9. package/dist/did/base-resolver.js.map +1 -1
  10. package/dist/did/did-resolver.d.ts +2 -2
  11. package/dist/did/did-resolver.d.ts.map +1 -1
  12. package/dist/did/did-resolver.js +10 -20
  13. package/dist/did/did-resolver.js.map +1 -1
  14. package/dist/did/index.d.ts +5 -5
  15. package/dist/did/index.d.ts.map +1 -1
  16. package/dist/did/index.js +5 -21
  17. package/dist/did/index.js.map +1 -1
  18. package/dist/did/memory-cache.d.ts +1 -1
  19. package/dist/did/memory-cache.d.ts.map +1 -1
  20. package/dist/did/memory-cache.js +5 -26
  21. package/dist/did/memory-cache.js.map +1 -1
  22. package/dist/did/plc-resolver.d.ts +2 -2
  23. package/dist/did/plc-resolver.d.ts.map +1 -1
  24. package/dist/did/plc-resolver.js +7 -26
  25. package/dist/did/plc-resolver.js.map +1 -1
  26. package/dist/did/util.js +1 -4
  27. package/dist/did/util.js.map +1 -1
  28. package/dist/did/web-resolver.d.ts +2 -2
  29. package/dist/did/web-resolver.d.ts.map +1 -1
  30. package/dist/did/web-resolver.js +11 -25
  31. package/dist/did/web-resolver.js.map +1 -1
  32. package/dist/errors.js +11 -49
  33. package/dist/errors.js.map +1 -1
  34. package/dist/handle/index.d.ts +1 -1
  35. package/dist/handle/index.d.ts.map +1 -1
  36. package/dist/handle/index.js +6 -31
  37. package/dist/handle/index.js.map +1 -1
  38. package/dist/id-resolver.d.ts +3 -3
  39. package/dist/id-resolver.d.ts.map +1 -1
  40. package/dist/id-resolver.js +5 -21
  41. package/dist/id-resolver.js.map +1 -1
  42. package/dist/index.d.ts +5 -5
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -21
  45. package/dist/index.js.map +1 -1
  46. package/dist/types.js +1 -5
  47. package/dist/types.js.map +1 -1
  48. package/{jest.config.js → jest.config.cjs} +8 -2
  49. package/package.json +15 -9
  50. package/src/did/atproto-data.ts +1 -1
  51. package/src/did/base-resolver.ts +3 -3
  52. package/src/did/did-resolver.ts +8 -5
  53. package/src/did/index.ts +5 -5
  54. package/src/did/memory-cache.ts +1 -1
  55. package/src/did/plc-resolver.ts +3 -3
  56. package/src/did/web-resolver.ts +7 -4
  57. package/src/handle/index.ts +2 -2
  58. package/src/id-resolver.ts +3 -3
  59. package/src/index.ts +5 -5
  60. package/test.log +60 -0
  61. package/tests/did-cache.test.ts +2 -2
  62. package/tests/did-document.test.ts +1 -1
  63. package/tests/did-resolver.test.ts +3 -3
  64. package/tests/handle-resolver.test.ts +5 -3
  65. package/tests/web/db.ts +1 -1
  66. package/tests/web/server.ts +5 -5
  67. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,5 +1,5 @@
1
- import { DidCache } from '../types';
2
- import { BaseResolver } from './base-resolver';
1
+ import { DidCache } from '../types.js';
2
+ import { BaseResolver } from './base-resolver.js';
3
3
  export declare const DOC_PATH = "/.well-known/did.json";
4
4
  export declare class DidWebResolver extends BaseResolver {
5
5
  timeout: number;
@@ -1 +1 @@
1
- {"version":3,"file":"web-resolver.d.ts","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAG9C,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;gBADhB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,YAAA;IAKnB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAgCpD"}
@@ -1,46 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DidWebResolver = exports.DOC_PATH = void 0;
4
- const errors_1 = require("../errors");
5
- const base_resolver_1 = require("./base-resolver");
6
- const util_1 = require("./util");
7
- exports.DOC_PATH = '/.well-known/did.json';
8
- class DidWebResolver extends base_resolver_1.BaseResolver {
1
+ import { PoorlyFormattedDidError, UnsupportedDidWebPathError, } from '../errors.js';
2
+ import { BaseResolver } from './base-resolver.js';
3
+ import { timed } from './util.js';
4
+ export const DOC_PATH = '/.well-known/did.json';
5
+ export class DidWebResolver extends BaseResolver {
9
6
  constructor(timeout, cache) {
10
7
  super(cache);
11
- Object.defineProperty(this, "timeout", {
12
- enumerable: true,
13
- configurable: true,
14
- writable: true,
15
- value: timeout
16
- });
17
- Object.defineProperty(this, "cache", {
18
- enumerable: true,
19
- configurable: true,
20
- writable: true,
21
- value: cache
22
- });
8
+ this.timeout = timeout;
9
+ this.cache = cache;
23
10
  }
24
11
  async resolveNoCheck(did) {
25
12
  const parsedId = did.split(':').slice(2).join(':');
26
13
  const parts = parsedId.split(':').map(decodeURIComponent);
27
14
  let path;
28
15
  if (parts.length < 1) {
29
- throw new errors_1.PoorlyFormattedDidError(did);
16
+ throw new PoorlyFormattedDidError(did);
30
17
  }
31
18
  else if (parts.length === 1) {
32
- path = parts[0] + exports.DOC_PATH;
19
+ path = parts[0] + DOC_PATH;
33
20
  }
34
21
  else {
35
22
  // how we *would* resolve a did:web with path, if atproto supported it
36
23
  //path = parts.join('/') + '/did.json'
37
- throw new errors_1.UnsupportedDidWebPathError(did);
24
+ throw new UnsupportedDidWebPathError(did);
38
25
  }
39
26
  const url = new URL(`https://${path}`);
40
27
  if (url.hostname === 'localhost') {
41
28
  url.protocol = 'http';
42
29
  }
43
- return (0, util_1.timed)(this.timeout, async (signal) => {
30
+ return timed(this.timeout, async (signal) => {
44
31
  const res = await fetch(url, {
45
32
  signal,
46
33
  redirect: 'error',
@@ -53,5 +40,4 @@ class DidWebResolver extends base_resolver_1.BaseResolver {
53
40
  });
54
41
  }
55
42
  }
56
- exports.DidWebResolver = DidWebResolver;
57
43
  //# sourceMappingURL=web-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-resolver.js","sourceRoot":"","sources":["../../src/did/web-resolver.ts"],"names":[],"mappings":";;;AAAA,sCAA+E;AAE/E,mDAA8C;AAC9C,iCAA8B;AAEjB,QAAA,QAAQ,GAAG,uBAAuB,CAAA;AAE/C,MAAa,cAAe,SAAQ,4BAAY;IAC9C,YACS,OAAe,EACf,KAAgB;QAEvB,KAAK,CAAC,KAAK,CAAC,CAAA;QAHZ;;;;mBAAO,OAAO;WAAQ;QACtB;;;;mBAAO,KAAK;WAAW;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,gCAAuB,CAAC,GAAG,CAAC,CAAA;QACxC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,gBAAQ,CAAA;QAC5B,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,sCAAsC;YACtC,MAAM,IAAI,mCAA0B,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,IAAA,YAAK,EAAC,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;AAxCD,wCAwCC","sourcesContent":["import { PoorlyFormattedDidError, UnsupportedDidWebPathError } from '../errors'\nimport { DidCache } from '../types'\nimport { BaseResolver } from './base-resolver'\nimport { timed } from './util'\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;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"]}
package/dist/errors.js CHANGED
@@ -1,70 +1,32 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnsupportedDidWebPathError = exports.PoorlyFormattedDidDocumentError = exports.UnsupportedDidMethodError = exports.PoorlyFormattedDidError = exports.DidNotFoundError = void 0;
4
- class DidNotFoundError extends Error {
1
+ export class DidNotFoundError extends Error {
5
2
  constructor(did) {
6
3
  super(`Could not resolve DID: ${did}`);
7
- Object.defineProperty(this, "did", {
8
- enumerable: true,
9
- configurable: true,
10
- writable: true,
11
- value: did
12
- });
4
+ this.did = did;
13
5
  }
14
6
  }
15
- exports.DidNotFoundError = DidNotFoundError;
16
- class PoorlyFormattedDidError extends Error {
7
+ export class PoorlyFormattedDidError extends Error {
17
8
  constructor(did) {
18
9
  super(`Poorly formatted DID: ${did}`);
19
- Object.defineProperty(this, "did", {
20
- enumerable: true,
21
- configurable: true,
22
- writable: true,
23
- value: did
24
- });
10
+ this.did = did;
25
11
  }
26
12
  }
27
- exports.PoorlyFormattedDidError = PoorlyFormattedDidError;
28
- class UnsupportedDidMethodError extends Error {
13
+ export class UnsupportedDidMethodError extends Error {
29
14
  constructor(did) {
30
15
  super(`Unsupported DID method: ${did}`);
31
- Object.defineProperty(this, "did", {
32
- enumerable: true,
33
- configurable: true,
34
- writable: true,
35
- value: did
36
- });
16
+ this.did = did;
37
17
  }
38
18
  }
39
- exports.UnsupportedDidMethodError = UnsupportedDidMethodError;
40
- class PoorlyFormattedDidDocumentError extends Error {
19
+ export class PoorlyFormattedDidDocumentError extends Error {
41
20
  constructor(did, doc) {
42
21
  super(`Poorly formatted DID Document: ${doc}`);
43
- Object.defineProperty(this, "did", {
44
- enumerable: true,
45
- configurable: true,
46
- writable: true,
47
- value: did
48
- });
49
- Object.defineProperty(this, "doc", {
50
- enumerable: true,
51
- configurable: true,
52
- writable: true,
53
- value: doc
54
- });
22
+ this.did = did;
23
+ this.doc = doc;
55
24
  }
56
25
  }
57
- exports.PoorlyFormattedDidDocumentError = PoorlyFormattedDidDocumentError;
58
- class UnsupportedDidWebPathError extends Error {
26
+ export class UnsupportedDidWebPathError extends Error {
59
27
  constructor(did) {
60
28
  super(`Unsupported did:web paths: ${did}`);
61
- Object.defineProperty(this, "did", {
62
- enumerable: true,
63
- configurable: true,
64
- writable: true,
65
- value: did
66
- });
29
+ this.did = did;
67
30
  }
68
31
  }
69
- exports.UnsupportedDidWebPathError = UnsupportedDidWebPathError;
70
32
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAmB,GAAW;QAC5B,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAA;QAD5B;;;;mBAAO,GAAG;WAAQ;IAE9B,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,uBAAwB,SAAQ,KAAK;IAChD,YAAmB,GAAW;QAC5B,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAA;QAD3B;;;;mBAAO,GAAG;WAAQ;IAE9B,CAAC;CACF;AAJD,0DAIC;AAED,MAAa,yBAA0B,SAAQ,KAAK;IAClD,YAAmB,GAAW;QAC5B,KAAK,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAA;QAD7B;;;;mBAAO,GAAG;WAAQ;IAE9B,CAAC;CACF;AAJD,8DAIC;AAED,MAAa,+BAAgC,SAAQ,KAAK;IACxD,YACS,GAAW,EACX,GAAY;QAEnB,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAA;QAH9C;;;;mBAAO,GAAG;WAAQ;QAClB;;;;mBAAO,GAAG;WAAS;IAGrB,CAAC;CACF;AAPD,0EAOC;AAED,MAAa,0BAA2B,SAAQ,KAAK;IACnD,YAAmB,GAAW;QAC5B,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAA;QADhC;;;;mBAAO,GAAG;WAAQ;IAE9B,CAAC;CACF;AAJD,gEAIC","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;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,4 +1,4 @@
1
- import { HandleResolverOpts } from '../types';
1
+ import { HandleResolverOpts } from '../types.js';
2
2
  export declare class HandleResolver {
3
3
  timeout: number;
4
4
  private backupNameservers;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAK7C,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;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,32 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HandleResolver = void 0;
7
- const promises_1 = __importDefault(require("node:dns/promises"));
1
+ import * as dns from 'node:dns/promises';
8
2
  const SUBDOMAIN = '_atproto';
9
3
  const PREFIX = 'did=';
10
- class HandleResolver {
4
+ export class HandleResolver {
11
5
  constructor(opts = {}) {
12
- Object.defineProperty(this, "timeout", {
13
- enumerable: true,
14
- configurable: true,
15
- writable: true,
16
- value: void 0
17
- });
18
- Object.defineProperty(this, "backupNameservers", {
19
- enumerable: true,
20
- configurable: true,
21
- writable: true,
22
- value: void 0
23
- });
24
- Object.defineProperty(this, "backupNameserverIps", {
25
- enumerable: true,
26
- configurable: true,
27
- writable: true,
28
- value: void 0
29
- });
30
6
  this.timeout = opts.timeout ?? 3000;
31
7
  this.backupNameservers = opts.backupNameservers;
32
8
  }
@@ -48,7 +24,7 @@ class HandleResolver {
48
24
  async resolveDns(handle) {
49
25
  let chunkedResults;
50
26
  try {
51
- chunkedResults = await promises_1.default.resolveTxt(`${SUBDOMAIN}.${handle}`);
27
+ chunkedResults = await dns.resolveTxt(`${SUBDOMAIN}.${handle}`);
52
28
  }
53
29
  catch (err) {
54
30
  return undefined;
@@ -75,7 +51,7 @@ class HandleResolver {
75
51
  const backupIps = await this.getBackupNameserverIps();
76
52
  if (!backupIps || backupIps.length < 1)
77
53
  return undefined;
78
- const resolver = new promises_1.default.Resolver();
54
+ const resolver = new dns.Resolver();
79
55
  resolver.setServers(backupIps);
80
56
  chunkedResults = await resolver.resolveTxt(`${SUBDOMAIN}.${handle}`);
81
57
  }
@@ -97,10 +73,10 @@ class HandleResolver {
97
73
  return undefined;
98
74
  }
99
75
  else if (!this.backupNameserverIps) {
100
- const responses = await Promise.allSettled(this.backupNameservers.map((h) => promises_1.default.lookup(h)));
76
+ const responses = await Promise.allSettled(this.backupNameservers.map((h) => dns.lookup(h)));
101
77
  for (const res of responses) {
102
78
  if (res.status === 'fulfilled') {
103
- this.backupNameserverIps ?? (this.backupNameserverIps = []);
79
+ this.backupNameserverIps ??= [];
104
80
  this.backupNameserverIps.push(res.value.address);
105
81
  }
106
82
  }
@@ -108,5 +84,4 @@ class HandleResolver {
108
84
  return this.backupNameserverIps;
109
85
  }
110
86
  }
111
- exports.HandleResolver = HandleResolver;
112
87
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/handle/index.ts"],"names":[],"mappings":"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","sourcesContent":["import dns from 'node:dns/promises'\nimport { HandleResolverOpts } from '../types'\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,6 +1,6 @@
1
- import { DidResolver } from './did/did-resolver';
2
- import { HandleResolver } from './handle';
3
- import { IdentityResolverOpts } from './types';
1
+ import { DidResolver } from './did/did-resolver.js';
2
+ import { HandleResolver } from './handle/index.js';
3
+ import { IdentityResolverOpts } from './types.js';
4
4
  export declare class IdResolver {
5
5
  handle: HandleResolver;
6
6
  did: DidResolver;
@@ -1 +1 @@
1
- {"version":3,"file":"id-resolver.d.ts","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9C,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;gBAEX,IAAI,GAAE,oBAAyB;CAQ5C"}
@@ -1,29 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IdResolver = void 0;
4
- const did_resolver_1 = require("./did/did-resolver");
5
- const handle_1 = require("./handle");
6
- class IdResolver {
1
+ import { DidResolver } from './did/did-resolver.js';
2
+ import { HandleResolver } from './handle/index.js';
3
+ export class IdResolver {
7
4
  constructor(opts = {}) {
8
- Object.defineProperty(this, "handle", {
9
- enumerable: true,
10
- configurable: true,
11
- writable: true,
12
- value: void 0
13
- });
14
- Object.defineProperty(this, "did", {
15
- enumerable: true,
16
- configurable: true,
17
- writable: true,
18
- value: void 0
19
- });
20
5
  const { timeout = 3000, plcUrl, didCache } = opts;
21
- this.handle = new handle_1.HandleResolver({
6
+ this.handle = new HandleResolver({
22
7
  timeout,
23
8
  backupNameservers: opts.backupNameservers,
24
9
  });
25
- this.did = new did_resolver_1.DidResolver({ timeout, plcUrl, didCache });
10
+ this.did = new DidResolver({ timeout, plcUrl, didCache });
26
11
  }
27
12
  }
28
- exports.IdResolver = IdResolver;
29
13
  //# sourceMappingURL=id-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"id-resolver.js","sourceRoot":"","sources":["../src/id-resolver.ts"],"names":[],"mappings":";;;AAAA,qDAAgD;AAChD,qCAAyC;AAGzC,MAAa,UAAU;IAIrB,YAAY,OAA6B,EAAE;QAHpC;;;;;WAAsB;QACtB;;;;;WAAgB;QAGrB,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QACjD,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,CAAC;YAC/B,OAAO;YACP,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,IAAI,0BAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC3D,CAAC;CACF;AAZD,gCAYC","sourcesContent":["import { DidResolver } from './did/did-resolver'\nimport { HandleResolver } from './handle'\nimport { IdentityResolverOpts } from './types'\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,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"]}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- export * from './did';
2
- export * from './handle';
3
- export * from './id-resolver';
4
- export * from './errors';
5
- export * from './types';
1
+ export * from './did/index.js';
2
+ export * from './handle/index.js';
3
+ export * from './id-resolver.js';
4
+ export * from './errors.js';
5
+ export * from './types.js';
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAA;AACrB,cAAc,UAAU,CAAA;AACxB,cAAc,eAAe,CAAA;AAC7B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
package/dist/index.js CHANGED
@@ -1,22 +1,6 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./did"), exports);
18
- __exportStar(require("./handle"), exports);
19
- __exportStar(require("./id-resolver"), exports);
20
- __exportStar(require("./errors"), exports);
21
- __exportStar(require("./types"), exports);
1
+ export * from './did/index.js';
2
+ export * from './handle/index.js';
3
+ export * from './id-resolver.js';
4
+ export * from './errors.js';
5
+ export * from './types.js';
22
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAqB;AACrB,2CAAwB;AACxB,gDAA6B;AAC7B,2CAAwB;AACxB,0CAAuB","sourcesContent":["export * from './did'\nexport * from './handle'\nexport * from './id-resolver'\nexport * from './errors'\nexport * from './types'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA","sourcesContent":["export * from './did/index.js'\nexport * from './handle/index.js'\nexport * from './id-resolver.js'\nexport * from './errors.js'\nexport * from './types.js'\n"]}
package/dist/types.js CHANGED
@@ -1,6 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.didDocument = void 0;
4
- var common_web_1 = require("@atproto/common-web");
5
- Object.defineProperty(exports, "didDocument", { enumerable: true, get: function () { return common_web_1.didDocument; } });
1
+ export { didDocument } from '@atproto/common-web';
6
2
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAEA,kDAAiD;AAAxC,yGAAA,WAAW,OAAA","sourcesContent":["import { DidDocument } from '@atproto/common-web'\n\nexport { didDocument } from '@atproto/common-web'\nexport type { DidDocument } from '@atproto/common-web'\n\nexport type IdentityResolverOpts = {\n timeout?: number\n plcUrl?: string\n didCache?: DidCache\n backupNameservers?: string[]\n}\n\nexport type HandleResolverOpts = {\n timeout?: number\n backupNameservers?: string[]\n}\n\nexport type DidResolverOpts = {\n timeout?: number\n plcUrl?: string\n didCache?: DidCache\n}\n\nexport type AtprotoData = {\n did: string\n signingKey: string\n handle: string\n pds: string\n}\n\nexport type CacheResult = {\n did: string\n doc: DidDocument\n updatedAt: number\n stale: boolean\n expired: boolean\n}\n\nexport interface DidCache {\n cacheDid(\n did: string,\n doc: DidDocument,\n prevResult?: CacheResult,\n ): Promise<void>\n checkCache(did: string): Promise<CacheResult | null>\n refreshCache(\n did: string,\n getDoc: () => Promise<DidDocument | null>,\n prevResult?: CacheResult,\n ): Promise<void>\n clearEntry(did: string): Promise<void>\n clear(): Promise<void>\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA","sourcesContent":["import { DidDocument } from '@atproto/common-web'\n\nexport { didDocument } from '@atproto/common-web'\nexport type { DidDocument } from '@atproto/common-web'\n\nexport type IdentityResolverOpts = {\n timeout?: number\n plcUrl?: string\n didCache?: DidCache\n backupNameservers?: string[]\n}\n\nexport type HandleResolverOpts = {\n timeout?: number\n backupNameservers?: string[]\n}\n\nexport type DidResolverOpts = {\n timeout?: number\n plcUrl?: string\n didCache?: DidCache\n}\n\nexport type AtprotoData = {\n did: string\n signingKey: string\n handle: string\n pds: string\n}\n\nexport type CacheResult = {\n did: string\n doc: DidDocument\n updatedAt: number\n stale: boolean\n expired: boolean\n}\n\nexport interface DidCache {\n cacheDid(\n did: string,\n doc: DidDocument,\n prevResult?: CacheResult,\n ): Promise<void>\n checkCache(did: string): Promise<CacheResult | null>\n refreshCache(\n did: string,\n getDoc: () => Promise<DidDocument | null>,\n prevResult?: CacheResult,\n ): Promise<void>\n clearEntry(did: string): Promise<void>\n clear(): Promise<void>\n}\n"]}
@@ -1,8 +1,14 @@
1
1
  /** @type {import('jest').Config} */
2
2
  module.exports = {
3
3
  displayName: 'Identity',
4
- transform: { '^.+\\.(t|j)s$': '@swc/jest' },
5
- transformIgnorePatterns: ['/node_modules/.pnpm/(?!(get-port)@)'],
4
+ transform: {
5
+ '^.+\\.(t|j)s$': [
6
+ '@swc/jest',
7
+ { jsc: { transform: {} }, module: { type: 'es6' } },
8
+ ],
9
+ },
10
+ extensionsToTreatAsEsm: ['.ts'],
11
+ transformIgnorePatterns: [],
6
12
  setupFiles: ['<rootDir>/../../jest.setup.ts'],
7
13
  moduleNameMapper: { '^(\\.\\.?\\/.+)\\.js$': ['$1.ts', '$1.js'] },
8
14
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/identity",
3
- "version": "0.4.11",
3
+ "version": "0.5.0-next.0",
4
4
  "license": "MIT",
5
5
  "description": "Library for decentralized identities in atproto using DIDs and handles",
6
6
  "keywords": [
@@ -14,26 +14,32 @@
14
14
  "url": "https://github.com/bluesky-social/atproto",
15
15
  "directory": "packages/identity"
16
16
  },
17
- "main": "dist/index.js",
18
- "types": "dist/index.d.ts",
19
17
  "engines": {
20
- "node": ">=18.7.0"
18
+ "node": ">=22"
21
19
  },
22
20
  "dependencies": {
23
- "@atproto/common-web": "^0.4.16",
24
- "@atproto/crypto": "^0.4.5"
21
+ "@atproto/common-web": "^0.5.0-next.0",
22
+ "@atproto/crypto": "^0.5.0-next.0"
25
23
  },
26
24
  "devDependencies": {
27
25
  "@did-plc/lib": "^0.0.1",
28
26
  "@did-plc/server": "^0.0.1",
27
+ "@jest/globals": "^30.0.0",
29
28
  "cors": "^2.8.5",
30
29
  "express": "^4.18.2",
31
30
  "get-port": "^6.1.2",
32
- "jest": "^28.1.2",
33
- "typescript": "^5.6.3"
31
+ "jest": "^30.0.0",
32
+ "typescript": "^6.0.3"
33
+ },
34
+ "type": "module",
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "default": "./dist/index.js"
39
+ }
34
40
  },
35
41
  "scripts": {
36
- "test": "jest",
42
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest",
37
43
  "test:log": "cat test.log | pino-pretty",
38
44
  "build": "tsc --build tsconfig.build.json"
39
45
  }
@@ -7,7 +7,7 @@ import {
7
7
  getSigningKey,
8
8
  } from '@atproto/common-web'
9
9
  import * as crypto from '@atproto/crypto'
10
- import { AtprotoData, DidDocument } from '../types'
10
+ import { AtprotoData, DidDocument } from '../types.js'
11
11
 
12
12
  export {
13
13
  getDid,
@@ -1,14 +1,14 @@
1
1
  import { check } from '@atproto/common-web'
2
2
  import * as crypto from '@atproto/crypto'
3
- import { DidNotFoundError, PoorlyFormattedDidDocumentError } from '../errors'
3
+ import { DidNotFoundError, PoorlyFormattedDidDocumentError } from '../errors.js'
4
4
  import {
5
5
  AtprotoData,
6
6
  CacheResult,
7
7
  DidCache,
8
8
  DidDocument,
9
9
  didDocument,
10
- } from '../types'
11
- import * as atprotoData from './atproto-data'
10
+ } from '../types.js'
11
+ import * as atprotoData from './atproto-data.js'
12
12
 
13
13
  export abstract class BaseResolver {
14
14
  constructor(public cache?: DidCache) {}
@@ -1,8 +1,11 @@
1
- import { PoorlyFormattedDidError, UnsupportedDidMethodError } from '../errors'
2
- import { DidResolverOpts } from '../types'
3
- import { BaseResolver } from './base-resolver'
4
- import { DidPlcResolver } from './plc-resolver'
5
- import { DidWebResolver } from './web-resolver'
1
+ import {
2
+ PoorlyFormattedDidError,
3
+ UnsupportedDidMethodError,
4
+ } from '../errors.js'
5
+ import { DidResolverOpts } from '../types.js'
6
+ import { BaseResolver } from './base-resolver.js'
7
+ import { DidPlcResolver } from './plc-resolver.js'
8
+ import { DidWebResolver } from './web-resolver.js'
6
9
 
7
10
  export class DidResolver extends BaseResolver {
8
11
  methods: Map<string, BaseResolver>
package/src/did/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- export * from './web-resolver'
2
- export * from './plc-resolver'
3
- export * from './did-resolver'
4
- export * from './atproto-data'
5
- export * from './memory-cache'
1
+ export * from './web-resolver.js'
2
+ export * from './plc-resolver.js'
3
+ export * from './did-resolver.js'
4
+ export * from './atproto-data.js'
5
+ export * from './memory-cache.js'
@@ -1,5 +1,5 @@
1
1
  import { DAY, HOUR } from '@atproto/common-web'
2
- import { CacheResult, DidCache, DidDocument } from '../types'
2
+ import { CacheResult, DidCache, DidDocument } from '../types.js'
3
3
 
4
4
  type CacheVal = {
5
5
  doc: DidDocument
@@ -1,6 +1,6 @@
1
- import { DidCache } from '../types'
2
- import { BaseResolver } from './base-resolver'
3
- import { timed } from './util'
1
+ import { DidCache } from '../types.js'
2
+ import { BaseResolver } from './base-resolver.js'
3
+ import { timed } from './util.js'
4
4
 
5
5
  export class DidPlcResolver extends BaseResolver {
6
6
  constructor(
@@ -1,7 +1,10 @@
1
- import { PoorlyFormattedDidError, UnsupportedDidWebPathError } from '../errors'
2
- import { DidCache } from '../types'
3
- import { BaseResolver } from './base-resolver'
4
- import { timed } from './util'
1
+ import {
2
+ PoorlyFormattedDidError,
3
+ UnsupportedDidWebPathError,
4
+ } from '../errors.js'
5
+ import { DidCache } from '../types.js'
6
+ import { BaseResolver } from './base-resolver.js'
7
+ import { timed } from './util.js'
5
8
 
6
9
  export const DOC_PATH = '/.well-known/did.json'
7
10
 
@@ -1,5 +1,5 @@
1
- import dns from 'node:dns/promises'
2
- import { HandleResolverOpts } from '../types'
1
+ import * as dns from 'node:dns/promises'
2
+ import { HandleResolverOpts } from '../types.js'
3
3
 
4
4
  const SUBDOMAIN = '_atproto'
5
5
  const PREFIX = 'did='
@@ -1,6 +1,6 @@
1
- import { DidResolver } from './did/did-resolver'
2
- import { HandleResolver } from './handle'
3
- import { IdentityResolverOpts } from './types'
1
+ import { DidResolver } from './did/did-resolver.js'
2
+ import { HandleResolver } from './handle/index.js'
3
+ import { IdentityResolverOpts } from './types.js'
4
4
 
5
5
  export class IdResolver {
6
6
  public handle: HandleResolver