@distilled.cloud/core 0.25.1 → 0.26.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.
package/lib/client.d.ts CHANGED
@@ -10,7 +10,7 @@ import * as Traits from "./traits.ts";
10
10
  * 1. Direct call: `yield* operation(input)` - returns Effect with requirements
11
11
  * 2. Yield first: `const fn = yield* operation` - captures services, returns requirement-free function
12
12
  */
13
- export type OperationMethod<I, A, E, R> = Effect.Effect<(input: I) => Effect.Effect<A, E, never>, never, R> & ((input: I) => Effect.Effect<A, E, R>);
13
+ export type OperationMethod<I, A, E, R, RequestOptions = never> = Effect.Effect<(input: I, requestOptions?: RequestOptions) => Effect.Effect<A, E, never>, never, R> & ((input: I, requestOptions?: RequestOptions) => Effect.Effect<A, E, R>);
14
14
  /**
15
15
  * A paginated operation that additionally has `.pages()` and `.items()` methods.
16
16
  */
@@ -27,22 +27,34 @@ type PaginatedItem<A> = A extends ReadonlyArray<infer Item> ? Item : A extends {
27
27
  items?: ReadonlyArray<infer Item> | null | undefined;
28
28
  } | null | undefined;
29
29
  } ? Item : unknown;
30
- export type PaginatedOperationMethod<I, A, E, R> = OperationMethod<I, A, E, R> & {
31
- pages: (input: I) => Stream.Stream<A, E, R>;
32
- items: (input: I) => Stream.Stream<PaginatedItem<A>, E, R>;
30
+ export type PaginatedOperationMethod<I, A, E, R, RequestOptions = never> = OperationMethod<I, A, E, R, RequestOptions> & {
31
+ pages: (input: I, requestOptions?: RequestOptions) => Stream.Stream<A, E, R>;
32
+ items: (input: I, requestOptions?: RequestOptions) => Stream.Stream<PaginatedItem<A>, E, R>;
33
33
  };
34
34
  type ResolvedClientCredentials<Creds> = Creds extends Effect.Effect<infer Resolved, any, any> ? Resolved : Creds;
35
35
  /**
36
36
  * Configuration for the API client factory.
37
37
  * SDKs provide this to customize how errors are matched and credentials are applied.
38
38
  */
39
- export interface ClientConfig<Creds> {
39
+ export interface ClientConfig<Creds, RequestOptions = never> {
40
40
  /** The credentials service tag */
41
41
  credentials: Context.ServiceClass<any, any, Effect.Effect<Creds>>;
42
42
  /** Get the base URL from credentials */
43
43
  getBaseUrl: (creds: ResolvedClientCredentials<Creds>) => string;
44
44
  /** Get authorization header(s) from credentials */
45
45
  getAuthHeaders: (creds: ResolvedClientCredentials<Creds>) => Record<string, string>;
46
+ /**
47
+ * Map provider-specific per-call request options into transport headers.
48
+ * Request options are intentionally separate from the operation input and
49
+ * are never passed through the body/query/path schema encoder.
50
+ */
51
+ getRequestHeaders?: (requestOptions: RequestOptions | undefined, context: {
52
+ input: Record<string, unknown>;
53
+ method: string;
54
+ pathTemplate: string;
55
+ parts: Traits.RequestParts;
56
+ credentials: ResolvedClientCredentials<Creds>;
57
+ }) => Record<string, string>;
46
58
  /** Match an error response body to a typed error.
47
59
  * Should return Effect.fail(error) for known errors,
48
60
  * or Effect.fail(fallbackError) for unknown errors.
@@ -68,6 +80,16 @@ export interface ClientConfig<Creds> {
68
80
  * For example, Cloudflare wraps responses in `{ result: <data>, ... }`.
69
81
  */
70
82
  transformResponse?: (body: unknown) => unknown;
83
+ /**
84
+ * Optional predicate identifying a successful-status (2xx) response whose
85
+ * body is actually an error envelope. Some APIs (notably Cloudflare) return
86
+ * errors with HTTP 200 and a `success: false` flag instead of a 4xx status.
87
+ * When this returns `true`, the body is routed through {@link matchError}
88
+ * (with the operation's typed `errors`) exactly like a status>=400 response,
89
+ * so per-operation typed error matchers still apply. SDKs that always signal
90
+ * errors via status codes leave this unset (the default no-ops).
91
+ */
92
+ isErrorEnvelope?: (body: unknown) => boolean;
71
93
  /**
72
94
  * Optional transform applied to encoded request parts before building the
73
95
  * outbound HTTP request.
@@ -77,6 +99,7 @@ export interface ClientConfig<Creds> {
77
99
  method: string;
78
100
  pathTemplate: string;
79
101
  parts: Traits.RequestParts;
102
+ requestOptions: RequestOptions | undefined;
80
103
  }) => Traits.RequestParts;
81
104
  /**
82
105
  * The SDK's `Retry` Context.Service tag. Each per-SDK client wires its
@@ -136,9 +159,9 @@ export interface PaginatedOperationConfig<I extends Schema.Top, O extends Schema
136
159
  * });
137
160
  * ```
138
161
  */
139
- export declare const makeAPI: <Creds>(config: ClientConfig<Creds>) => {
140
- make: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => OperationConfig<I, O, E>) => OperationMethod<Schema.Schema.Type<I>, Schema.Schema.Type<O>, InstanceType<E[number]>, Creds>;
141
- makePaginated: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => PaginatedOperationConfig<I, O, E>, paginateFn?: PaginationStrategy) => PaginatedOperationMethod<Schema.Schema.Type<I>, Schema.Schema.Type<O>, InstanceType<E[number]>, Creds>;
162
+ export declare const makeAPI: <Creds, RequestOptions = never>(config: ClientConfig<Creds, RequestOptions>) => {
163
+ make: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => OperationConfig<I, O, E>) => OperationMethod<Schema.Schema.Type<I>, Schema.Schema.Type<O>, InstanceType<E[number]>, Creds, RequestOptions>;
164
+ makePaginated: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => PaginatedOperationConfig<I, O, E>, paginateFn?: PaginationStrategy) => PaginatedOperationMethod<Schema.Schema.Type<I>, Schema.Schema.Type<O>, InstanceType<E[number]>, Creds, RequestOptions>;
142
165
  };
143
166
  export {};
144
167
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAMxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAOxC,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAe,KAAK,MAAM,IAAI,WAAW,EAAE,MAAM,YAAY,CAAC;AACrE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAgBtC;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CACrD,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EACxC,KAAK,EACL,CAAC,CACF,GACC,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEzC;;GAEG;AACH,KAAK,aAAa,CAAC,CAAC,IAClB,CAAC,SAAS,aAAa,CAAC,MAAM,IAAI,CAAC,GAC/B,IAAI,GACJ,CAAC,SAAS;IAAE,MAAM,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;CAAE,GAC7C,IAAI,GACJ,CAAC,SAAS;IAAE,MAAM,CAAC,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GACjE,IAAI,GACJ,CAAC,SAAS;IAAE,MAAM,EAAE;QAAE,KAAK,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;KAAE,CAAA;CAAE,GACxD,IAAI,GACJ,CAAC,SAAS;IACN,MAAM,CAAC,EACH;QACE,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;KACtD,GACD,IAAI,GACJ,SAAS,CAAC;CACf,GACD,IAAI,GACJ,OAAO,CAAC;AAEtB,MAAM,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,eAAe,CAChE,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,CACF,GAAG;IACF,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,KAAK,yBAAyB,CAAC,KAAK,IAClC,KAAK,SAAS,MAAM,CAAC,MAAM,CAAC,MAAM,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC;AAS3E;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,KAAK;IACjC,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAElE,wCAAwC;IACxC,UAAU,EAAE,CAAC,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC;IAEhE,mDAAmD;IACnD,cAAc,EAAE,CACd,KAAK,EAAE,yBAAyB,CAAC,KAAK,CAAC,KACpC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5B;;;;;;;;;;;;;OAaG;IACH,UAAU,EAAE,CACV,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,EACb,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,EACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,KACzC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEnC,mDAAmD;IACnD,UAAU,EAAE,KAAK,KAAK,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC;IAEtE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IAE/C;;;OAGG;IACH,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC;KAC5B,KAAK,MAAM,CAAC,YAAY,CAAC;IAE1B;;;;;;;;;;;OAWG;IACH,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,eAAe,CAC9B,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,aAAa,EAAE;IAE7D,WAAW,CAAC,EAAE,CAAC,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,gEAAgE;IAChE,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,iEAAiE;IACjE,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,MAAM,CAAC,EAAE,CAAC,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,aAAa,EAAE,CAC7D,SAAQ,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAmOD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,OAAO,GAAI,KAAK,UAAU,YAAY,CAAC,KAAK,CAAC;IAKtD,IAAI,GACF,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,KAAK,CAAC,CAAC,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,EAAE,YAE5C,MAAM,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KACvC,eAAe,CAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACrB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EACvB,KAAK,CACN;IA2aD,aAAa,GACX,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,CAAC,SAAS,MAAM,CAAC,GAAG,EACpB,KAAK,CAAC,CAAC,SAAS,SAAS,aAAa,EAAE,GAAG,SAAS,EAAE,YAE5C,MAAM,wBAAwB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,eACpC,kBAAkB,KAC9B,wBAAwB,CACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EACrB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EACvB,KAAK,CACN;CAoCJ,CAAC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -73,6 +73,19 @@ function isArrayAST(ast) {
73
73
  return isArrayAST(ast.encoding[0].to);
74
74
  return false;
75
75
  }
76
+ /**
77
+ * Resolve a (possibly `Schema.suspend`-wrapped) AST down to the concrete
78
+ * underlying node by forcing the memoized thunk. Generated SDK schemas may
79
+ * wrap each request/response struct in `Schema.suspend(() => ...)` so the
80
+ * (expensive) schema construction is deferred from module-load time to the
81
+ * first time the operation is actually called. Trait extraction needs the
82
+ * real node, so we force it here. `Suspend.thunk` memoizes, so this only
83
+ * pays the construction cost once per operation. Returns the input AST
84
+ * untouched when it isn't a Suspend (the common case for non-suspended SDKs).
85
+ */
86
+ function resolveAst(ast) {
87
+ return ast._tag === "Suspend" ? resolveAst(ast.thunk()) : ast;
88
+ }
76
89
  // ============================================================================
77
90
  // Form URL-Encoded Builder (Stripe deepObject style)
78
91
  // ============================================================================
@@ -247,21 +260,38 @@ function setBinaryBody(request, body) {
247
260
  export const makeAPI = (config) => {
248
261
  return {
249
262
  make: (configFn) => {
250
- const opConfig = configFn();
251
- // Support both input/output and inputSchema/outputSchema aliases
252
- const inputSchema = (opConfig.inputSchema ?? opConfig.input);
253
- const outputSchema = (opConfig.outputSchema ?? opConfig.output);
254
- const responsePath = Traits.getResponsePath(outputSchema.ast);
255
- const graphqlOp = Traits.getGraphQLOp(inputSchema.ast);
256
- const noFollowRedirect = Traits.getNoFollowRedirect(inputSchema.ast);
257
- // Read HTTP trait from input schema annotations
258
- const httpTrait = Traits.getHttpTrait(inputSchema.ast);
259
- if (!httpTrait) {
260
- throw new Error("Input schema must have Http trait");
261
- }
262
- const method = httpTrait.method;
263
- const spanName = `${method} ${httpTrait.path}`;
264
- const innerFn = (input) => Effect.gen(function* () {
263
+ let prepared;
264
+ const prepare = () => {
265
+ if (prepared)
266
+ return prepared;
267
+ const opConfig = configFn();
268
+ // Support both input/output and inputSchema/outputSchema aliases
269
+ const inputSchema = (opConfig.inputSchema ?? opConfig.input);
270
+ const outputSchema = (opConfig.outputSchema ?? opConfig.output);
271
+ const inputAst = resolveAst(inputSchema.ast);
272
+ const outputAst = resolveAst(outputSchema.ast);
273
+ const httpTrait = Traits.getHttpTrait(inputAst);
274
+ if (!httpTrait) {
275
+ throw new Error("Input schema must have Http trait");
276
+ }
277
+ const method = httpTrait.method;
278
+ prepared = {
279
+ opConfig,
280
+ inputSchema,
281
+ outputSchema,
282
+ inputAst,
283
+ outputAst,
284
+ responsePath: Traits.getResponsePath(outputAst),
285
+ graphqlOp: Traits.getGraphQLOp(inputAst),
286
+ noFollowRedirect: Traits.getNoFollowRedirect(inputAst),
287
+ httpTrait,
288
+ method,
289
+ spanName: `${method} ${httpTrait.path}`,
290
+ };
291
+ return prepared;
292
+ };
293
+ const innerFn = (input, requestOptions) => Effect.gen(function* () {
294
+ const { opConfig, inputSchema, outputSchema, inputAst, outputAst, responsePath, graphqlOp, noFollowRedirect, httpTrait, method, } = prepare();
265
295
  const credentials = yield* config.credentials;
266
296
  const creds = isEffectLike(credentials)
267
297
  ? yield* credentials
@@ -271,14 +301,14 @@ export const makeAPI = (config) => {
271
301
  // `getBaseUrl` empty (per-service hosts rather than per-credentials).
272
302
  let baseUrl = config.getBaseUrl(creds);
273
303
  if (!baseUrl) {
274
- const svcTrait = Traits.getServiceTrait(inputSchema.ast);
304
+ const svcTrait = Traits.getServiceTrait(inputAst);
275
305
  if (svcTrait?.rootUrl) {
276
306
  baseUrl = svcTrait.rootUrl + (svcTrait.servicePath ?? "");
277
307
  }
278
308
  }
279
309
  const authHeaders = config.getAuthHeaders(creds);
280
310
  // Use schema-aware request builder for proper camelCase → wire_name mapping
281
- let parts = Traits.buildRequestParts(inputSchema.ast, httpTrait, input, inputSchema);
311
+ let parts = Traits.buildRequestParts(inputAst, httpTrait, input, inputSchema);
282
312
  // GraphQL: wrap variables in the standard GraphQL request envelope.
283
313
  // All input fields become `variables`; `query` and `operationName`
284
314
  // come from the trait (baked in at generation time).
@@ -298,6 +328,7 @@ export const makeAPI = (config) => {
298
328
  method,
299
329
  pathTemplate: httpTrait.path,
300
330
  parts,
331
+ requestOptions,
301
332
  });
302
333
  }
303
334
  // Inject a baked-in `api-version` query param for versioned APIs
@@ -311,7 +342,14 @@ export const makeAPI = (config) => {
311
342
  query: { ...parts.query, "api-version": httpTrait.apiVersion },
312
343
  };
313
344
  }
314
- let request = HttpClientRequest.make(method)(baseUrl + parts.path).pipe(HttpClientRequest.setHeaders(authHeaders), HttpClientRequest.setHeaders(parts.headers), HttpClientRequest.setHeader("Accept", "application/json"));
345
+ const requestHeaders = config.getRequestHeaders?.(requestOptions, {
346
+ input: input,
347
+ method,
348
+ pathTemplate: httpTrait.path,
349
+ parts,
350
+ credentials: creds,
351
+ }) ?? {};
352
+ let request = HttpClientRequest.make(method)(baseUrl + parts.path).pipe(HttpClientRequest.setHeaders(authHeaders), HttpClientRequest.setHeaders(parts.headers), HttpClientRequest.setHeaders(requestHeaders), HttpClientRequest.setHeader("Accept", "application/json"));
315
353
  // Set Content-Type based on body type
316
354
  // - Skip for FormData (multipart) — browser sets boundary
317
355
  // - Skip for binary — `parts.headers` already carries a caller-supplied
@@ -410,7 +448,7 @@ export const makeAPI = (config) => {
410
448
  return yield* config.matchError(response.status, errorBody, opConfig.errors, response.headers);
411
449
  }
412
450
  // For void-returning operations (e.g. DELETE 204 No Content)
413
- if (AST.isVoid(outputSchema.ast)) {
451
+ if (AST.isVoid(outputAst)) {
414
452
  return undefined;
415
453
  }
416
454
  // Raw octet-stream download (`responseContentType: "binary"`):
@@ -427,12 +465,12 @@ export const makeAPI = (config) => {
427
465
  if (httpTrait.responseContentType === "binary") {
428
466
  const bytes = yield* response.arrayBuffer;
429
467
  const stream = Stream.succeed(new Uint8Array(bytes));
430
- return Traits.buildBinaryResponse(outputSchema.ast, stream, response.headers);
468
+ return Traits.buildBinaryResponse(outputAst, stream, response.headers);
431
469
  }
432
470
  // For 204 No Content: if schema is not Unknown, return undefined.
433
471
  // If schema IS Unknown, return empty string (so callers get a defined value).
434
472
  if (response.status === 204) {
435
- if (outputSchema.ast._tag === "Unknown") {
473
+ if (outputAst._tag === "Unknown") {
436
474
  return "";
437
475
  }
438
476
  return undefined;
@@ -468,16 +506,35 @@ export const makeAPI = (config) => {
468
506
  // leave as string for callers that expect raw text
469
507
  }
470
508
  }
509
+ // Some APIs (Cloudflare) answer with a 2xx status but an error
510
+ // envelope (`success: false`) rather than a 4xx. Route those through
511
+ // `matchError` with the operation's typed `errors` so per-operation
512
+ // matchers fire — otherwise the envelope falls through to schema
513
+ // decoding and surfaces as an opaque ParseError.
514
+ if (config.isErrorEnvelope?.(responseBody)) {
515
+ return yield* config.matchError(response.status, responseBody, opConfig.errors, response.headers);
516
+ }
517
+ // Tracks a `result: null` success that we optimistically coerce to
518
+ // `{}` below. Some ops legitimately return `null` (e.g. a per-zone
519
+ // singleton that was never configured) and declare a nullable
520
+ // output schema — for those, decoding `{}` fails, so we retry the
521
+ // decode with `null` (see the decode block).
522
+ let resultWasNull = false;
471
523
  if (responsePath) {
472
524
  const nested = getPath(responseBody, responsePath);
473
525
  if (nested !== undefined) {
474
- responseBody =
475
- responsePath === "result" && nested === null ? {} : nested;
526
+ if (responsePath === "result" && nested === null) {
527
+ responseBody = {};
528
+ resultWasNull = true;
529
+ }
530
+ else {
531
+ responseBody = nested;
532
+ }
476
533
  }
477
534
  }
478
535
  // Handle Cloudflare-style paginated responses where result is
479
536
  // { items: [...] } but the schema expects an array
480
- if (isArrayAST(outputSchema.ast) &&
537
+ if (isArrayAST(outputAst) &&
481
538
  !Array.isArray(responseBody) &&
482
539
  typeof responseBody === "object" &&
483
540
  responseBody !== null &&
@@ -485,7 +542,13 @@ export const makeAPI = (config) => {
485
542
  Array.isArray(responseBody.items)) {
486
543
  responseBody = responseBody.items;
487
544
  }
488
- return yield* Schema.decodeUnknownEffect(outputSchema)(responseBody).pipe(Effect.catchTag("SchemaError", (cause) => Effect.fail(new config.ParseError({ body: rawBody, cause }))));
545
+ return yield* Schema.decodeUnknownEffect(outputSchema)(responseBody).pipe(Effect.catchTag("SchemaError", (cause) =>
546
+ // A `result: null` success coerced to `{}` that the schema
547
+ // rejects: retry decoding the genuine `null` (the schema may be
548
+ // a nullable union). Only then surface the parse error.
549
+ resultWasNull
550
+ ? Schema.decodeUnknownEffect(outputSchema)(null).pipe(Effect.catchTag("SchemaError", () => Effect.fail(new config.ParseError({ body: rawBody, cause }))))
551
+ : Effect.fail(new config.ParseError({ body: rawBody, cause }))));
489
552
  });
490
553
  // Auto-retry every operation using the SDK's per-client `Retry`
491
554
  // Context.Service. The policy is read with `Effect.serviceOption`
@@ -496,11 +559,12 @@ export const makeAPI = (config) => {
496
559
  // install a blanket policy at the layer level instead of wrapping
497
560
  // every call site with `Effect.retry(...)`.
498
561
  const retryTag = config.retry;
499
- const fn = (input) => {
562
+ const fn = (input, requestOptions) => {
563
+ const { spanName, method, httpTrait } = prepare();
500
564
  const withRetry = Effect.gen(function* () {
501
565
  const lastError = yield* Ref.make(undefined);
502
566
  const policy = (yield* Effect.serviceOption(retryTag)).pipe(Option.map((value) => typeof value === "function" ? value(lastError) : value), Option.getOrElse(() => makeDefault(lastError)));
503
- return yield* pipe(innerFn(input), Effect.tapError((error) => Ref.set(lastError, error)), policy.while
567
+ return yield* pipe(innerFn(input, requestOptions), Effect.tapError((error) => Ref.set(lastError, error)), policy.while
504
568
  ? (eff) => Effect.retry(eff, {
505
569
  while: policy.while,
506
570
  schedule: policy.schedule,
@@ -525,7 +589,7 @@ export const makeAPI = (config) => {
525
589
  return pipeArguments(this.asEffect(), arguments);
526
590
  },
527
591
  asEffect() {
528
- return Effect.map(Effect.context(), (context) => (input) => Effect.provideContext(fn(input), context));
592
+ return Effect.map(Effect.context(), (context) => (input, requestOptions) => Effect.provideContext(fn(input, requestOptions), context));
529
593
  },
530
594
  };
531
595
  return Object.assign(fn, Proto);
@@ -541,11 +605,11 @@ export const makeAPI = (config) => {
541
605
  }));
542
606
  const paginate = paginateFn ?? paginateWithDefaults;
543
607
  // Stream all pages
544
- const pagesFn = (input) => paginate(baseFn, input, pagination);
608
+ const pagesFn = (input, requestOptions) => paginate(baseFn, input, pagination, requestOptions);
545
609
  // Stream individual items
546
- const itemsFn = (input) => pagination.items
547
- ? extractItems(pagesFn(input), pagination.items)
548
- : pagesFn(input);
610
+ const itemsFn = (input, requestOptions) => pagination.items
611
+ ? extractItems(pagesFn(input, requestOptions), pagination.items)
612
+ : pagesFn(input, requestOptions);
549
613
  const result = baseFn;
550
614
  result.pages = pagesFn;
551
615
  result.items = itemsFn;
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,7 @@ export interface PaginatedTrait {
38
38
  /** The name of the input member that limits page size */
39
39
  pageSize?: string;
40
40
  }
41
- export type PaginationStrategy = <Input extends Record<string, unknown>, Output, E, R>(operation: (input: Input) => Effect.Effect<Output, E, R>, input: Input, pagination: PaginatedTrait) => Stream.Stream<Output, E, R>;
41
+ export type PaginationStrategy = <Input extends Record<string, unknown>, Output, E, R, RequestOptions = never>(operation: (input: Input, requestOptions?: RequestOptions) => Effect.Effect<Output, E, R>, input: Input, pagination: PaginatedTrait, requestOptions?: RequestOptions) => Stream.Stream<Output, E, R>;
42
42
  /**
43
43
  * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
44
44
  */
@@ -51,7 +51,7 @@ export declare const paginateSingle: PaginationStrategy;
51
51
  * @param pagination - The pagination trait configuration
52
52
  * @returns A Stream of full page responses
53
53
  */
54
- export declare const paginatePageNumber: <Input extends Record<string, unknown>, Output, E, R>(operation: (input: Input) => Effect.Effect<Output, E, R>, input: Omit<Input, string>, pagination: PaginatedTrait) => Stream.Stream<Output, E, R>;
54
+ export declare const paginatePageNumber: <Input extends Record<string, unknown>, Output, E, R, RequestOptions = never>(operation: (input: Input, requestOptions?: RequestOptions) => Effect.Effect<Output, E, R>, input: Omit<Input, string>, pagination: PaginatedTrait, requestOptions?: RequestOptions) => Stream.Stream<Output, E, R>;
55
55
  /**
56
56
  * Creates a stream of pages using cursor-based pagination.
57
57
  *
@@ -60,7 +60,7 @@ export declare const paginatePageNumber: <Input extends Record<string, unknown>,
60
60
  * @param pagination - The pagination trait configuration
61
61
  * @returns A Stream of full page responses
62
62
  */
63
- export declare const paginateCursor: <Input extends Record<string, unknown>, Output, E, R>(operation: (input: Input) => Effect.Effect<Output, E, R>, input: Omit<Input, string>, pagination: PaginatedTrait) => Stream.Stream<Output, E, R>;
63
+ export declare const paginateCursor: <Input extends Record<string, unknown>, Output, E, R, RequestOptions = never>(operation: (input: Input, requestOptions?: RequestOptions) => Effect.Effect<Output, E, R>, input: Omit<Input, string>, pagination: PaginatedTrait, requestOptions?: RequestOptions) => Stream.Stream<Output, E, R>;
64
64
  /**
65
65
  * Creates a stream of pages using token-based pagination.
66
66
  *
@@ -69,7 +69,7 @@ export declare const paginateCursor: <Input extends Record<string, unknown>, Out
69
69
  * @param pagination - The pagination trait configuration
70
70
  * @returns A Stream of full page responses
71
71
  */
72
- export declare const paginateToken: <Input extends Record<string, unknown>, Output, E, R>(operation: (input: Input) => Effect.Effect<Output, E, R>, input: Input, pagination: PaginatedTrait) => Stream.Stream<Output, E, R>;
72
+ export declare const paginateToken: <Input extends Record<string, unknown>, Output, E, R, RequestOptions = never>(operation: (input: Input, requestOptions?: RequestOptions) => Effect.Effect<Output, E, R>, input: Input, pagination: PaginatedTrait, requestOptions?: RequestOptions) => Stream.Stream<Output, E, R>;
73
73
  /**
74
74
  * Shared default pagination dispatcher for SDKs that use generic token/cursor/page traversal.
75
75
  */
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAOxC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC9C,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAC/B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,EACN,CAAC,EACD,CAAC,EAED,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,EACxD,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,cAAc,KACvB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAIjC;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,kBAG1B,CAAC;AAMJ;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,EACN,CAAC,EACD,CAAC,aAEU,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SACjD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,cACd,cAAc,KACzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CA4D5B,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,EACN,CAAC,EACD,CAAC,aAEU,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SACjD,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,cACd,cAAc,KACzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CA0C5B,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,MAAM,EACN,CAAC,EACD,CAAC,aAEU,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,SACjD,KAAK,cACA,cAAc,KACzB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAoC5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAoBlC,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,SACtC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,aACvB,MAAM,KAChB,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAMxB,CAAC"}
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
package/lib/pagination.js CHANGED
@@ -28,7 +28,7 @@ const missingPaginationConfig = (kind) => Stream.die(new Error(kind));
28
28
  /**
29
29
  * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
30
30
  */
31
- export const paginateSingle = (operation, input) => Stream.make(input).pipe(Stream.mapEffect((requestPayload) => operation(requestPayload)));
31
+ export const paginateSingle = (operation, input, _pagination, requestOptions) => Stream.make(input).pipe(Stream.mapEffect((requestPayload) => operation(requestPayload, requestOptions)));
32
32
  // ============================================================================
33
33
  // Page-based Pagination (PlanetScale style)
34
34
  // ============================================================================
@@ -40,7 +40,7 @@ export const paginateSingle = (operation, input) => Stream.make(input).pipe(Stre
40
40
  * @param pagination - The pagination trait configuration
41
41
  * @returns A Stream of full page responses
42
42
  */
43
- export const paginatePageNumber = (operation, input, pagination) => {
43
+ export const paginatePageNumber = (operation, input, pagination, requestOptions) => {
44
44
  const inputToken = pagination.inputToken;
45
45
  const outputToken = pagination.outputToken;
46
46
  const inputRecord = input;
@@ -58,7 +58,7 @@ export const paginatePageNumber = (operation, input, pagination) => {
58
58
  ...input,
59
59
  [inputToken]: state.page,
60
60
  };
61
- const response = yield* operation(requestPayload);
61
+ const response = yield* operation(requestPayload, requestOptions);
62
62
  const nextPage = getPath(response, outputToken);
63
63
  // Some APIs report the CURRENT page at `outputToken` rather than
64
64
  // the next one (e.g. Cloudflare's `result_info.page`). Taking that
@@ -92,7 +92,7 @@ export const paginatePageNumber = (operation, input, pagination) => {
92
92
  * @param pagination - The pagination trait configuration
93
93
  * @returns A Stream of full page responses
94
94
  */
95
- export const paginateCursor = (operation, input, pagination) => {
95
+ export const paginateCursor = (operation, input, pagination, requestOptions) => {
96
96
  const inputToken = pagination.inputToken;
97
97
  const outputToken = pagination.outputToken;
98
98
  const inputRecord = input;
@@ -110,7 +110,7 @@ export const paginateCursor = (operation, input, pagination) => {
110
110
  ...input,
111
111
  ...(state.cursor ? { [inputToken]: state.cursor } : {}),
112
112
  };
113
- const response = yield* operation(requestPayload);
113
+ const response = yield* operation(requestPayload, requestOptions);
114
114
  const nextCursor = getPath(response, outputToken);
115
115
  const nextState = {
116
116
  cursor: nextCursor ?? undefined,
@@ -131,7 +131,7 @@ export const paginateCursor = (operation, input, pagination) => {
131
131
  * @param pagination - The pagination trait configuration
132
132
  * @returns A Stream of full page responses
133
133
  */
134
- export const paginateToken = (operation, input, pagination) => {
134
+ export const paginateToken = (operation, input, pagination, requestOptions) => {
135
135
  const inputToken = pagination.inputToken;
136
136
  const outputToken = pagination.outputToken;
137
137
  const inputRecord = input;
@@ -146,7 +146,7 @@ export const paginateToken = (operation, input, pagination) => {
146
146
  const requestPayload = state.token !== undefined
147
147
  ? { ...input, [inputToken]: state.token }
148
148
  : input;
149
- const response = yield* operation(requestPayload);
149
+ const response = yield* operation(requestPayload, requestOptions);
150
150
  const nextToken = getPath(response, outputToken);
151
151
  const nextState = {
152
152
  token: nextToken,
@@ -159,18 +159,18 @@ export const paginateToken = (operation, input, pagination) => {
159
159
  /**
160
160
  * Shared default pagination dispatcher for SDKs that use generic token/cursor/page traversal.
161
161
  */
162
- export const paginateWithDefaults = (operation, input, pagination) => {
162
+ export const paginateWithDefaults = (operation, input, pagination, requestOptions) => {
163
163
  const mode = pagination.mode ?? "token";
164
164
  switch (mode) {
165
165
  case "page":
166
- return paginatePageNumber(operation, input, pagination);
166
+ return paginatePageNumber(operation, input, pagination, requestOptions);
167
167
  case "cursor":
168
- return paginateCursor(operation, input, pagination);
168
+ return paginateCursor(operation, input, pagination, requestOptions);
169
169
  case "single":
170
170
  return missingPaginationConfig("Single-page pagination requires a provider-specific pagination strategy");
171
171
  case "token":
172
172
  default:
173
- return paginateToken(operation, input, pagination);
173
+ return paginateToken(operation, input, pagination, requestOptions);
174
174
  }
175
175
  };
176
176
  // ============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiCtC,MAAM,uBAAuB,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,CACrE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACrB,MAAM,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAChE,CAAC;AAEJ,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAMhC,SAAwD,EACxD,KAA0B,EAC1B,UAA0B,EACG,EAAE;IAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAC5B,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GACb,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,QAAQ;QACzC,CAAC,CAAE,WAAW,CAAC,UAAU,CAAY;QACrC,CAAC,CAAC,CAAC,CAAC;IAER,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE,CAChC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,cAAc,GAAG;YACrB,GAAG,KAAK;YACR,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,IAAI;SAChB,CAAC;QAEX,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAGjC,CAAC;QAEd,iEAAiE;QACjE,mEAAmE;QACnE,iEAAiE;QACjE,kEAAkE;QAClE,kEAAkE;QAClE,WAAW;QACX,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK;YAC5B,CAAC,CAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAErB;YAChB,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,SAAS,GAAU;YACvB,IAAI,EACF,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI;gBACnD,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC;YACpB,IAAI,EACF,QAAQ,KAAK,IAAI;gBACjB,QAAQ,KAAK,SAAS;gBACtB,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;SAC9C,CAAC;QAEF,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAW,EAAE,QAAQ,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,+EAA+E;AAC/E,uCAAuC;AACvC,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAM5B,SAAwD,EACxD,KAA0B,EAC1B,UAA0B,EACG,EAAE;IAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAC5B,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GACf,OAAO,WAAW,CAAC,UAAU,CAAC,KAAK,QAAQ;QACzC,CAAC,CAAE,WAAW,CAAC,UAAU,CAAY;QACrC,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE,CAChC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,cAAc,GAAG;YACrB,GAAG,KAAK;YACR,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC;QAEX,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAElD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAGnC,CAAC;QAEd,MAAM,SAAS,GAAU;YACvB,MAAM,EAAE,UAAU,IAAI,SAAS;YAC/B,IAAI,EAAE,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,SAAS;SACtD,CAAC;QAEF,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAW,EAAE,QAAQ,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAM3B,SAAwD,EACxD,KAAY,EACZ,UAA0B,EACG,EAAE;IAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IACzC,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAgC,CAAC;IACrD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO,uBAAuB,CAC5B,sDAAsD,CACvD,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAE3C,MAAM,QAAQ,GAAG,CAAC,KAAY,EAAE,EAAE,CAChC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,cAAc,GAClB,KAAK,CAAC,KAAK,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE;YACzC,CAAC,CAAC,KAAK,CAAC;QAEZ,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,cAAuB,CAAC,CAAC;QAE3D,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAU;YACvB,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI;SACpD,CAAC;QAEF,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAU,CAAC;IACxC,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAW,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuB,CACtD,SAAS,EACT,KAAK,EACL,UAAU,EACV,EAAE;IACF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,OAAO,CAAC;IAExC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC1D,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QACtD,KAAK,QAAQ;YACX,OAAO,uBAAuB,CAC5B,yEAAyE,CAC1E,CAAC;QACJ,KAAK,OAAO,CAAC;QACb;YACE,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC;AAEF,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAkC,EAClC,SAAiB,EACU,EAAE,CAC7B,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAgC,CAAC;IACtE,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AAC1C,CAAC,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@distilled.cloud/core",
3
- "version": "0.25.1",
3
+ "version": "0.26.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/alchemy-run/distilled",
package/src/client.ts CHANGED
@@ -70,12 +70,12 @@ const distilledDebugConfig: Effect.Effect<boolean> = Config.string(
70
70
  * 1. Direct call: `yield* operation(input)` - returns Effect with requirements
71
71
  * 2. Yield first: `const fn = yield* operation` - captures services, returns requirement-free function
72
72
  */
73
- export type OperationMethod<I, A, E, R> = Effect.Effect<
74
- (input: I) => Effect.Effect<A, E, never>,
73
+ export type OperationMethod<I, A, E, R, RequestOptions = never> = Effect.Effect<
74
+ (input: I, requestOptions?: RequestOptions) => Effect.Effect<A, E, never>,
75
75
  never,
76
76
  R
77
77
  > &
78
- ((input: I) => Effect.Effect<A, E, R>);
78
+ ((input: I, requestOptions?: RequestOptions) => Effect.Effect<A, E, R>);
79
79
 
80
80
  /**
81
81
  * A paginated operation that additionally has `.pages()` and `.items()` methods.
@@ -100,14 +100,18 @@ type PaginatedItem<A> =
100
100
  ? Item
101
101
  : unknown;
102
102
 
103
- export type PaginatedOperationMethod<I, A, E, R> = OperationMethod<
103
+ export type PaginatedOperationMethod<
104
104
  I,
105
105
  A,
106
106
  E,
107
- R
108
- > & {
109
- pages: (input: I) => Stream.Stream<A, E, R>;
110
- items: (input: I) => Stream.Stream<PaginatedItem<A>, E, R>;
107
+ R,
108
+ RequestOptions = never,
109
+ > = OperationMethod<I, A, E, R, RequestOptions> & {
110
+ pages: (input: I, requestOptions?: RequestOptions) => Stream.Stream<A, E, R>;
111
+ items: (
112
+ input: I,
113
+ requestOptions?: RequestOptions,
114
+ ) => Stream.Stream<PaginatedItem<A>, E, R>;
111
115
  };
112
116
 
113
117
  type ResolvedClientCredentials<Creds> =
@@ -124,7 +128,7 @@ const isEffectLike = (value: unknown): value is Effect.Effect<unknown> =>
124
128
  * Configuration for the API client factory.
125
129
  * SDKs provide this to customize how errors are matched and credentials are applied.
126
130
  */
127
- export interface ClientConfig<Creds> {
131
+ export interface ClientConfig<Creds, RequestOptions = never> {
128
132
  /** The credentials service tag */
129
133
  credentials: Context.ServiceClass<any, any, Effect.Effect<Creds>>;
130
134
 
@@ -136,6 +140,22 @@ export interface ClientConfig<Creds> {
136
140
  creds: ResolvedClientCredentials<Creds>,
137
141
  ) => Record<string, string>;
138
142
 
143
+ /**
144
+ * Map provider-specific per-call request options into transport headers.
145
+ * Request options are intentionally separate from the operation input and
146
+ * are never passed through the body/query/path schema encoder.
147
+ */
148
+ getRequestHeaders?: (
149
+ requestOptions: RequestOptions | undefined,
150
+ context: {
151
+ input: Record<string, unknown>;
152
+ method: string;
153
+ pathTemplate: string;
154
+ parts: Traits.RequestParts;
155
+ credentials: ResolvedClientCredentials<Creds>;
156
+ },
157
+ ) => Record<string, string>;
158
+
139
159
  /** Match an error response body to a typed error.
140
160
  * Should return Effect.fail(error) for known errors,
141
161
  * or Effect.fail(fallbackError) for unknown errors.
@@ -166,6 +186,17 @@ export interface ClientConfig<Creds> {
166
186
  */
167
187
  transformResponse?: (body: unknown) => unknown;
168
188
 
189
+ /**
190
+ * Optional predicate identifying a successful-status (2xx) response whose
191
+ * body is actually an error envelope. Some APIs (notably Cloudflare) return
192
+ * errors with HTTP 200 and a `success: false` flag instead of a 4xx status.
193
+ * When this returns `true`, the body is routed through {@link matchError}
194
+ * (with the operation's typed `errors`) exactly like a status>=400 response,
195
+ * so per-operation typed error matchers still apply. SDKs that always signal
196
+ * errors via status codes leave this unset (the default no-ops).
197
+ */
198
+ isErrorEnvelope?: (body: unknown) => boolean;
199
+
169
200
  /**
170
201
  * Optional transform applied to encoded request parts before building the
171
202
  * outbound HTTP request.
@@ -175,6 +206,7 @@ export interface ClientConfig<Creds> {
175
206
  method: string;
176
207
  pathTemplate: string;
177
208
  parts: Traits.RequestParts;
209
+ requestOptions: RequestOptions | undefined;
178
210
  }) => Traits.RequestParts;
179
211
 
180
212
  /**
@@ -248,6 +280,20 @@ function isArrayAST(ast: AST.AST): boolean {
248
280
  return false;
249
281
  }
250
282
 
283
+ /**
284
+ * Resolve a (possibly `Schema.suspend`-wrapped) AST down to the concrete
285
+ * underlying node by forcing the memoized thunk. Generated SDK schemas may
286
+ * wrap each request/response struct in `Schema.suspend(() => ...)` so the
287
+ * (expensive) schema construction is deferred from module-load time to the
288
+ * first time the operation is actually called. Trait extraction needs the
289
+ * real node, so we force it here. `Suspend.thunk` memoizes, so this only
290
+ * pays the construction cost once per operation. Returns the input AST
291
+ * untouched when it isn't a Suspend (the common case for non-suspended SDKs).
292
+ */
293
+ function resolveAst(ast: AST.AST): AST.AST {
294
+ return ast._tag === "Suspend" ? resolveAst(ast.thunk()) : ast;
295
+ }
296
+
251
297
  // ============================================================================
252
298
  // Form URL-Encoded Builder (Stripe deepObject style)
253
299
  // ============================================================================
@@ -472,7 +518,9 @@ function setBinaryBody(
472
518
  * });
473
519
  * ```
474
520
  */
475
- export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
521
+ export const makeAPI = <Creds, RequestOptions = never>(
522
+ config: ClientConfig<Creds, RequestOptions>,
523
+ ) => {
476
524
  type _ClientErrors = HttpClientError.HttpClientError | HttpBody.HttpBodyError;
477
525
  type ResolvedCreds = ResolvedClientCredentials<Creds>;
478
526
 
@@ -487,30 +535,81 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
487
535
  Schema.Schema.Type<I>,
488
536
  Schema.Schema.Type<O>,
489
537
  InstanceType<E[number]>,
490
- Creds
538
+ Creds,
539
+ RequestOptions
491
540
  > => {
492
- const opConfig = configFn();
493
- // Support both input/output and inputSchema/outputSchema aliases
494
- const inputSchema = (opConfig.inputSchema ?? opConfig.input)!;
495
- const outputSchema = (opConfig.outputSchema ?? opConfig.output)!;
496
- const responsePath = Traits.getResponsePath(outputSchema.ast);
497
- const graphqlOp = Traits.getGraphQLOp(inputSchema.ast);
498
- const noFollowRedirect = Traits.getNoFollowRedirect(inputSchema.ast);
499
541
  type Input = Schema.Schema.Type<I>;
500
542
 
501
- // Read HTTP trait from input schema annotations
502
- const httpTrait = Traits.getHttpTrait(inputSchema.ast);
503
-
504
- if (!httpTrait) {
505
- throw new Error("Input schema must have Http trait");
543
+ // Lazily resolve the operation config + schema traits on first use,
544
+ // not at module-load time. Generated SDKs may wrap each request/response
545
+ // schema in `Schema.suspend(() => ...)`; forcing them here (rather than
546
+ // when the `export const` is evaluated) keeps importing a service module
547
+ // cheap and only pays the schema-construction cost for operations that
548
+ // are actually called. The result is memoized so subsequent calls are
549
+ // free, and non-suspended SDKs are unaffected (resolveAst is a no-op).
550
+ type HttpTraitResolved = NonNullable<
551
+ ReturnType<typeof Traits.getHttpTrait>
552
+ >;
553
+ interface Prepared {
554
+ opConfig: OperationConfig<I, O, E>;
555
+ inputSchema: I;
556
+ outputSchema: O;
557
+ inputAst: AST.AST;
558
+ outputAst: AST.AST;
559
+ responsePath: string | undefined;
560
+ graphqlOp: ReturnType<typeof Traits.getGraphQLOp>;
561
+ noFollowRedirect: ReturnType<typeof Traits.getNoFollowRedirect>;
562
+ httpTrait: HttpTraitResolved;
563
+ method: HttpTraitResolved["method"];
564
+ spanName: string;
506
565
  }
566
+ let prepared: Prepared | undefined;
567
+ const prepare = (): Prepared => {
568
+ if (prepared) return prepared;
569
+ const opConfig = configFn();
570
+ // Support both input/output and inputSchema/outputSchema aliases
571
+ const inputSchema = (opConfig.inputSchema ?? opConfig.input)!;
572
+ const outputSchema = (opConfig.outputSchema ?? opConfig.output)!;
573
+ const inputAst = resolveAst(inputSchema.ast);
574
+ const outputAst = resolveAst(outputSchema.ast);
575
+ const httpTrait = Traits.getHttpTrait(inputAst);
576
+ if (!httpTrait) {
577
+ throw new Error("Input schema must have Http trait");
578
+ }
579
+ const method = httpTrait.method;
580
+ prepared = {
581
+ opConfig,
582
+ inputSchema,
583
+ outputSchema,
584
+ inputAst,
585
+ outputAst,
586
+ responsePath: Traits.getResponsePath(outputAst),
587
+ graphqlOp: Traits.getGraphQLOp(inputAst),
588
+ noFollowRedirect: Traits.getNoFollowRedirect(inputAst),
589
+ httpTrait,
590
+ method,
591
+ spanName: `${method} ${httpTrait.path}`,
592
+ };
593
+ return prepared;
594
+ };
507
595
 
508
- const method = httpTrait.method;
509
-
510
- const spanName = `${method} ${httpTrait.path}`;
511
-
512
- const innerFn = (input: Input): Effect.Effect<any, any, any> =>
596
+ const innerFn = (
597
+ input: Input,
598
+ requestOptions?: RequestOptions,
599
+ ): Effect.Effect<any, any, any> =>
513
600
  Effect.gen(function* () {
601
+ const {
602
+ opConfig,
603
+ inputSchema,
604
+ outputSchema,
605
+ inputAst,
606
+ outputAst,
607
+ responsePath,
608
+ graphqlOp,
609
+ noFollowRedirect,
610
+ httpTrait,
611
+ method,
612
+ } = prepare();
514
613
  const credentials = yield* config.credentials;
515
614
  const creds = isEffectLike(credentials)
516
615
  ? yield* credentials
@@ -521,7 +620,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
521
620
  // `getBaseUrl` empty (per-service hosts rather than per-credentials).
522
621
  let baseUrl = config.getBaseUrl(creds as ResolvedCreds);
523
622
  if (!baseUrl) {
524
- const svcTrait = Traits.getServiceTrait(inputSchema.ast);
623
+ const svcTrait = Traits.getServiceTrait(inputAst);
525
624
  if (svcTrait?.rootUrl) {
526
625
  baseUrl = svcTrait.rootUrl + (svcTrait.servicePath ?? "");
527
626
  }
@@ -530,7 +629,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
530
629
 
531
630
  // Use schema-aware request builder for proper camelCase → wire_name mapping
532
631
  let parts = Traits.buildRequestParts(
533
- inputSchema.ast,
632
+ inputAst,
534
633
  httpTrait,
535
634
  input as Record<string, unknown>,
536
635
  inputSchema,
@@ -556,6 +655,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
556
655
  method,
557
656
  pathTemplate: httpTrait.path,
558
657
  parts,
658
+ requestOptions,
559
659
  });
560
660
  }
561
661
 
@@ -573,11 +673,21 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
573
673
  };
574
674
  }
575
675
 
676
+ const requestHeaders =
677
+ config.getRequestHeaders?.(requestOptions, {
678
+ input: input as Record<string, unknown>,
679
+ method,
680
+ pathTemplate: httpTrait.path,
681
+ parts,
682
+ credentials: creds as ResolvedCreds,
683
+ }) ?? {};
684
+
576
685
  let request = HttpClientRequest.make(method)(
577
686
  baseUrl + parts.path,
578
687
  ).pipe(
579
688
  HttpClientRequest.setHeaders(authHeaders),
580
689
  HttpClientRequest.setHeaders(parts.headers),
690
+ HttpClientRequest.setHeaders(requestHeaders),
581
691
  HttpClientRequest.setHeader("Accept", "application/json"),
582
692
  );
583
693
 
@@ -737,7 +847,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
737
847
  }
738
848
 
739
849
  // For void-returning operations (e.g. DELETE 204 No Content)
740
- if (AST.isVoid(outputSchema.ast)) {
850
+ if (AST.isVoid(outputAst)) {
741
851
  return undefined;
742
852
  }
743
853
 
@@ -756,7 +866,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
756
866
  const bytes = yield* response.arrayBuffer;
757
867
  const stream = Stream.succeed(new Uint8Array(bytes));
758
868
  return Traits.buildBinaryResponse(
759
- outputSchema.ast,
869
+ outputAst,
760
870
  stream,
761
871
  response.headers as Record<string, string>,
762
872
  ) as unknown;
@@ -765,7 +875,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
765
875
  // For 204 No Content: if schema is not Unknown, return undefined.
766
876
  // If schema IS Unknown, return empty string (so callers get a defined value).
767
877
  if (response.status === 204) {
768
- if (outputSchema.ast._tag === "Unknown") {
878
+ if (outputAst._tag === "Unknown") {
769
879
  return "";
770
880
  }
771
881
  return undefined;
@@ -819,18 +929,42 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
819
929
  }
820
930
  }
821
931
 
932
+ // Some APIs (Cloudflare) answer with a 2xx status but an error
933
+ // envelope (`success: false`) rather than a 4xx. Route those through
934
+ // `matchError` with the operation's typed `errors` so per-operation
935
+ // matchers fire — otherwise the envelope falls through to schema
936
+ // decoding and surfaces as an opaque ParseError.
937
+ if (config.isErrorEnvelope?.(responseBody)) {
938
+ return yield* config.matchError(
939
+ response.status,
940
+ responseBody,
941
+ opConfig.errors,
942
+ response.headers,
943
+ );
944
+ }
945
+
946
+ // Tracks a `result: null` success that we optimistically coerce to
947
+ // `{}` below. Some ops legitimately return `null` (e.g. a per-zone
948
+ // singleton that was never configured) and declare a nullable
949
+ // output schema — for those, decoding `{}` fails, so we retry the
950
+ // decode with `null` (see the decode block).
951
+ let resultWasNull = false;
822
952
  if (responsePath) {
823
953
  const nested = getPath(responseBody, responsePath);
824
954
  if (nested !== undefined) {
825
- responseBody =
826
- responsePath === "result" && nested === null ? {} : nested;
955
+ if (responsePath === "result" && nested === null) {
956
+ responseBody = {};
957
+ resultWasNull = true;
958
+ } else {
959
+ responseBody = nested;
960
+ }
827
961
  }
828
962
  }
829
963
 
830
964
  // Handle Cloudflare-style paginated responses where result is
831
965
  // { items: [...] } but the schema expects an array
832
966
  if (
833
- isArrayAST(outputSchema.ast) &&
967
+ isArrayAST(outputAst) &&
834
968
  !Array.isArray(responseBody) &&
835
969
  typeof responseBody === "object" &&
836
970
  responseBody !== null &&
@@ -844,7 +978,18 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
844
978
  responseBody,
845
979
  ).pipe(
846
980
  Effect.catchTag("SchemaError", (cause) =>
847
- Effect.fail(new config.ParseError({ body: rawBody, cause })),
981
+ // A `result: null` success coerced to `{}` that the schema
982
+ // rejects: retry decoding the genuine `null` (the schema may be
983
+ // a nullable union). Only then surface the parse error.
984
+ resultWasNull
985
+ ? Schema.decodeUnknownEffect(outputSchema)(null).pipe(
986
+ Effect.catchTag("SchemaError", () =>
987
+ Effect.fail(
988
+ new config.ParseError({ body: rawBody, cause }),
989
+ ),
990
+ ),
991
+ )
992
+ : Effect.fail(new config.ParseError({ body: rawBody, cause })),
848
993
  ),
849
994
  );
850
995
  });
@@ -858,7 +1003,11 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
858
1003
  // install a blanket policy at the layer level instead of wrapping
859
1004
  // every call site with `Effect.retry(...)`.
860
1005
  const retryTag = config.retry;
861
- const fn = (input: Input): Effect.Effect<any, any, any> => {
1006
+ const fn = (
1007
+ input: Input,
1008
+ requestOptions?: RequestOptions,
1009
+ ): Effect.Effect<any, any, any> => {
1010
+ const { spanName, method, httpTrait } = prepare();
862
1011
  const withRetry = Effect.gen(function* () {
863
1012
  const lastError = yield* Ref.make<unknown>(undefined);
864
1013
  const policy = (yield* Effect.serviceOption(retryTag)).pipe(
@@ -869,7 +1018,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
869
1018
  );
870
1019
 
871
1020
  return yield* pipe(
872
- innerFn(input),
1021
+ innerFn(input, requestOptions),
873
1022
  Effect.tapError((error) => Ref.set(lastError, error)),
874
1023
  policy.while
875
1024
  ? (eff) =>
@@ -906,8 +1055,8 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
906
1055
  asEffect() {
907
1056
  return Effect.map(
908
1057
  Effect.context(),
909
- (context) => (input: Input) =>
910
- Effect.provideContext(fn(input), context),
1058
+ (context) => (input: Input, requestOptions?: RequestOptions) =>
1059
+ Effect.provideContext(fn(input, requestOptions), context),
911
1060
  );
912
1061
  },
913
1062
  };
@@ -926,7 +1075,8 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
926
1075
  Schema.Schema.Type<I>,
927
1076
  Schema.Schema.Type<O>,
928
1077
  InstanceType<E[number]>,
929
- Creds
1078
+ Creds,
1079
+ RequestOptions
930
1080
  > => {
931
1081
  const opConfig = configFn();
932
1082
  const pagination = opConfig.pagination!;
@@ -943,14 +1093,19 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
943
1093
  const paginate = paginateFn ?? paginateWithDefaults;
944
1094
 
945
1095
  // Stream all pages
946
- const pagesFn = (input: Omit<Input, string>) =>
947
- paginate(baseFn as any, input, pagination);
1096
+ const pagesFn = (
1097
+ input: Omit<Input, string>,
1098
+ requestOptions?: RequestOptions,
1099
+ ) => paginate(baseFn as any, input, pagination, requestOptions);
948
1100
 
949
1101
  // Stream individual items
950
- const itemsFn = (input: Omit<Input, string>) =>
1102
+ const itemsFn = (
1103
+ input: Omit<Input, string>,
1104
+ requestOptions?: RequestOptions,
1105
+ ) =>
951
1106
  pagination.items
952
- ? extractItems(pagesFn(input), pagination.items)
953
- : pagesFn(input);
1107
+ ? extractItems(pagesFn(input, requestOptions), pagination.items)
1108
+ : pagesFn(input, requestOptions);
954
1109
 
955
1110
  const result = baseFn as typeof baseFn & {
956
1111
  pages: typeof pagesFn;
package/src/pagination.ts CHANGED
@@ -50,10 +50,15 @@ export type PaginationStrategy = <
50
50
  Output,
51
51
  E,
52
52
  R,
53
+ RequestOptions = never,
53
54
  >(
54
- operation: (input: Input) => Effect.Effect<Output, E, R>,
55
+ operation: (
56
+ input: Input,
57
+ requestOptions?: RequestOptions,
58
+ ) => Effect.Effect<Output, E, R>,
55
59
  input: Input,
56
60
  pagination: PaginatedTrait,
61
+ requestOptions?: RequestOptions,
57
62
  ) => Stream.Stream<Output, E, R>;
58
63
 
59
64
  const missingPaginationConfig = (kind: string) => Stream.die(new Error(kind));
@@ -61,9 +66,16 @@ const missingPaginationConfig = (kind: string) => Stream.die(new Error(kind));
61
66
  /**
62
67
  * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
63
68
  */
64
- export const paginateSingle: PaginationStrategy = (operation, input) =>
69
+ export const paginateSingle: PaginationStrategy = (
70
+ operation,
71
+ input,
72
+ _pagination,
73
+ requestOptions,
74
+ ) =>
65
75
  Stream.make(input).pipe(
66
- Stream.mapEffect((requestPayload) => operation(requestPayload)),
76
+ Stream.mapEffect((requestPayload) =>
77
+ operation(requestPayload, requestOptions),
78
+ ),
67
79
  );
68
80
 
69
81
  // ============================================================================
@@ -83,10 +95,15 @@ export const paginatePageNumber = <
83
95
  Output,
84
96
  E,
85
97
  R,
98
+ RequestOptions = never,
86
99
  >(
87
- operation: (input: Input) => Effect.Effect<Output, E, R>,
100
+ operation: (
101
+ input: Input,
102
+ requestOptions?: RequestOptions,
103
+ ) => Effect.Effect<Output, E, R>,
88
104
  input: Omit<Input, string>,
89
105
  pagination: PaginatedTrait,
106
+ requestOptions?: RequestOptions,
90
107
  ): Stream.Stream<Output, E, R> => {
91
108
  const inputToken = pagination.inputToken;
92
109
  const outputToken = pagination.outputToken;
@@ -113,7 +130,7 @@ export const paginatePageNumber = <
113
130
  [inputToken]: state.page,
114
131
  } as Input;
115
132
 
116
- const response = yield* operation(requestPayload);
133
+ const response = yield* operation(requestPayload, requestOptions);
117
134
 
118
135
  const nextPage = getPath(response, outputToken) as
119
136
  | number
@@ -166,10 +183,15 @@ export const paginateCursor = <
166
183
  Output,
167
184
  E,
168
185
  R,
186
+ RequestOptions = never,
169
187
  >(
170
- operation: (input: Input) => Effect.Effect<Output, E, R>,
188
+ operation: (
189
+ input: Input,
190
+ requestOptions?: RequestOptions,
191
+ ) => Effect.Effect<Output, E, R>,
171
192
  input: Omit<Input, string>,
172
193
  pagination: PaginatedTrait,
194
+ requestOptions?: RequestOptions,
173
195
  ): Stream.Stream<Output, E, R> => {
174
196
  const inputToken = pagination.inputToken;
175
197
  const outputToken = pagination.outputToken;
@@ -196,7 +218,7 @@ export const paginateCursor = <
196
218
  ...(state.cursor ? { [inputToken]: state.cursor } : {}),
197
219
  } as Input;
198
220
 
199
- const response = yield* operation(requestPayload);
221
+ const response = yield* operation(requestPayload, requestOptions);
200
222
 
201
223
  const nextCursor = getPath(response, outputToken) as
202
224
  | string
@@ -231,10 +253,15 @@ export const paginateToken = <
231
253
  Output,
232
254
  E,
233
255
  R,
256
+ RequestOptions = never,
234
257
  >(
235
- operation: (input: Input) => Effect.Effect<Output, E, R>,
258
+ operation: (
259
+ input: Input,
260
+ requestOptions?: RequestOptions,
261
+ ) => Effect.Effect<Output, E, R>,
236
262
  input: Input,
237
263
  pagination: PaginatedTrait,
264
+ requestOptions?: RequestOptions,
238
265
  ): Stream.Stream<Output, E, R> => {
239
266
  const inputToken = pagination.inputToken;
240
267
  const outputToken = pagination.outputToken;
@@ -258,7 +285,10 @@ export const paginateToken = <
258
285
  ? { ...input, [inputToken]: state.token }
259
286
  : input;
260
287
 
261
- const response = yield* operation(requestPayload as Input);
288
+ const response = yield* operation(
289
+ requestPayload as Input,
290
+ requestOptions,
291
+ );
262
292
 
263
293
  const nextToken = getPath(response, outputToken);
264
294
 
@@ -280,21 +310,22 @@ export const paginateWithDefaults: PaginationStrategy = (
280
310
  operation,
281
311
  input,
282
312
  pagination,
313
+ requestOptions,
283
314
  ) => {
284
315
  const mode = pagination.mode ?? "token";
285
316
 
286
317
  switch (mode) {
287
318
  case "page":
288
- return paginatePageNumber(operation, input, pagination);
319
+ return paginatePageNumber(operation, input, pagination, requestOptions);
289
320
  case "cursor":
290
- return paginateCursor(operation, input, pagination);
321
+ return paginateCursor(operation, input, pagination, requestOptions);
291
322
  case "single":
292
323
  return missingPaginationConfig(
293
324
  "Single-page pagination requires a provider-specific pagination strategy",
294
325
  );
295
326
  case "token":
296
327
  default:
297
- return paginateToken(operation, input, pagination);
328
+ return paginateToken(operation, input, pagination, requestOptions);
298
329
  }
299
330
  };
300
331