@anthropic-ai/sdk 0.100.1 → 0.101.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 (87) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/_vendor/partial-json-parser/parser.d.mts.map +1 -1
  3. package/_vendor/partial-json-parser/parser.d.ts.map +1 -1
  4. package/_vendor/partial-json-parser/parser.js +14 -2
  5. package/_vendor/partial-json-parser/parser.js.map +1 -1
  6. package/_vendor/partial-json-parser/parser.mjs +14 -2
  7. package/_vendor/partial-json-parser/parser.mjs.map +1 -1
  8. package/client.d.mts +23 -1
  9. package/client.d.mts.map +1 -1
  10. package/client.d.ts +23 -1
  11. package/client.d.ts.map +1 -1
  12. package/client.js +54 -11
  13. package/client.js.map +1 -1
  14. package/client.mjs +54 -11
  15. package/client.mjs.map +1 -1
  16. package/core/api.d.mts +11 -0
  17. package/core/api.d.mts.map +1 -0
  18. package/core/api.d.ts +11 -0
  19. package/core/api.d.ts.map +1 -0
  20. package/core/api.js +3 -0
  21. package/core/api.js.map +1 -0
  22. package/core/api.mjs +2 -0
  23. package/core/api.mjs.map +1 -0
  24. package/core/error.d.mts +11 -0
  25. package/core/error.d.mts.map +1 -1
  26. package/core/error.d.ts +11 -0
  27. package/core/error.d.ts.map +1 -1
  28. package/core/error.js +17 -1
  29. package/core/error.js.map +1 -1
  30. package/core/error.mjs +15 -0
  31. package/core/error.mjs.map +1 -1
  32. package/core/middleware.d.mts +117 -0
  33. package/core/middleware.d.mts.map +1 -0
  34. package/core/middleware.d.ts +117 -0
  35. package/core/middleware.d.ts.map +1 -0
  36. package/core/middleware.js +167 -0
  37. package/core/middleware.js.map +1 -0
  38. package/core/middleware.mjs +161 -0
  39. package/core/middleware.mjs.map +1 -0
  40. package/index.d.mts +3 -2
  41. package/index.d.mts.map +1 -1
  42. package/index.d.ts +3 -2
  43. package/index.d.ts.map +1 -1
  44. package/index.js +2 -1
  45. package/index.js.map +1 -1
  46. package/index.mjs +2 -2
  47. package/index.mjs.map +1 -1
  48. package/internal/request-options.d.mts +7 -0
  49. package/internal/request-options.d.mts.map +1 -1
  50. package/internal/request-options.d.ts +7 -0
  51. package/internal/request-options.d.ts.map +1 -1
  52. package/internal/request-options.js.map +1 -1
  53. package/internal/request-options.mjs.map +1 -1
  54. package/lib/BetaMessageStream.d.mts.map +1 -1
  55. package/lib/BetaMessageStream.d.ts.map +1 -1
  56. package/lib/BetaMessageStream.js +3 -0
  57. package/lib/BetaMessageStream.js.map +1 -1
  58. package/lib/BetaMessageStream.mjs +3 -0
  59. package/lib/BetaMessageStream.mjs.map +1 -1
  60. package/package.json +1 -1
  61. package/resources/beta/messages/messages.d.mts.map +1 -1
  62. package/resources/beta/messages/messages.d.ts.map +1 -1
  63. package/resources/beta/messages/messages.js +2 -0
  64. package/resources/beta/messages/messages.js.map +1 -1
  65. package/resources/beta/messages/messages.mjs +2 -0
  66. package/resources/beta/messages/messages.mjs.map +1 -1
  67. package/resources/messages/messages.d.mts.map +1 -1
  68. package/resources/messages/messages.d.ts.map +1 -1
  69. package/resources/messages/messages.js +2 -0
  70. package/resources/messages/messages.js.map +1 -1
  71. package/resources/messages/messages.mjs +2 -0
  72. package/resources/messages/messages.mjs.map +1 -1
  73. package/src/_vendor/partial-json-parser/parser.ts +18 -2
  74. package/src/client.ts +77 -10
  75. package/src/core/api.ts +11 -0
  76. package/src/core/error.ts +15 -0
  77. package/src/core/middleware.ts +293 -0
  78. package/src/index.ts +10 -1
  79. package/src/internal/request-options.ts +8 -0
  80. package/src/lib/BetaMessageStream.ts +3 -0
  81. package/src/resources/beta/messages/messages.ts +2 -0
  82. package/src/resources/messages/messages.ts +2 -0
  83. package/src/version.ts +1 -1
  84. package/version.d.mts +1 -1
  85. package/version.d.ts +1 -1
  86. package/version.js +1 -1
  87. package/version.mjs +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","sourceRoot":"","sources":["../src/core/error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"error.mjs","sourceRoot":"","sources":["../src/core/error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ import type { Fetch } from "../internal/builtin-types.mjs";
2
+ import type { FinalRequestOptions } from "../internal/request-options.mjs";
3
+ import type { APIRequest } from "./api.mjs";
4
+ /**
5
+ * Invokes the rest of the middleware chain, ending with the underlying `fetch`.
6
+ *
7
+ * This function can be invoked multiple times.
8
+ */
9
+ export type MiddlewareNext = (request: APIRequest) => Promise<Response>;
10
+ /**
11
+ * Helpers passed to each middleware alongside `next`, scoped to the request
12
+ * in flight (one context is shared by every middleware in the chain).
13
+ */
14
+ export interface MiddlewareContext {
15
+ /**
16
+ * The SDK request options the API call in flight was made with: `method`,
17
+ * `path`, the pre-encoded `body`, `stream`, etc.
18
+ *
19
+ * `undefined` when the chain isn't running for an SDK API request, i.e.
20
+ * for credential token-exchange requests.
21
+ */
22
+ readonly options?: FinalRequestOptions | undefined;
23
+ /**
24
+ * Parse a response body the way the SDK would for the request in flight:
25
+ *
26
+ * - JSON responses are decoded, with the non-enumerable `_request_id`
27
+ * property attached like SDK return values, and anything else resolves
28
+ * to the body text.
29
+ * - For streaming requests ({@link options}`.stream`), resolves immediately
30
+ * with a {@link Stream} reading an independent copy of the response body —
31
+ * iterating it doesn't consume the client's events, and aborting or
32
+ * `break`ing out of it doesn't cancel the underlying request. Each call
33
+ * returns a fresh `Stream` (streams are single-consumer, so they aren't
34
+ * cached). Error (non-2xx) responses parse as JSON/text rather than as a
35
+ * stream, mirroring the SDK's own handling.
36
+ * - For binary requests, resolves with the `Response` itself, unconsumed.
37
+ *
38
+ * Reads through an internal `response.clone()`, so the response stays
39
+ * readable: the client (and any other middleware) can still consume the
40
+ * body afterwards. Non-stream results are cached per `Response` and shared
41
+ * across the middleware chain, so repeated calls cost a single read.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const mw: Middleware = async (request, next, ctx) => {
46
+ * const response = await next(request);
47
+ * const data = await ctx.parse<Message>(response);
48
+ * if (data.type === 'message') console.log(data.usage);
49
+ * return response;
50
+ * };
51
+ * ```
52
+ */
53
+ parse<T = unknown>(response: Response): Promise<T>;
54
+ }
55
+ /**
56
+ * A function that wraps each HTTP request made by the client.
57
+ *
58
+ * Middleware may observe or modify the request before calling `next`, observe
59
+ * or replace the response, short-circuit by returning a `Response` without
60
+ * calling `next`, or call `next` multiple times to implement custom retries.
61
+ *
62
+ * Middleware must not consume the body of the `Response` it returns - the
63
+ * client still needs to read it. To inspect the body, use
64
+ * `await ctx.parse(response)` (cached, leaves the body readable) or read a
65
+ * clone (`await response.clone().text()`); to transform it, return a
66
+ * replacement, e.g. `new Response(body, response)`.
67
+ *
68
+ * Middleware runs per HTTP attempt, inside the SDK's retry loop; the attempt
69
+ * number is available via the `X-Stainless-Retry-Count` request header. An
70
+ * error thrown from middleware propagates to the caller as-is.
71
+ *
72
+ * Middleware errors are **not** retried apart from connection-level errors:
73
+ * timeout/abort errors, errors thrown by `fetch()`, and `APIConnectionError`s
74
+ * or `RetryableError`s — thrown directly or present anywhere in an error's
75
+ * `cause` chain. Retryable middleware errors still propagate to the caller
76
+ * as-is once retries are exhausted.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const logger: Middleware = async (request, next) => {
81
+ * console.log('->', request.method, request.url);
82
+ * const response = await next(request);
83
+ * console.log('<-', response.status, request.url);
84
+ * return response;
85
+ * };
86
+ *
87
+ * const client = new Anthropic({ middleware: [logger] });
88
+ * ```
89
+ */
90
+ export type Middleware = (request: APIRequest, next: MiddlewareNext, ctx: MiddlewareContext) => Promise<Response>;
91
+ /** Whether `err` was thrown by the underlying `fetch` rather than by a middleware. */
92
+ export declare function isFetchOriginError(err: unknown): boolean;
93
+ /**
94
+ * Whether an error thrown by middleware should stay on the SDK's
95
+ * connection-error retry policy: fetch-origin, abort, `APIConnectionError`, or
96
+ * `RetryableError` — checked through the error's `cause` chain.
97
+ */
98
+ export declare function isRetryableError(err: unknown): boolean;
99
+ /**
100
+ * Wraps `fetchFn` so each call runs through `middleware`, keeping the same
101
+ * call signature as `fetch` itself.
102
+ *
103
+ * With no middleware, calls are passed straight through to `fetchFn`.
104
+ * Otherwise the arguments are normalized into an {@link APIRequest} (headers
105
+ * coerced to a `Headers` instance, URL stringified) before entering the
106
+ * chain. The chain is composed per call, so mutations of a `middleware`
107
+ * array are picked up by later requests.
108
+ *
109
+ * `options` — the SDK request options behind this call, when there are any —
110
+ * is surfaced to middleware as `ctx.options` and drives `ctx.parse`.
111
+ */
112
+ export declare function wrapFetchWithMiddleware(fetchFn: Fetch, middleware: readonly Middleware[], options?: FinalRequestOptions | undefined): Fetch;
113
+ /**
114
+ * Composes `middleware` around `fetchFn` and returns the entry point of the chain.
115
+ */
116
+ export declare function applyMiddleware(fetchFn: Fetch, middleware: readonly Middleware[], options?: FinalRequestOptions | undefined): MiddlewareNext;
117
+ //# sourceMappingURL=middleware.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.mts","sourceRoot":"","sources":["../src/core/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,sCAAkC;AAGvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,wCAAoC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAc;AAIxC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,KACnB,OAAO,CAAC,QAAQ,CAAC,CAAC;AAWvB,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAetD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GACxC,KAAK,CA6BP;AA6ED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GACxC,cAAc,CAuBhB"}
@@ -0,0 +1,117 @@
1
+ import type { Fetch } from "../internal/builtin-types.js";
2
+ import type { FinalRequestOptions } from "../internal/request-options.js";
3
+ import type { APIRequest } from "./api.js";
4
+ /**
5
+ * Invokes the rest of the middleware chain, ending with the underlying `fetch`.
6
+ *
7
+ * This function can be invoked multiple times.
8
+ */
9
+ export type MiddlewareNext = (request: APIRequest) => Promise<Response>;
10
+ /**
11
+ * Helpers passed to each middleware alongside `next`, scoped to the request
12
+ * in flight (one context is shared by every middleware in the chain).
13
+ */
14
+ export interface MiddlewareContext {
15
+ /**
16
+ * The SDK request options the API call in flight was made with: `method`,
17
+ * `path`, the pre-encoded `body`, `stream`, etc.
18
+ *
19
+ * `undefined` when the chain isn't running for an SDK API request, i.e.
20
+ * for credential token-exchange requests.
21
+ */
22
+ readonly options?: FinalRequestOptions | undefined;
23
+ /**
24
+ * Parse a response body the way the SDK would for the request in flight:
25
+ *
26
+ * - JSON responses are decoded, with the non-enumerable `_request_id`
27
+ * property attached like SDK return values, and anything else resolves
28
+ * to the body text.
29
+ * - For streaming requests ({@link options}`.stream`), resolves immediately
30
+ * with a {@link Stream} reading an independent copy of the response body —
31
+ * iterating it doesn't consume the client's events, and aborting or
32
+ * `break`ing out of it doesn't cancel the underlying request. Each call
33
+ * returns a fresh `Stream` (streams are single-consumer, so they aren't
34
+ * cached). Error (non-2xx) responses parse as JSON/text rather than as a
35
+ * stream, mirroring the SDK's own handling.
36
+ * - For binary requests, resolves with the `Response` itself, unconsumed.
37
+ *
38
+ * Reads through an internal `response.clone()`, so the response stays
39
+ * readable: the client (and any other middleware) can still consume the
40
+ * body afterwards. Non-stream results are cached per `Response` and shared
41
+ * across the middleware chain, so repeated calls cost a single read.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const mw: Middleware = async (request, next, ctx) => {
46
+ * const response = await next(request);
47
+ * const data = await ctx.parse<Message>(response);
48
+ * if (data.type === 'message') console.log(data.usage);
49
+ * return response;
50
+ * };
51
+ * ```
52
+ */
53
+ parse<T = unknown>(response: Response): Promise<T>;
54
+ }
55
+ /**
56
+ * A function that wraps each HTTP request made by the client.
57
+ *
58
+ * Middleware may observe or modify the request before calling `next`, observe
59
+ * or replace the response, short-circuit by returning a `Response` without
60
+ * calling `next`, or call `next` multiple times to implement custom retries.
61
+ *
62
+ * Middleware must not consume the body of the `Response` it returns - the
63
+ * client still needs to read it. To inspect the body, use
64
+ * `await ctx.parse(response)` (cached, leaves the body readable) or read a
65
+ * clone (`await response.clone().text()`); to transform it, return a
66
+ * replacement, e.g. `new Response(body, response)`.
67
+ *
68
+ * Middleware runs per HTTP attempt, inside the SDK's retry loop; the attempt
69
+ * number is available via the `X-Stainless-Retry-Count` request header. An
70
+ * error thrown from middleware propagates to the caller as-is.
71
+ *
72
+ * Middleware errors are **not** retried apart from connection-level errors:
73
+ * timeout/abort errors, errors thrown by `fetch()`, and `APIConnectionError`s
74
+ * or `RetryableError`s — thrown directly or present anywhere in an error's
75
+ * `cause` chain. Retryable middleware errors still propagate to the caller
76
+ * as-is once retries are exhausted.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const logger: Middleware = async (request, next) => {
81
+ * console.log('->', request.method, request.url);
82
+ * const response = await next(request);
83
+ * console.log('<-', response.status, request.url);
84
+ * return response;
85
+ * };
86
+ *
87
+ * const client = new Anthropic({ middleware: [logger] });
88
+ * ```
89
+ */
90
+ export type Middleware = (request: APIRequest, next: MiddlewareNext, ctx: MiddlewareContext) => Promise<Response>;
91
+ /** Whether `err` was thrown by the underlying `fetch` rather than by a middleware. */
92
+ export declare function isFetchOriginError(err: unknown): boolean;
93
+ /**
94
+ * Whether an error thrown by middleware should stay on the SDK's
95
+ * connection-error retry policy: fetch-origin, abort, `APIConnectionError`, or
96
+ * `RetryableError` — checked through the error's `cause` chain.
97
+ */
98
+ export declare function isRetryableError(err: unknown): boolean;
99
+ /**
100
+ * Wraps `fetchFn` so each call runs through `middleware`, keeping the same
101
+ * call signature as `fetch` itself.
102
+ *
103
+ * With no middleware, calls are passed straight through to `fetchFn`.
104
+ * Otherwise the arguments are normalized into an {@link APIRequest} (headers
105
+ * coerced to a `Headers` instance, URL stringified) before entering the
106
+ * chain. The chain is composed per call, so mutations of a `middleware`
107
+ * array are picked up by later requests.
108
+ *
109
+ * `options` — the SDK request options behind this call, when there are any —
110
+ * is surfaced to middleware as `ctx.options` and drives `ctx.parse`.
111
+ */
112
+ export declare function wrapFetchWithMiddleware(fetchFn: Fetch, middleware: readonly Middleware[], options?: FinalRequestOptions | undefined): Fetch;
113
+ /**
114
+ * Composes `middleware` around `fetchFn` and returns the entry point of the chain.
115
+ */
116
+ export declare function applyMiddleware(fetchFn: Fetch, middleware: readonly Middleware[], options?: FinalRequestOptions | undefined): MiddlewareNext;
117
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/core/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,qCAAkC;AAGvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,uCAAoC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAc;AAIxC;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAExE;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,iBAAiB,KACnB,OAAO,CAAC,QAAQ,CAAC,CAAC;AAWvB,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAetD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GACxC,KAAK,CA6BP;AA6ED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,KAAK,EACd,UAAU,EAAE,SAAS,UAAU,EAAE,EACjC,OAAO,CAAC,EAAE,mBAAmB,GAAG,SAAS,GACxC,cAAc,CAuBhB"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isFetchOriginError = isFetchOriginError;
4
+ exports.isRetryableError = isRetryableError;
5
+ exports.wrapFetchWithMiddleware = wrapFetchWithMiddleware;
6
+ exports.applyMiddleware = applyMiddleware;
7
+ const errors_1 = require("../internal/errors.js");
8
+ const parse_1 = require("../internal/parse.js");
9
+ const error_1 = require("./error.js");
10
+ const streaming_1 = require("./streaming.js");
11
+ /**
12
+ * Errors thrown by the underlying `fetch`, as opposed to by a middleware.
13
+ *
14
+ * Tracked so the client can apply its connection-error retry policy to
15
+ * transport failures while letting errors thrown by middleware propagate to
16
+ * the caller untouched.
17
+ */
18
+ const fetchOriginErrors = new WeakSet();
19
+ /** Whether `err` was thrown by the underlying `fetch` rather than by a middleware. */
20
+ function isFetchOriginError(err) {
21
+ return typeof err === 'object' && err !== null && fetchOriginErrors.has(err);
22
+ }
23
+ /**
24
+ * Whether an error thrown by middleware should stay on the SDK's
25
+ * connection-error retry policy: fetch-origin, abort, `APIConnectionError`, or
26
+ * `RetryableError` — checked through the error's `cause` chain.
27
+ */
28
+ function isRetryableError(err) {
29
+ const seen = new Set(); // guard against `cause` cycles
30
+ while (typeof err === 'object' && err !== null && !seen.has(err)) {
31
+ seen.add(err);
32
+ if (isFetchOriginError(err) ||
33
+ (0, errors_1.isAbortError)(err) ||
34
+ err instanceof error_1.APIConnectionError ||
35
+ err instanceof error_1.RetryableError) {
36
+ return true;
37
+ }
38
+ err = err.cause;
39
+ }
40
+ return false;
41
+ }
42
+ /**
43
+ * Wraps `fetchFn` so each call runs through `middleware`, keeping the same
44
+ * call signature as `fetch` itself.
45
+ *
46
+ * With no middleware, calls are passed straight through to `fetchFn`.
47
+ * Otherwise the arguments are normalized into an {@link APIRequest} (headers
48
+ * coerced to a `Headers` instance, URL stringified) before entering the
49
+ * chain. The chain is composed per call, so mutations of a `middleware`
50
+ * array are picked up by later requests.
51
+ *
52
+ * `options` — the SDK request options behind this call, when there are any —
53
+ * is surfaced to middleware as `ctx.options` and drives `ctx.parse`.
54
+ */
55
+ function wrapFetchWithMiddleware(fetchFn, middleware, options) {
56
+ return async (url, init = {}) => {
57
+ if (middleware.length === 0) {
58
+ // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
59
+ return fetchFn.call(undefined, url, init);
60
+ }
61
+ const headers = init.headers instanceof Headers ? init.headers : new Headers(init.headers);
62
+ const response = await applyMiddleware(fetchFn, middleware, options)({
63
+ ...init,
64
+ headers,
65
+ url: typeof url === 'string' ? url
66
+ : url instanceof URL ? url.href
67
+ : url.url,
68
+ });
69
+ // Catch a footgun before the client tries to read the body itself and
70
+ // fails with a confusing low-level stream error.
71
+ if (response.bodyUsed || response.body?.locked) {
72
+ throw new error_1.AnthropicError('middleware consumed the response body; use response.clone() to inspect it, ' +
73
+ 'or return new Response(body, response) to consume and replace it');
74
+ }
75
+ return response;
76
+ };
77
+ }
78
+ /**
79
+ * Creates the {@link MiddlewareContext} shared by every middleware in one chain.
80
+ */
81
+ function createMiddlewareContext(options) {
82
+ // Keyed on the Response so each `next()` call's response (e.g. with custom
83
+ // retries, or a middleware swapping in a replacement) parses independently,
84
+ // while several middleware parsing the same response share a single read.
85
+ const cache = new WeakMap();
86
+ return {
87
+ options,
88
+ parse(response) {
89
+ // Streams are single-consumer, so caching one would hand later callers
90
+ // an already-consumed stream; every call gets a fresh clone-backed one.
91
+ if (options?.stream && response.ok) {
92
+ return parseMiddlewareResponse(response, options);
93
+ }
94
+ let parsed = cache.get(response);
95
+ if (!parsed) {
96
+ parsed = parseMiddlewareResponse(response, options);
97
+ cache.set(response, parsed);
98
+ }
99
+ return parsed;
100
+ },
101
+ };
102
+ }
103
+ /**
104
+ * Mirrors the client's own response parsing (`defaultParseResponse` in
105
+ * `internal/parse.ts`), reading through a clone so the body stays available
106
+ * to the rest of the chain and the client itself.
107
+ */
108
+ async function parseMiddlewareResponse(response, options) {
109
+ if (response.bodyUsed || response.body?.locked) {
110
+ throw new error_1.AnthropicError('cannot ctx.parse() a response whose body was already consumed; ' +
111
+ 'call ctx.parse() instead of reading the body, or read via response.clone()');
112
+ }
113
+ // Error responses parse as JSON/text below — the SDK only stream-parses
114
+ // successful responses, and middleware typically wants the error body.
115
+ if (options?.stream && response.ok) {
116
+ // A fresh controller rather than the request's own: aborting (or
117
+ // `break`ing out of) the middleware's stream must not cancel the
118
+ // in-flight request the client is still reading.
119
+ const streamClass = options.__streamClass ?? streaming_1.Stream;
120
+ return streamClass.fromSSEResponse(response.clone(), new AbortController());
121
+ }
122
+ // fetch refuses to read the body when the status code is 204.
123
+ if (response.status === 204) {
124
+ return null;
125
+ }
126
+ if (options?.__binaryResponse) {
127
+ return response;
128
+ }
129
+ const contentType = response.headers.get('content-type');
130
+ const mediaType = contentType?.split(';')[0]?.trim();
131
+ const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');
132
+ if (isJSON) {
133
+ if (response.headers.get('content-length') === '0') {
134
+ // if there is no content we can't do anything
135
+ return undefined;
136
+ }
137
+ return (0, parse_1.addRequestID)(await response.clone().json(), response);
138
+ }
139
+ return await response.clone().text();
140
+ }
141
+ /**
142
+ * Composes `middleware` around `fetchFn` and returns the entry point of the chain.
143
+ */
144
+ function applyMiddleware(fetchFn, middleware, options) {
145
+ // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
146
+ let next = async ({ url, ...init }) => {
147
+ try {
148
+ return await fetchFn.call(undefined, url, init);
149
+ }
150
+ catch (err) {
151
+ // Brand the error as fetch-origin, normalizing with `castToError` first since a
152
+ // WeakSet can't hold primitives and the brand must be on the same object the
153
+ // client's own `castToError` will later pass through.
154
+ const error = (0, errors_1.castToError)(err);
155
+ fetchOriginErrors.add(error);
156
+ throw error;
157
+ }
158
+ };
159
+ const ctx = createMiddlewareContext(options);
160
+ for (let i = middleware.length - 1; i >= 0; i--) {
161
+ const mw = middleware[i];
162
+ const nextInner = next;
163
+ next = async (request) => mw(request, nextInner, ctx);
164
+ }
165
+ return next;
166
+ }
167
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/core/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { castToError, isAbortError } from "../internal/errors.mjs";
2
+ import { addRequestID } from "../internal/parse.mjs";
3
+ import { AnthropicError, APIConnectionError, RetryableError } from "./error.mjs";
4
+ import { Stream } from "./streaming.mjs";
5
+ /**
6
+ * Errors thrown by the underlying `fetch`, as opposed to by a middleware.
7
+ *
8
+ * Tracked so the client can apply its connection-error retry policy to
9
+ * transport failures while letting errors thrown by middleware propagate to
10
+ * the caller untouched.
11
+ */
12
+ const fetchOriginErrors = new WeakSet();
13
+ /** Whether `err` was thrown by the underlying `fetch` rather than by a middleware. */
14
+ export function isFetchOriginError(err) {
15
+ return typeof err === 'object' && err !== null && fetchOriginErrors.has(err);
16
+ }
17
+ /**
18
+ * Whether an error thrown by middleware should stay on the SDK's
19
+ * connection-error retry policy: fetch-origin, abort, `APIConnectionError`, or
20
+ * `RetryableError` — checked through the error's `cause` chain.
21
+ */
22
+ export function isRetryableError(err) {
23
+ const seen = new Set(); // guard against `cause` cycles
24
+ while (typeof err === 'object' && err !== null && !seen.has(err)) {
25
+ seen.add(err);
26
+ if (isFetchOriginError(err) ||
27
+ isAbortError(err) ||
28
+ err instanceof APIConnectionError ||
29
+ err instanceof RetryableError) {
30
+ return true;
31
+ }
32
+ err = err.cause;
33
+ }
34
+ return false;
35
+ }
36
+ /**
37
+ * Wraps `fetchFn` so each call runs through `middleware`, keeping the same
38
+ * call signature as `fetch` itself.
39
+ *
40
+ * With no middleware, calls are passed straight through to `fetchFn`.
41
+ * Otherwise the arguments are normalized into an {@link APIRequest} (headers
42
+ * coerced to a `Headers` instance, URL stringified) before entering the
43
+ * chain. The chain is composed per call, so mutations of a `middleware`
44
+ * array are picked up by later requests.
45
+ *
46
+ * `options` — the SDK request options behind this call, when there are any —
47
+ * is surfaced to middleware as `ctx.options` and drives `ctx.parse`.
48
+ */
49
+ export function wrapFetchWithMiddleware(fetchFn, middleware, options) {
50
+ return async (url, init = {}) => {
51
+ if (middleware.length === 0) {
52
+ // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
53
+ return fetchFn.call(undefined, url, init);
54
+ }
55
+ const headers = init.headers instanceof Headers ? init.headers : new Headers(init.headers);
56
+ const response = await applyMiddleware(fetchFn, middleware, options)({
57
+ ...init,
58
+ headers,
59
+ url: typeof url === 'string' ? url
60
+ : url instanceof URL ? url.href
61
+ : url.url,
62
+ });
63
+ // Catch a footgun before the client tries to read the body itself and
64
+ // fails with a confusing low-level stream error.
65
+ if (response.bodyUsed || response.body?.locked) {
66
+ throw new AnthropicError('middleware consumed the response body; use response.clone() to inspect it, ' +
67
+ 'or return new Response(body, response) to consume and replace it');
68
+ }
69
+ return response;
70
+ };
71
+ }
72
+ /**
73
+ * Creates the {@link MiddlewareContext} shared by every middleware in one chain.
74
+ */
75
+ function createMiddlewareContext(options) {
76
+ // Keyed on the Response so each `next()` call's response (e.g. with custom
77
+ // retries, or a middleware swapping in a replacement) parses independently,
78
+ // while several middleware parsing the same response share a single read.
79
+ const cache = new WeakMap();
80
+ return {
81
+ options,
82
+ parse(response) {
83
+ // Streams are single-consumer, so caching one would hand later callers
84
+ // an already-consumed stream; every call gets a fresh clone-backed one.
85
+ if (options?.stream && response.ok) {
86
+ return parseMiddlewareResponse(response, options);
87
+ }
88
+ let parsed = cache.get(response);
89
+ if (!parsed) {
90
+ parsed = parseMiddlewareResponse(response, options);
91
+ cache.set(response, parsed);
92
+ }
93
+ return parsed;
94
+ },
95
+ };
96
+ }
97
+ /**
98
+ * Mirrors the client's own response parsing (`defaultParseResponse` in
99
+ * `internal/parse.ts`), reading through a clone so the body stays available
100
+ * to the rest of the chain and the client itself.
101
+ */
102
+ async function parseMiddlewareResponse(response, options) {
103
+ if (response.bodyUsed || response.body?.locked) {
104
+ throw new AnthropicError('cannot ctx.parse() a response whose body was already consumed; ' +
105
+ 'call ctx.parse() instead of reading the body, or read via response.clone()');
106
+ }
107
+ // Error responses parse as JSON/text below — the SDK only stream-parses
108
+ // successful responses, and middleware typically wants the error body.
109
+ if (options?.stream && response.ok) {
110
+ // A fresh controller rather than the request's own: aborting (or
111
+ // `break`ing out of) the middleware's stream must not cancel the
112
+ // in-flight request the client is still reading.
113
+ const streamClass = options.__streamClass ?? Stream;
114
+ return streamClass.fromSSEResponse(response.clone(), new AbortController());
115
+ }
116
+ // fetch refuses to read the body when the status code is 204.
117
+ if (response.status === 204) {
118
+ return null;
119
+ }
120
+ if (options?.__binaryResponse) {
121
+ return response;
122
+ }
123
+ const contentType = response.headers.get('content-type');
124
+ const mediaType = contentType?.split(';')[0]?.trim();
125
+ const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');
126
+ if (isJSON) {
127
+ if (response.headers.get('content-length') === '0') {
128
+ // if there is no content we can't do anything
129
+ return undefined;
130
+ }
131
+ return addRequestID(await response.clone().json(), response);
132
+ }
133
+ return await response.clone().text();
134
+ }
135
+ /**
136
+ * Composes `middleware` around `fetchFn` and returns the entry point of the chain.
137
+ */
138
+ export function applyMiddleware(fetchFn, middleware, options) {
139
+ // use undefined this binding; fetch errors if bound to something else in browser/cloudflare
140
+ let next = async ({ url, ...init }) => {
141
+ try {
142
+ return await fetchFn.call(undefined, url, init);
143
+ }
144
+ catch (err) {
145
+ // Brand the error as fetch-origin, normalizing with `castToError` first since a
146
+ // WeakSet can't hold primitives and the brand must be on the same object the
147
+ // client's own `castToError` will later pass through.
148
+ const error = castToError(err);
149
+ fetchOriginErrors.add(error);
150
+ throw error;
151
+ }
152
+ };
153
+ const ctx = createMiddlewareContext(options);
154
+ for (let i = middleware.length - 1; i >= 0; i--) {
155
+ const mw = middleware[i];
156
+ const nextInner = next;
157
+ next = async (request) => mw(request, nextInner, ctx);
158
+ }
159
+ return next;
160
+ }
161
+ //# sourceMappingURL=middleware.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.mjs","sourceRoot":"","sources":["../src/core/middleware.ts"],"names":[],"mappings":"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"}
package/index.d.mts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { Anthropic as default } from "./client.mjs";
2
2
  export { type Uploadable, toFile } from "./core/uploads.mjs";
3
3
  export { APIPromise } from "./core/api-promise.mjs";
4
- export { BaseAnthropic, Anthropic, type ClientOptions, HUMAN_PROMPT, AI_PROMPT } from "./client.mjs";
4
+ export { type Middleware, type MiddlewareContext, type MiddlewareNext } from "./core/middleware.mjs";
5
+ export { BaseAnthropic, Anthropic, type APIRequest, type ClientOptions, HUMAN_PROMPT, AI_PROMPT, } from "./client.mjs";
5
6
  export { PagePromise } from "./core/pagination.mjs";
6
- export { AnthropicError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from "./core/error.mjs";
7
+ export { AnthropicError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, RetryableError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from "./core/error.mjs";
7
8
  export type { AutoParseableOutputFormat, ParsedMessage, ParsedContentBlock, ParseableMessageCreateParams, ExtractParsedContentFromParams, } from "./lib/parser.mjs";
8
9
  //# sourceMappingURL=index.d.mts.map
package/index.d.mts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,qBAAiB;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,2BAAuB;AACzD,OAAO,EAAE,UAAU,EAAE,+BAA2B;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,qBAAiB;AACjG,OAAO,EAAE,WAAW,EAAE,8BAA0B;AAChD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,yBAAqB;AAEtB,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,yBAAqB"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,qBAAiB;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,2BAAuB;AACzD,OAAO,EAAE,UAAU,EAAE,+BAA2B;AAChD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,8BAA0B;AACjG,OAAO,EACL,aAAa,EACb,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,YAAY,EACZ,SAAS,GACV,qBAAiB;AAClB,OAAO,EAAE,WAAW,EAAE,8BAA0B;AAChD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,yBAAqB;AAEtB,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,yBAAqB"}
package/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  export { Anthropic as default } from "./client.js";
2
2
  export { type Uploadable, toFile } from "./core/uploads.js";
3
3
  export { APIPromise } from "./core/api-promise.js";
4
- export { BaseAnthropic, Anthropic, type ClientOptions, HUMAN_PROMPT, AI_PROMPT } from "./client.js";
4
+ export { type Middleware, type MiddlewareContext, type MiddlewareNext } from "./core/middleware.js";
5
+ export { BaseAnthropic, Anthropic, type APIRequest, type ClientOptions, HUMAN_PROMPT, AI_PROMPT, } from "./client.js";
5
6
  export { PagePromise } from "./core/pagination.js";
6
- export { AnthropicError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from "./core/error.js";
7
+ export { AnthropicError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, RetryableError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from "./core/error.js";
7
8
  export type { AutoParseableOutputFormat, ParsedMessage, ParsedContentBlock, ParseableMessageCreateParams, ExtractParsedContentFromParams, } from "./lib/parser.js";
8
9
  //# sourceMappingURL=index.d.ts.map
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,oBAAiB;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,0BAAuB;AACzD,OAAO,EAAE,UAAU,EAAE,8BAA2B;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,oBAAiB;AACjG,OAAO,EAAE,WAAW,EAAE,6BAA0B;AAChD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,wBAAqB;AAEtB,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,wBAAqB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,oBAAiB;AAEhD,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,EAAE,0BAAuB;AACzD,OAAO,EAAE,UAAU,EAAE,8BAA2B;AAChD,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,6BAA0B;AACjG,OAAO,EACL,aAAa,EACb,SAAS,EACT,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,YAAY,EACZ,SAAS,GACV,oBAAiB;AAClB,OAAO,EAAE,WAAW,EAAE,6BAA0B;AAChD,OAAO,EACL,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,wBAAqB;AAEtB,YAAY,EACV,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,4BAA4B,EAC5B,8BAA8B,GAC/B,wBAAqB"}