@atproto/lex-client 0.1.5 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/agent.d.ts +1 -1
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js.map +1 -1
  5. package/dist/client.d.ts +42 -21
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +97 -16
  8. package/dist/client.js.map +1 -1
  9. package/dist/errors.d.ts +6 -4
  10. package/dist/errors.d.ts.map +1 -1
  11. package/dist/errors.js +3 -3
  12. package/dist/errors.js.map +1 -1
  13. package/dist/response.d.ts +3 -2
  14. package/dist/response.d.ts.map +1 -1
  15. package/dist/response.js +2 -1
  16. package/dist/response.js.map +1 -1
  17. package/dist/types.d.ts +1 -1
  18. package/dist/types.d.ts.map +1 -1
  19. package/dist/types.js.map +1 -1
  20. package/dist/util.d.ts +6 -2
  21. package/dist/util.d.ts.map +1 -1
  22. package/dist/util.js +25 -0
  23. package/dist/util.js.map +1 -1
  24. package/dist/write-operation-builder.d.ts +3 -2
  25. package/dist/write-operation-builder.d.ts.map +1 -1
  26. package/dist/write-operation-builder.js +2 -2
  27. package/dist/write-operation-builder.js.map +1 -1
  28. package/dist/xrpc.d.ts +8 -6
  29. package/dist/xrpc.d.ts.map +1 -1
  30. package/dist/xrpc.js +1 -1
  31. package/dist/xrpc.js.map +1 -1
  32. package/package.json +11 -14
  33. package/src/agent.test.ts +0 -216
  34. package/src/agent.ts +0 -186
  35. package/src/client.ts +0 -1086
  36. package/src/errors.test.ts +0 -626
  37. package/src/errors.ts +0 -570
  38. package/src/index.ts +0 -6
  39. package/src/lexicons/com/atproto/repo/applyWrites.defs.ts +0 -201
  40. package/src/lexicons/com/atproto/repo/applyWrites.ts +0 -6
  41. package/src/lexicons/com/atproto/repo/createRecord.defs.ts +0 -58
  42. package/src/lexicons/com/atproto/repo/createRecord.ts +0 -6
  43. package/src/lexicons/com/atproto/repo/defs.defs.ts +0 -28
  44. package/src/lexicons/com/atproto/repo/defs.ts +0 -5
  45. package/src/lexicons/com/atproto/repo/deleteRecord.defs.ts +0 -52
  46. package/src/lexicons/com/atproto/repo/deleteRecord.ts +0 -6
  47. package/src/lexicons/com/atproto/repo/getRecord.defs.ts +0 -37
  48. package/src/lexicons/com/atproto/repo/getRecord.ts +0 -6
  49. package/src/lexicons/com/atproto/repo/listRecords.defs.ts +0 -65
  50. package/src/lexicons/com/atproto/repo/listRecords.ts +0 -6
  51. package/src/lexicons/com/atproto/repo/putRecord.defs.ts +0 -59
  52. package/src/lexicons/com/atproto/repo/putRecord.ts +0 -6
  53. package/src/lexicons/com/atproto/repo/uploadBlob.defs.ts +0 -35
  54. package/src/lexicons/com/atproto/repo/uploadBlob.ts +0 -6
  55. package/src/lexicons/com/atproto/repo.ts +0 -12
  56. package/src/lexicons/com/atproto/sync/getBlob.defs.ts +0 -37
  57. package/src/lexicons/com/atproto/sync/getBlob.ts +0 -6
  58. package/src/lexicons/com/atproto/sync.ts +0 -5
  59. package/src/lexicons/com/atproto.ts +0 -6
  60. package/src/lexicons/com.ts +0 -5
  61. package/src/lexicons/index.ts +0 -5
  62. package/src/response.bench.ts +0 -113
  63. package/src/response.ts +0 -366
  64. package/src/types.ts +0 -71
  65. package/src/util.test.ts +0 -333
  66. package/src/util.ts +0 -182
  67. package/src/write-operation-builder.ts +0 -110
  68. package/src/www-authenticate.test.ts +0 -227
  69. package/src/www-authenticate.ts +0 -101
  70. package/src/xrpc.test.ts +0 -1450
  71. package/src/xrpc.ts +0 -446
  72. package/tsconfig.build.json +0 -12
  73. package/tsconfig.json +0 -7
  74. package/tsconfig.tests.json +0 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @atproto/lex-client
2
2
 
3
+ ## 0.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#5099](https://github.com/bluesky-social/atproto/pull/5099) [`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Update TypeScript build to rely on references to composite internal projects
8
+
9
+ - [#5099](https://github.com/bluesky-social/atproto/pull/5099) [`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Build using `verbatimModuleSyntax`, reducing runtime import graph
10
+
11
+ - [#5099](https://github.com/bluesky-social/atproto/pull/5099) [`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Bundle only necessary files in the NPM tarball, including the `CHANGELOG.md` and `README.md` files (if present).
12
+
13
+ - Updated dependencies [[`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07), [`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07), [`b43ec31`](https://github.com/bluesky-social/atproto/commit/b43ec31f247f4461725b01226885f88bd430ca07)]:
14
+ - @atproto/lex-schema@0.1.6
15
+ - @atproto/lex-data@0.1.4
16
+ - @atproto/lex-json@0.1.3
17
+
18
+ ## 0.2.0
19
+
20
+ ### Minor Changes
21
+
22
+ - [#5157](https://github.com/bluesky-social/atproto/pull/5157) [`8bcba69`](https://github.com/bluesky-social/atproto/commit/8bcba69cf1f02d09e07b51ce091918312029df63) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Update `list()` interface to return `{ valid: boolean; value: InferredType }`
23
+
24
+ ### Patch Changes
25
+
26
+ - [#5157](https://github.com/bluesky-social/atproto/pull/5157) [`8bcba69`](https://github.com/bluesky-social/atproto/commit/8bcba69cf1f02d09e07b51ce091918312029df63) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `listAll()` method
27
+
3
28
  ## 0.1.5
4
29
 
5
30
  ### Patch Changes
package/dist/agent.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { DidString } from '@atproto/lex-schema';
1
+ import type { DidString } from '@atproto/lex-schema';
2
2
  /**
3
3
  * A function that performs HTTP requests towards a service endpoint.
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG;AACzB;;;;GAIG;AACH,IAAI,EAAE,IAAI,MAAM,EAAE,EAClB,IAAI,EAAE,WAAW,KACd,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,KAAK;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAA;IACxB,oDAAoD;IACpD,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAUtD;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IAEf;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IAErB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,GAAG,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,YAAY,EACvD,OAAO,EAAE,CAAC,GACT,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,KAAK,CAAA"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,YAAY,GAAG;AACzB;;;;GAIG;AACH,IAAI,EAAE,IAAI,MAAM,EAAE,EAClB,IAAI,EAAE,WAAW,KACd,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,KAAK;IACpB,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAA;IACxB,oDAAoD;IACpD,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAUtD;AAED,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,GAAG,CAAC,EAAE,SAAS,CAAA;IAEf;;;;OAIG;IACH,OAAO,EAAE,MAAM,GAAG,GAAG,CAAA;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAA;IAErB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,GAAG,CAAA;AAEpE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,KAAK,GAAG,YAAY,EACvD,OAAO,EAAE,CAAC,GACT,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,KAAK,CAAA"}
package/dist/agent.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AA0DA,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,cAAc,IAAI,KAAK;QACvB,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU;QACxC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;YAChB,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CACjC,CAAA;AACH,CAAC;AAiED,MAAM,UAAU,UAAU,CAAC,OAA6B;IACtD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,UAAU;QAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE;QAC3C,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,GAAG;YACrD,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;YACtC,CAAC,CAAC,OAAO,CAAA;IAEf,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IAElC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,MAAM,CAAA;IAEpD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA;IACrE,CAAC;IAED,OAAO;QACL,IAAI,GAAG;YACL,OAAO,MAAM,CAAC,GAAG,CAAA;QACnB,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI;YAC3B,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC5C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAA;YAEpC,OAAO,KAAK,CACV,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EACtB,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACvD,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CACnB,cAA2B,EAC3B,cAA2B;IAE3B,8EAA8E;IAC9E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;IAE1C,MAAM,SAAS,GACb,cAAc,YAAY,OAAO;QAC/B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;IAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import { DidString } from '@atproto/lex-schema'\n\n/**\n * A function that performs HTTP requests towards a service endpoint.\n *\n * The handler is responsible for adding the origin (protocol, hostname, and\n * port) to the provided path, typically based on authentication or service\n * configuration. The handler can also be responsible for adding any necessary\n * headers, such as authorization tokens.\n *\n * @param path - The URL path (pathname + query parameters) without the origin\n * @param init - Standard fetch RequestInit options\n * @returns A Promise resolving to the HTTP Response\n */\nexport type FetchHandler = (\n /**\n * The URL (pathname + query parameters) to make the request to, without the\n * origin. The origin (protocol, hostname, and port) must be added by this\n * {@link FetchHandler}, typically based on authentication or other factors.\n */\n path: `/${string}`,\n init: RequestInit,\n) => Promise<Response>\n\n/**\n * Core interface for making XRPC requests towards a specific service.\n *\n * An {@link Agent} encapsulates an identity and request handling for AT\n * Protocol operations. Agents will typically handle authentication, service URL\n * resolution, and other request configuration, allowing client code to make\n * requests without needing to manage these details directly. The key component\n * of an Agent is the {@link FetchHandler}, which is responsible for\n * constructing the full request URL and adding any necessary headers or\n * authentication tokens. The Agent's `did` property represents the\n * authenticated user's DID, if available, and can be used for operations that\n * require knowledge of the user's identity (such as creating AT Protocol\n * records).\n *\n * @see {@link buildAgent} for creating (simple) Agent instances.\n *\n * @example\n * ```typescript\n * const agent: Agent = {\n * did: 'did:plc:example123',\n * fetchHandler: async (path, init) => {\n * const url = new URL(path, 'https://bsky.social')\n * return fetch(url, init)\n * }\n * }\n * ```\n */\nexport interface Agent {\n /** The DID of the authenticated user, or `undefined` if unauthenticated. */\n readonly did?: DidString\n /** The fetch handler used to make HTTP requests. */\n fetchHandler: FetchHandler\n}\n\nexport function isAgent(value: unknown): value is Agent {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'fetchHandler' in value &&\n typeof value.fetchHandler === 'function' &&\n (!('did' in value) ||\n value.did === undefined ||\n typeof value.did === 'string')\n )\n}\n\nexport type AgentConfig = {\n /**\n * The identifier (DID) of the user represented by this agent.\n */\n did?: DidString\n\n /**\n * The service URL to make requests to. This can be a string, URL, or a\n * function that returns a string or URL. This is useful for dynamic URLs,\n * such as a service URL that changes based on authentication.\n */\n service: string | URL\n\n /**\n * Optional headers to include with every request made by this agent, unless\n * overridden by the request-specific headers provided to the fetch handler.\n */\n headers?: HeadersInit\n\n /**\n * Bring your own fetch implementation. Typically useful for testing, logging,\n * mocking, or adding retries, session management, signatures, proof of\n * possession (DPoP), SSRF protection, etc. Defaults to the global `fetch`\n * function.\n */\n fetch?: typeof globalThis.fetch\n}\n\n/**\n * Options for creating an Agent.\n *\n * Can be a full {@link AgentConfig} object, or a simple service URL string/{@link URL}.\n */\nexport type AgentOptions = AgentConfig | FetchHandler | string | URL\n\n/**\n * Creates an {@link Agent} from various input types.\n *\n * This factory function accepts an existing Agent (returned as-is), a service\n * URL, or a full configuration object. It handles the common case of creating\n * an unauthenticated agent from just a service URL.\n *\n * @param options - Agent instance, configuration object, or service URL\n * @returns A configured Agent ready for making requests\n * @throws {TypeError} If fetch() is not available in the environment\n *\n * @example // From URL string\n * ```typescript\n * const agent = buildAgent('https://public.api.bsky.app')\n * ```\n *\n * @example // From configuration\n * ```typescript\n * const agent = buildAgent({\n * did: 'did:plc:example',\n * service: 'https://bsky.social',\n * headers: { 'Authorization': 'Bearer ...' }\n * })\n * ```\n */\nexport function buildAgent<O extends Agent | AgentOptions>(\n options: O,\n): O extends Agent ? O : Agent\nexport function buildAgent(options: Agent | AgentOptions): Agent {\n const config: Agent | AgentConfig =\n typeof options === 'function'\n ? { did: undefined, fetchHandler: options }\n : typeof options === 'string' || options instanceof URL\n ? { did: undefined, service: options }\n : options\n\n if (isAgent(config)) return config\n\n const { service, fetch = globalThis.fetch } = config\n\n if (typeof fetch !== 'function') {\n throw new TypeError('fetch() is not available in this environment')\n }\n\n return {\n get did() {\n return config.did\n },\n\n async fetchHandler(path, init) {\n const headers =\n config.headers != null && init.headers != null\n ? mergeHeaders(config.headers, init.headers)\n : config.headers || init.headers\n\n return fetch(\n new URL(path, service),\n headers !== init.headers ? { ...init, headers } : init,\n )\n },\n }\n}\n\nfunction mergeHeaders(\n defaultHeaders: HeadersInit,\n requestHeaders: HeadersInit,\n): Headers {\n // We don't want to alter the original Headers objects, so we create a new one\n const result = new Headers(defaultHeaders)\n\n const overrides =\n requestHeaders instanceof Headers\n ? requestHeaders\n : new Headers(requestHeaders)\n\n for (const [key, value] of overrides.entries()) {\n result.set(key, value)\n }\n\n return result\n}\n"]}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AA0DA,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,cAAc,IAAI,KAAK;QACvB,OAAO,KAAK,CAAC,YAAY,KAAK,UAAU;QACxC,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;YAChB,KAAK,CAAC,GAAG,KAAK,SAAS;YACvB,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CACjC,CAAA;AACH,CAAC;AAiED,MAAM,UAAU,UAAU,CAAC,OAA6B;IACtD,MAAM,MAAM,GACV,OAAO,OAAO,KAAK,UAAU;QAC3B,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE;QAC3C,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,GAAG;YACrD,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;YACtC,CAAC,CAAC,OAAO,CAAA;IAEf,IAAI,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAA;IAElC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,MAAM,CAAA;IAEpD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA;IACrE,CAAC;IAED,OAAO;QACL,IAAI,GAAG;YACL,OAAO,MAAM,CAAC,GAAG,CAAA;QACnB,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI;YAC3B,MAAM,OAAO,GACX,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;gBAC5C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;gBAC5C,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAA;YAEpC,OAAO,KAAK,CACV,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EACtB,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACvD,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,YAAY,CACnB,cAA2B,EAC3B,cAA2B;IAE3B,8EAA8E;IAC9E,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;IAE1C,MAAM,SAAS,GACb,cAAc,YAAY,OAAO;QAC/B,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;IAEjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC","sourcesContent":["import type { DidString } from '@atproto/lex-schema'\n\n/**\n * A function that performs HTTP requests towards a service endpoint.\n *\n * The handler is responsible for adding the origin (protocol, hostname, and\n * port) to the provided path, typically based on authentication or service\n * configuration. The handler can also be responsible for adding any necessary\n * headers, such as authorization tokens.\n *\n * @param path - The URL path (pathname + query parameters) without the origin\n * @param init - Standard fetch RequestInit options\n * @returns A Promise resolving to the HTTP Response\n */\nexport type FetchHandler = (\n /**\n * The URL (pathname + query parameters) to make the request to, without the\n * origin. The origin (protocol, hostname, and port) must be added by this\n * {@link FetchHandler}, typically based on authentication or other factors.\n */\n path: `/${string}`,\n init: RequestInit,\n) => Promise<Response>\n\n/**\n * Core interface for making XRPC requests towards a specific service.\n *\n * An {@link Agent} encapsulates an identity and request handling for AT\n * Protocol operations. Agents will typically handle authentication, service URL\n * resolution, and other request configuration, allowing client code to make\n * requests without needing to manage these details directly. The key component\n * of an Agent is the {@link FetchHandler}, which is responsible for\n * constructing the full request URL and adding any necessary headers or\n * authentication tokens. The Agent's `did` property represents the\n * authenticated user's DID, if available, and can be used for operations that\n * require knowledge of the user's identity (such as creating AT Protocol\n * records).\n *\n * @see {@link buildAgent} for creating (simple) Agent instances.\n *\n * @example\n * ```typescript\n * const agent: Agent = {\n * did: 'did:plc:example123',\n * fetchHandler: async (path, init) => {\n * const url = new URL(path, 'https://bsky.social')\n * return fetch(url, init)\n * }\n * }\n * ```\n */\nexport interface Agent {\n /** The DID of the authenticated user, or `undefined` if unauthenticated. */\n readonly did?: DidString\n /** The fetch handler used to make HTTP requests. */\n fetchHandler: FetchHandler\n}\n\nexport function isAgent(value: unknown): value is Agent {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'fetchHandler' in value &&\n typeof value.fetchHandler === 'function' &&\n (!('did' in value) ||\n value.did === undefined ||\n typeof value.did === 'string')\n )\n}\n\nexport type AgentConfig = {\n /**\n * The identifier (DID) of the user represented by this agent.\n */\n did?: DidString\n\n /**\n * The service URL to make requests to. This can be a string, URL, or a\n * function that returns a string or URL. This is useful for dynamic URLs,\n * such as a service URL that changes based on authentication.\n */\n service: string | URL\n\n /**\n * Optional headers to include with every request made by this agent, unless\n * overridden by the request-specific headers provided to the fetch handler.\n */\n headers?: HeadersInit\n\n /**\n * Bring your own fetch implementation. Typically useful for testing, logging,\n * mocking, or adding retries, session management, signatures, proof of\n * possession (DPoP), SSRF protection, etc. Defaults to the global `fetch`\n * function.\n */\n fetch?: typeof globalThis.fetch\n}\n\n/**\n * Options for creating an Agent.\n *\n * Can be a full {@link AgentConfig} object, or a simple service URL string/{@link URL}.\n */\nexport type AgentOptions = AgentConfig | FetchHandler | string | URL\n\n/**\n * Creates an {@link Agent} from various input types.\n *\n * This factory function accepts an existing Agent (returned as-is), a service\n * URL, or a full configuration object. It handles the common case of creating\n * an unauthenticated agent from just a service URL.\n *\n * @param options - Agent instance, configuration object, or service URL\n * @returns A configured Agent ready for making requests\n * @throws {TypeError} If fetch() is not available in the environment\n *\n * @example // From URL string\n * ```typescript\n * const agent = buildAgent('https://public.api.bsky.app')\n * ```\n *\n * @example // From configuration\n * ```typescript\n * const agent = buildAgent({\n * did: 'did:plc:example',\n * service: 'https://bsky.social',\n * headers: { 'Authorization': 'Bearer ...' }\n * })\n * ```\n */\nexport function buildAgent<O extends Agent | AgentOptions>(\n options: O,\n): O extends Agent ? O : Agent\nexport function buildAgent(options: Agent | AgentOptions): Agent {\n const config: Agent | AgentConfig =\n typeof options === 'function'\n ? { did: undefined, fetchHandler: options }\n : typeof options === 'string' || options instanceof URL\n ? { did: undefined, service: options }\n : options\n\n if (isAgent(config)) return config\n\n const { service, fetch = globalThis.fetch } = config\n\n if (typeof fetch !== 'function') {\n throw new TypeError('fetch() is not available in this environment')\n }\n\n return {\n get did() {\n return config.did\n },\n\n async fetchHandler(path, init) {\n const headers =\n config.headers != null && init.headers != null\n ? mergeHeaders(config.headers, init.headers)\n : config.headers || init.headers\n\n return fetch(\n new URL(path, service),\n headers !== init.headers ? { ...init, headers } : init,\n )\n },\n }\n}\n\nfunction mergeHeaders(\n defaultHeaders: HeadersInit,\n requestHeaders: HeadersInit,\n): Headers {\n // We don't want to alter the original Headers objects, so we create a new one\n const result = new Headers(defaultHeaders)\n\n const overrides =\n requestHeaders instanceof Headers\n ? requestHeaders\n : new Headers(requestHeaders)\n\n for (const [key, value] of overrides.entries()) {\n result.set(key, value)\n }\n\n return result\n}\n"]}
package/dist/client.d.ts CHANGED
@@ -1,20 +1,21 @@
1
- import { LexMap, LexValue, TypedLexMap } from '@atproto/lex-data';
2
- import { AtIdentifierString, AtUriString, CidString, DidString, Infer, InferMethodInputBody, InferMethodOutputBody, InferRecordKey, LexiconRecordKey, Main, NsidString, Params, Procedure, Query, RecordSchema, Restricted } from '@atproto/lex-schema';
3
- import { Agent, AgentOptions } from './agent.js';
4
- import { XrpcFailure } from './errors.js';
1
+ import type { LexMap, LexValue, TypedLexMap } from '@atproto/lex-data';
2
+ import type { AtIdentifierString, AtUriString, CidString, DidString, Infer, InferMethodInputBody, InferMethodOutputBody, InferRecordKey, LexiconRecordKey, Main, NsidString, Params, Restricted } from '@atproto/lex-schema';
3
+ import { Procedure, Query, RecordSchema } from '@atproto/lex-schema';
4
+ import type { Agent, AgentOptions } from './agent.js';
5
+ import type { XrpcFailure } from './errors.js';
5
6
  import applyWrites from './lexicons/com/atproto/repo/applyWrites.js';
6
7
  import createRecord from './lexicons/com/atproto/repo/createRecord.js';
7
8
  import deleteRecord from './lexicons/com/atproto/repo/deleteRecord.js';
8
9
  import getRecord from './lexicons/com/atproto/repo/getRecord.js';
9
- import listRecords from './lexicons/com/atproto/repo/listRecords.js';
10
+ import listRecords, { type Record as ListRecordsRecord } from './lexicons/com/atproto/repo/listRecords.js';
10
11
  import putRecord from './lexicons/com/atproto/repo/putRecord.js';
11
12
  import uploadBlob from './lexicons/com/atproto/repo/uploadBlob.js';
12
13
  import getBlob from './lexicons/com/atproto/sync/getBlob.js';
13
- import { XrpcResponse, XrpcResponseBody, XrpcResponseOptions } from './response.js';
14
- import { BinaryBodyInit, Service } from './types.js';
15
- import { RecordKeyOptions, XrpcRequestHeadersOptions } from './util.js';
16
- import { WriteOperation, WriteOperationCreateOptions, WriteOperationDeleteOptions, WriteOperationHelper, WriteOperationUpdateOptions, WriteOperationsFactory } from './write-operation-builder.js';
17
- import { XrpcOptions, XrpcRequestParams, XrpcRequestProcessingOptions } from './xrpc.js';
14
+ import { XrpcResponse, type XrpcResponseBody, type XrpcResponseOptions } from './response.js';
15
+ import type { BinaryBodyInit, Service } from './types.js';
16
+ import { type RecordKeyOptions, type XrpcRequestHeadersOptions } from './util.js';
17
+ import { type WriteOperation, type WriteOperationCreateOptions, type WriteOperationDeleteOptions, WriteOperationHelper, type WriteOperationUpdateOptions, type WriteOperationsFactory } from './write-operation-builder.js';
18
+ import { type XrpcOptions, type XrpcRequestParams, type XrpcRequestProcessingOptions } from './xrpc.js';
18
19
  export { type AtIdentifierString, type CidString, type DidString, type Infer, type InferMethodInputBody, type InferMethodOutputBody, type InferRecordKey, type LexMap, type LexValue, type LexiconRecordKey, type Main, type NsidString, type Params, Procedure, Query, RecordSchema, type Restricted, type TypedLexMap, type WriteOperation, type WriteOperationCreateOptions, type WriteOperationDeleteOptions, WriteOperationHelper, type WriteOperationUpdateOptions, type WriteOperationsFactory, };
19
20
  /**
20
21
  * Configuration options for creating a {@link Client}.
@@ -227,20 +228,24 @@ export type ListOptions = ListRecordsOptions;
227
228
  * Contains validated records and any invalid records that failed schema validation.
228
229
  * @typeParam T - The record schema type
229
230
  */
230
- export type ListOutput<T extends RecordSchema> = InferMethodOutputBody<typeof listRecords, Uint8Array> & {
231
+ export type ListOutput<T extends RecordSchema> = Omit<InferMethodOutputBody<typeof listRecords>, 'records'> & {
231
232
  /** Records that successfully validated against the schema. */
232
- records: ListRecord<Infer<T>>[];
233
- /** Records that failed schema validation. */
234
- invalid: LexMap[];
233
+ records: ListRecordItem<Infer<T>>[];
235
234
  };
236
235
  /**
237
- * A record from a list operation with its value typed to the schema.
238
- * @typeParam Value - The validated record value type
236
+ * A discriminated union type representing the result of a record listing
237
+ * operation.
239
238
  */
240
- export type ListRecord<Value extends LexMap> = {
239
+ export type ListRecordItem<Value extends LexMap> = {
241
240
  uri: AtUriString;
242
241
  cid: CidString;
242
+ valid: true;
243
243
  value: Value;
244
+ } | {
245
+ uri: AtUriString;
246
+ cid: CidString;
247
+ valid: false;
248
+ value: LexMap;
244
249
  };
245
250
  /**
246
251
  * The Client class is the primary interface for interacting with AT Protocol
@@ -553,7 +558,7 @@ export declare class Client implements Agent {
553
558
  readonly reverse: import("@atproto/lex-schema").OptionalSchema<import("@atproto/lex-schema").BooleanSchema>;
554
559
  }>, import("@atproto/lex-schema").Payload<"application/json", import("@atproto/lex-schema").ObjectSchema<{
555
560
  cursor: import("@atproto/lex-schema").OptionalSchema<import("@atproto/lex-schema").StringSchema<{}>>;
556
- records: import("@atproto/lex-schema").ArraySchema<import("@atproto/lex-schema").RefSchema<import("@atproto/lex-schema").Validator<import("./lexicons/com/atproto/repo/listRecords.defs.js").Record, import("./lexicons/com/atproto/repo/listRecords.defs.js").Record>>>;
561
+ records: import("@atproto/lex-schema").ArraySchema<import("@atproto/lex-schema").RefSchema<import("@atproto/lex-schema").Validator<ListRecordsRecord, ListRecordsRecord>>>;
557
562
  }>>, undefined>>>;
558
563
  /**
559
564
  * Performs an atomic batch of create, update, and delete operations on records in a repository.
@@ -721,15 +726,31 @@ export declare class Client implements Agent {
721
726
  *
722
727
  * @param ns - The record schema definition
723
728
  * @param options - List options
724
- * @returns Records split into valid (matching schema) and invalid arrays
729
+ * @returns Records validated against the schema, with invalid records included as LexMap
725
730
  *
726
731
  * @example
727
732
  * ```typescript
728
733
  * const result = await client.list(app.bsky.feed.post.main, { limit: 100 })
729
- * console.log(`Found ${result.records.length} valid posts`)
730
- * console.log(`Found ${result.invalid.length} invalid records`)
734
+ * for (const record of result.records) {
735
+ * if (record.valid) {
736
+ * record.value // Fully typed
737
+ * } else {
738
+ * record.value // Invalid record, typed as LexMap
739
+ * }
740
+ * }
731
741
  * ```
732
742
  */
733
743
  list<const T extends RecordSchema>(ns: Main<T>, options?: ListOptions): Promise<ListOutput<T>>;
744
+ /**
745
+ * Asynchronously iterates over all records in a collection, handling
746
+ * pagination automatically.
747
+ *
748
+ * @param ns - The record schema definition
749
+ * @param options - List options including limit and cursor
750
+ * @returns An async generator yielding each record validated against the schema
751
+ */
752
+ listAll<const T extends RecordSchema>(ns: Main<T>, { maxRetries, ...options }?: ListOptions & {
753
+ maxRetries?: number;
754
+ }): AsyncGenerator<ListRecordItem<Infer<T>>, void, unknown>;
734
755
  }
735
756
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EACV,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,SAAS,EACT,KAAK,EACL,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,IAAI,EACJ,UAAU,EACV,MAAM,EACN,UAAU,EACX,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAW,MAAM,qBAAqB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAK9C,OAAO,WAAW,MAAM,4CAA4C,CAAA;AACpE,OAAO,YAAY,MAAM,6CAA6C,CAAA;AACtE,OAAO,YAAY,MAAM,6CAA6C,CAAA;AACtE,OAAO,SAAS,MAAM,0CAA0C,CAAA;AAChE,OAAO,WAAW,EAAE,EAClB,KAAK,MAAM,IAAI,iBAAiB,EACjC,MAAM,4CAA4C,CAAA;AACnD,OAAO,SAAS,MAAM,0CAA0C,CAAA;AAChE,OAAO,UAAU,MAAM,2CAA2C,CAAA;AAClE,OAAO,OAAO,MAAM,wCAAwC,CAAA;AAC5D,OAAO,EACL,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACzB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAM/B,MAAM,WAAW,CAAA;AAClB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC5B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EAGlC,MAAM,WAAW,CAAA;AAElB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,IAAI,EACT,KAAK,UAAU,EACf,KAAK,MAAM,EACX,SAAS,EACT,KAAK,EACL,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,2BAA2B,EAChC,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,GAC5B,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,MAAM,aAAa,GAAG,yBAAyB,GACnD,IAAI,CAAC,4BAA4B,EAAE,iBAAiB,CAAC,GACrD,mBAAmB,CAAA;AAErB,MAAM,MAAM,aAAa,GAAG;IAC1B,yCAAyC;IACzC,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,aAAa,KACnB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAEnB;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAC3C,CAAC,SAAS,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE5C;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAC5C,CAAC,SAAS,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE5C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,WAAW,CAAC,OAAO,YAAY,CAAC,EAChC,MAAM,CACP,GAAG;IACF,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CACpC,WAAW,CAAC,OAAO,YAAY,CAAC,EAChC,MAAM,CACP,GAAG;IACF,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG;IAC7E,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC,GAAG;IAC3E,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,WAAW,CAAC,OAAO,WAAW,CAAC,EAC/B,QAAQ,CACT,GAAG;IACF,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+DAA+D;IAC/D,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,WAAW,CAAC,OAAO,WAAW,CAAC,EAC/B,MAAM,CACP,GAAG;IACF,mFAAmF;IACnF,IAAI,CAAC,EAAE,kBAAkB,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,UAAU,CAAC,EAAE,SAAS,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,UAAU,CAAC,EAAE,MAAM,CAAC,CAAA;AAE5E,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAA;AAExE;;;;GAIG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,YAAY,IAAI,mBAAmB,GACrE,gBAAgB,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,CAAA;AAEpC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,qBAAqB,CAC9C,OAAO,YAAY,EACnB,UAAU,CACX,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,YAAY,IAAI,mBAAmB,GACrE,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAErB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,qBAAqB,CAC9C,OAAO,YAAY,EACnB,UAAU,CACX,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,gBAAgB,GAC/D,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAErB;;;;GAIG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,YAAY,IAAI,IAAI,CAClD,qBAAqB,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,EACnD,OAAO,CACR,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,CAAA;AAEvB;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,gBAAgB,GAC/D,gBAAgB,CAAC,CAAC,CAAC,CAAA;AAErB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,qBAAqB,CAAC,OAAO,SAAS,EAAE,UAAU,CAAC,CAAA;AAE3E;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAA;AAE5C;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,YAAY,IAAI,IAAI,CACnD,qBAAqB,CAAC,OAAO,WAAW,CAAC,EACzC,SAAS,CACV,GAAG;IACF,8DAA8D;IAC9D,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;CACpC,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,IAC3C;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAC/D;IAAE,GAAG,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,MAAO,YAAW,KAAK;IAClC,MAAM,CAAC,WAAW,EAAE,SAAS,SAAS,EAAE,CAAK;IAE7C;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE;QAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAA;KAAE,QAE3D;IAED,qDAAqD;IACrD,SAAgB,KAAK,EAAE,KAAK,CAAA;IAE5B,+CAA+C;IAC/C,SAAgB,OAAO,EAAE,OAAO,CAAA;IAEhC,wDAAwD;IACxD,SAAgB,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjC,4DAA4D;IAC5D,SAAgB,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;IAExC,SAAgB,YAAY,EAAE;QAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;QACjC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAA;QAClC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAA;KAC3C,CAAA;IAED,YAAY,KAAK,EAAE,KAAK,GAAG,YAAY,EAAE,OAAO,GAAE,aAAkB,EAUnE;IAED;;OAEG;IACH,IAAI,GAAG,IAAI,SAAS,GAAG,SAAS,CAE/B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,SAAS,CAGzB;IAED;;;;;;;;;;;;OAYG;IACI,mBAAmB,IAAI,OAAO,CAAC,IAAI,IAAI;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAE/D;IAED;;;OAGG;IACI,WAAW,CAAC,QAAQ,GAAE,QAAQ,CAAC,SAAS,CAAM,QAGpD;IAED;;;OAGG;IACI,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,SAAS,CAAC,QAE/C;IAED;;OAEG;IACI,aAAa,SAEnB;IAED;;;;;;;;OAQG;IACI,YAAY,CACjB,IAAI,EAAE,IAAI,MAAM,EAAE,EAClB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,QAAQ,CAAC,CAmBnB;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,GAAG,SAAS,EAC1C,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAC3C,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,GAChE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IACrB,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,GAAG,SAAS,EAC1C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAQ3B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,GAAG,SAAS,EAC9C,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,CAAC,CAAC,GAC3C,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,GAChE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACtC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,GAAG,SAAS,EAC9C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IAQ5C;;;;;;;;;;;;;;;;;;;OAmBG;IACU,YAAY,CACvB,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAC/B,IAAI,CAAC,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAa9B;IAED;;;;;;;;OAQG;IACG,YAAY,CAChB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;qCAY9B;IAED;;;;;;;;OAQG;IACU,SAAS,CACpB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;wCAU3B;IAED;;;;;;;;OAQG;IACG,SAAS,CACb,MAAM,EAAE,WAAW,CAAC,UAAU,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAc3B;IAED;;;;;;;OAOG;IACG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB;;;;;;;;;;;;;sBAW/D;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACG,WAAW,CACf,OAAO,EAAE,sBAAsB,EAC/B,OAAO,CAAC,EAAE,kBAAkB;;;;;;;;;;;;qCAW7B;IAED;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB;;sBAEjE;IAED;;;;;;OAMG;IACG,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,cAAc;;;;;;;mKAKrE;IAED;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACU,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,EACrC,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,iBAAiB,CAAC,CAAC,CAAC,GACjD,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,8CAA8C,CAAC,GAC7D,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,SAAS,EACzC,EAAE,EAAE,SAAS,SAAS,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC,GACrD,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,kDAAkD,CAAC,GACjE,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAClB,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,EACtC,EAAE,EAAE,IAAI,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAChC,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,+CAA+C,CAAC,GAC9D,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,KAAK,EAC1D,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,GAAG,EAAE,CAAC,SAAS,MAAM,GACjB,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,SAAS,SAAS,GACjB,oBAAoB,CAAC,CAAC,EAAE,UAAU,CAAC,GACnC,CAAC,SAAS,KAAK,GACb,iBAAiB,CAAC,CAAC,CAAC,GACpB,KAAK,EACb,OAAO,CAAC,EAAE,CAAC,SAAS,MAAM,GACtB,aAAa,GACb,CAAC,SAAS,SAAS,GACjB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAC5B,CAAC,SAAS,KAAK,GACb,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,GAC9B,KAAK,GACZ,OAAO,CACR,CAAC,SAAS,MAAM,GACZ,iBAAiB,CAAC,CAAC,CAAC,GACpB,CAAC,SAAS,SAAS,GACjB,gBAAgB,CAAC,CAAC,CAAC,GACnB,CAAC,SAAS,KAAK,GACb,gBAAgB,CAAC,CAAC,CAAC,GACnB,KAAK,CACd,CAAA;IAuBD;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACU,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC9C,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAC7C,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,EACjE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,YAAY,CAAC,CAAA;IACX,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC9C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,YAAY,CAAC,CAAA;IAexB;;;;;;OAMG;IACU,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC9C,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,aAAa,CAAC,CAAC,CAAC,GAC7C,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,GAChE,OAAO,CAAC,YAAY,CAAC,CAAA;IACX,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC9C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,OAAO,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,YAAY,CAAC,CAAA;IAaxB;;;;;;;;;;;;;OAaG;IACU,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC3C,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,WAAW,MAAM,EAAE,GACpC,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,GAChE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACX,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC3C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAcxB;;;;;;;OAOG;IACU,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC3C,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,UAAU,CAAC,CAAC,CAAC,GAC1C,IAAI,CAAC,CAAC,CAAC,GACP,UAAU,CAAC,iDAAiD,CAAC,EACjE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,SAAS,CAAC,CAAA;IACR,GAAG,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EAC3C,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,SAAS,CAAC,CAAA;IAcrB;;;;;;;;;;;;;;;;;;OAkBG;IACG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EACrC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAKxB;IAED;;;;;;;OAOG;IACI,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,YAAY,EACzC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EACX,EAAE,UAAc,EAAE,GAAG,OAAO,EAAE,GAAE,WAAW,GAAG;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GACzE,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CA+EzD;CACF"}
package/dist/client.js CHANGED
@@ -1,5 +1,6 @@
1
- import { Procedure, Query, RecordSchema, getMain, } from '@atproto/lex-schema';
1
+ import { Procedure, Query, RecordSchema, getMain } from '@atproto/lex-schema';
2
2
  import { buildAgent } from './agent.js';
3
+ import { XrpcError, XrpcResponseError } from './errors.js';
3
4
  // @NOTE We could use import { com } from "./lexicons/index.js" here, but some
4
5
  // consumers might not know how to properly tree-shake that, so we import only
5
6
  // the needed lexicon schemas directly.
@@ -7,11 +8,12 @@ import applyWrites from './lexicons/com/atproto/repo/applyWrites.js';
7
8
  import createRecord from './lexicons/com/atproto/repo/createRecord.js';
8
9
  import deleteRecord from './lexicons/com/atproto/repo/deleteRecord.js';
9
10
  import getRecord from './lexicons/com/atproto/repo/getRecord.js';
10
- import listRecords from './lexicons/com/atproto/repo/listRecords.js';
11
+ import listRecords, {} from './lexicons/com/atproto/repo/listRecords.js';
11
12
  import putRecord from './lexicons/com/atproto/repo/putRecord.js';
12
13
  import uploadBlob from './lexicons/com/atproto/repo/uploadBlob.js';
13
14
  import getBlob from './lexicons/com/atproto/sync/getBlob.js';
14
- import { applyDefaults, buildXrpcRequestHeaders, getDefaultRecordKey, getLiteralRecordKey, } from './util.js';
15
+ import { XrpcResponse, } from './response.js';
16
+ import { applyDefaults, buildXrpcRequestHeaders, getDefaultRecordKey, getLiteralRecordKey, wait, } from './util.js';
15
17
  import { WriteOperationHelper, } from './write-operation-builder.js';
16
18
  import { xrpc, xrpcSafe, } from './xrpc.js';
17
19
  export { Procedure, Query, RecordSchema, WriteOperationHelper, };
@@ -374,30 +376,109 @@ export class Client {
374
376
  *
375
377
  * @param ns - The record schema definition
376
378
  * @param options - List options
377
- * @returns Records split into valid (matching schema) and invalid arrays
379
+ * @returns Records validated against the schema, with invalid records included as LexMap
378
380
  *
379
381
  * @example
380
382
  * ```typescript
381
383
  * const result = await client.list(app.bsky.feed.post.main, { limit: 100 })
382
- * console.log(`Found ${result.records.length} valid posts`)
383
- * console.log(`Found ${result.invalid.length} invalid records`)
384
+ * for (const record of result.records) {
385
+ * if (record.valid) {
386
+ * record.value // Fully typed
387
+ * } else {
388
+ * record.value // Invalid record, typed as LexMap
389
+ * }
390
+ * }
384
391
  * ```
385
392
  */
386
393
  async list(ns, options) {
387
394
  const schema = getMain(ns);
388
395
  const { body } = await this.listRecords(schema.$type, options);
389
- const records = [];
390
- const invalid = [];
391
- for (const record of body.records) {
392
- const parsed = schema.safeValidate(record.value);
393
- if (parsed.success) {
394
- records.push({ ...record, value: parsed.value });
396
+ const records = body.records.map(processListRecord, schema);
397
+ return { ...body, records };
398
+ }
399
+ /**
400
+ * Asynchronously iterates over all records in a collection, handling
401
+ * pagination automatically.
402
+ *
403
+ * @param ns - The record schema definition
404
+ * @param options - List options including limit and cursor
405
+ * @returns An async generator yielding each record validated against the schema
406
+ */
407
+ async *listAll(ns, { maxRetries = 3, ...options } = {}) {
408
+ const schema = getMain(ns);
409
+ let currentErrorCount = 0;
410
+ do {
411
+ options.signal?.throwIfAborted();
412
+ try {
413
+ const { body } = await this.listRecords(schema.$type, options);
414
+ // We got a successful response, reset error count
415
+ currentErrorCount = 0;
416
+ // We don't use this.list() here so that we can lazily process records as
417
+ // they come in, rather than mapping and yielding the entire page at once.
418
+ for (const record of body.records) {
419
+ yield processListRecord.call(schema, record);
420
+ }
421
+ // If the server returns the same cursor, we may be in a loop. Stop
422
+ // iteration.
423
+ if (body.cursor && body.cursor === options.cursor) {
424
+ return;
425
+ }
426
+ options.cursor = body.cursor;
395
427
  }
396
- else {
397
- invalid.push(record.value);
428
+ catch (err) {
429
+ currentErrorCount++;
430
+ if (currentErrorCount > maxRetries) {
431
+ throw err;
432
+ }
433
+ if (err instanceof XrpcResponseError) {
434
+ // Page not found, return empty iterator
435
+ if (err.status === 404 || err.error === 'NotFound') {
436
+ return;
437
+ }
438
+ // Rate limit error
439
+ if (err.status === 429 || err.error === 'RateLimitExceeded') {
440
+ const resetsAt = err.headers.get('RateLimit-Reset'); // epoch
441
+ if (resetsAt != null && /^\s*\d+\s*$/.test(resetsAt)) {
442
+ const resetsIn = Number(resetsAt) * 1000 - Date.now();
443
+ await wait(Math.max(resetsIn, 1e3), options);
444
+ continue;
445
+ }
446
+ // Unable to determine when to retry; fall through
447
+ }
448
+ // Server asks to retry after a certain time
449
+ const retryAfter = err.headers.get('Retry-After');
450
+ if (retryAfter != null) {
451
+ const waitTime = /^\s*\d+\s*$/.test(retryAfter)
452
+ ? // Retry-After is in seconds
453
+ Number(retryAfter) * 1000
454
+ : // Retry-After is an http-date
455
+ new Date(retryAfter).getTime() - Date.now();
456
+ if (!Number.isNaN(waitTime)) {
457
+ await wait(Math.max(waitTime, 1e3), options);
458
+ continue;
459
+ }
460
+ // Invalid date; fall through
461
+ }
462
+ }
463
+ // Exponential backoff for transient errors
464
+ if (err instanceof XrpcError && err.shouldRetry()) {
465
+ const waitTime = Math.min(2 ** currentErrorCount * 1000, 30_000);
466
+ await wait(waitTime, options);
467
+ continue;
468
+ }
469
+ // Propagate unexpected and non-retryable errors
470
+ throw err;
398
471
  }
399
- }
400
- return { ...body, records, invalid };
472
+ } while (options.cursor);
473
+ }
474
+ }
475
+ function processListRecord(record) {
476
+ const result = this.safeValidate(record.value);
477
+ if (result.success) {
478
+ return { ...record, valid: true, value: result.value };
479
+ }
480
+ else {
481
+ return { ...record, valid: false };
401
482
  }
402
483
  }
403
484
  //# sourceMappingURL=client.js.map