@distilled.cloud/core 0.2.6 → 0.4.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
@@ -28,7 +28,8 @@
28
28
  import * as Effect from "effect/Effect";
29
29
  import * as Schema from "effect/Schema";
30
30
  import * as Stream from "effect/Stream";
31
- import type { PaginatedTrait } from "./pagination.ts";
31
+ import { type PaginatedTrait, type PaginationStrategy } from "./pagination.ts";
32
+ import * as Traits from "./traits.ts";
32
33
  /**
33
34
  * An operation that can be used in two ways:
34
35
  * 1. Direct call: `yield* operation(input)` - returns Effect with requirements
@@ -38,10 +39,24 @@ export type OperationMethod<I, A, E, R> = Effect.Effect<(input: I) => Effect.Eff
38
39
  /**
39
40
  * A paginated operation that additionally has `.pages()` and `.items()` methods.
40
41
  */
42
+ type PaginatedItem<A> = A extends ReadonlyArray<infer Item> ? Item : A extends {
43
+ result: ReadonlyArray<infer Item>;
44
+ } ? Item : A extends {
45
+ result?: ReadonlyArray<infer Item> | null | undefined;
46
+ } ? Item : A extends {
47
+ result: {
48
+ items: ReadonlyArray<infer Item>;
49
+ };
50
+ } ? Item : A extends {
51
+ result?: {
52
+ items?: ReadonlyArray<infer Item> | null | undefined;
53
+ } | null | undefined;
54
+ } ? Item : unknown;
41
55
  export type PaginatedOperationMethod<I, A, E, R> = OperationMethod<I, A, E, R> & {
42
56
  pages: (input: I) => Stream.Stream<A, E, R>;
43
- items: (input: I) => Stream.Stream<unknown, E, R>;
57
+ items: (input: I) => Stream.Stream<PaginatedItem<A>, E, R>;
44
58
  };
59
+ type ResolvedClientCredentials<Creds> = Creds extends Effect.Effect<infer Resolved, any, any> ? Resolved : Creds;
45
60
  /**
46
61
  * Configuration for the API client factory.
47
62
  * SDKs provide this to customize how errors are matched and credentials are applied.
@@ -52,9 +67,9 @@ export interface ClientConfig<Creds> {
52
67
  new (): Creds;
53
68
  };
54
69
  /** Get the base URL from credentials */
55
- getBaseUrl: (creds: Creds) => string;
70
+ getBaseUrl: (creds: ResolvedClientCredentials<Creds>) => string;
56
71
  /** Get authorization header(s) from credentials */
57
- getAuthHeaders: (creds: Creds) => Record<string, string>;
72
+ getAuthHeaders: (creds: ResolvedClientCredentials<Creds>) => Record<string, string>;
58
73
  /** Match an error response body to a typed error.
59
74
  * Should return Effect.fail(error) for known errors,
60
75
  * or Effect.fail(fallbackError) for unknown errors.
@@ -71,6 +86,16 @@ export interface ClientConfig<Creds> {
71
86
  * For example, Cloudflare wraps responses in `{ result: <data>, ... }`.
72
87
  */
73
88
  transformResponse?: (body: unknown) => unknown;
89
+ /**
90
+ * Optional transform applied to encoded request parts before building the
91
+ * outbound HTTP request.
92
+ */
93
+ transformRequestParts?: (input: {
94
+ input: Record<string, unknown>;
95
+ method: string;
96
+ pathTemplate: string;
97
+ parts: Traits.RequestParts;
98
+ }) => Traits.RequestParts;
74
99
  }
75
100
  /**
76
101
  * Base API error type - any error class with at least a _tag and message.
@@ -118,6 +143,7 @@ export interface PaginatedOperationConfig<I extends Schema.Top, O extends Schema
118
143
  */
119
144
  export declare const makeAPI: <Creds>(config: ClientConfig<Creds>) => {
120
145
  make: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => OperationConfig<I, O, E>) => any;
121
- makePaginated: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => PaginatedOperationConfig<I, O, E>, paginateFn?: ((baseFn: (input: any) => Effect.Effect<any, any, any>, input: any, pagination: PaginatedTrait) => Stream.Stream<any, any, any>) | undefined) => any;
146
+ makePaginated: <I extends Schema.Top, O extends Schema.Top, const E extends readonly ApiErrorClass[] = readonly []>(configFn: () => PaginatedOperationConfig<I, O, E>, paginateFn?: PaginationStrategy | undefined) => any;
122
147
  };
148
+ export {};
123
149
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -35,8 +35,14 @@ import * as HttpClient from "effect/unstable/http/HttpClient";
35
35
  import * as HttpClientError from "effect/unstable/http/HttpClientError";
36
36
  import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
37
37
  import { SingleShotGen } from "effect/Utils";
38
+ import { extractItems, paginateWithDefaults, } from "./pagination.js";
38
39
  import * as Traits from "./traits.js";
39
40
  import { getPath } from "./traits.js";
41
+ const isEffectLike = (value) => typeof value === "object" &&
42
+ value !== null &&
43
+ typeof value.pipe === "function" &&
44
+ typeof value[Symbol.iterator] ===
45
+ "function";
40
46
  // ============================================================================
41
47
  // AST Helpers
42
48
  // ============================================================================
@@ -181,6 +187,7 @@ export const makeAPI = (config) => {
181
187
  // Support both input/output and inputSchema/outputSchema aliases
182
188
  const inputSchema = (opConfig.inputSchema ?? opConfig.input);
183
189
  const outputSchema = (opConfig.outputSchema ?? opConfig.output);
190
+ const responsePath = Traits.getResponsePath(outputSchema.ast);
184
191
  // Read HTTP trait from input schema annotations
185
192
  const httpTrait = Traits.getHttpTrait(inputSchema.ast);
186
193
  if (!httpTrait) {
@@ -188,12 +195,23 @@ export const makeAPI = (config) => {
188
195
  }
189
196
  const method = httpTrait.method;
190
197
  const fn = (input) => Effect.gen(function* () {
191
- const creds = yield* config.credentials;
198
+ const credentials = yield* config.credentials;
199
+ const creds = isEffectLike(credentials)
200
+ ? yield* credentials
201
+ : credentials;
192
202
  const client = yield* HttpClient.HttpClient;
193
203
  const baseUrl = config.getBaseUrl(creds);
194
204
  const authHeaders = config.getAuthHeaders(creds);
195
205
  // Use schema-aware request builder for proper camelCase → wire_name mapping
196
- const parts = Traits.buildRequestParts(inputSchema.ast, httpTrait, input, inputSchema);
206
+ let parts = Traits.buildRequestParts(inputSchema.ast, httpTrait, input, inputSchema);
207
+ if (config.transformRequestParts) {
208
+ parts = config.transformRequestParts({
209
+ input: input,
210
+ method,
211
+ pathTemplate: httpTrait.path,
212
+ parts,
213
+ });
214
+ }
197
215
  let request = HttpClientRequest.make(method)(baseUrl + parts.path).pipe(HttpClientRequest.setHeaders(authHeaders), HttpClientRequest.setHeaders(parts.headers), HttpClientRequest.setHeader("Accept", "application/json"));
198
216
  // Set Content-Type based on body type
199
217
  // - Skip for FormData (multipart) — browser sets boundary
@@ -266,6 +284,13 @@ export const makeAPI = (config) => {
266
284
  let responseBody = config.transformResponse
267
285
  ? config.transformResponse(rawBody)
268
286
  : rawBody;
287
+ if (responsePath) {
288
+ const nested = getPath(responseBody, responsePath);
289
+ if (nested !== undefined) {
290
+ responseBody =
291
+ responsePath === "result" && nested === null ? {} : nested;
292
+ }
293
+ }
269
294
  // Handle Cloudflare-style paginated responses where result is
270
295
  // { items: [...] } but the schema expects an array
271
296
  if (isArrayAST(outputSchema.ast) &&
@@ -300,35 +325,13 @@ export const makeAPI = (config) => {
300
325
  outputSchema: opConfig.outputSchema ?? opConfig.output,
301
326
  errors: opConfig.errors,
302
327
  }));
303
- // Default pagination: token-based (works for Cloudflare/GCP style)
304
- const defaultPaginateFn = (op, input, pag) => {
305
- return Stream.unfold({ token: undefined, done: false }, (state) => Effect.gen(function* () {
306
- if (state.done)
307
- return undefined;
308
- const requestPayload = state.token !== undefined
309
- ? { ...input, [pag.inputToken]: state.token }
310
- : input;
311
- const response = yield* op(requestPayload);
312
- const nextToken = getPath(response, pag.outputToken);
313
- return [
314
- response,
315
- {
316
- token: nextToken,
317
- done: nextToken === undefined || nextToken === null,
318
- },
319
- ];
320
- }));
321
- };
322
- const paginate = paginateFn ?? defaultPaginateFn;
328
+ const paginate = paginateFn ?? paginateWithDefaults;
323
329
  // Stream all pages
324
330
  const pagesFn = (input) => paginate(baseFn, input, pagination);
325
331
  // Stream individual items
326
- const itemsFn = (input) => pagesFn(input).pipe(Stream.flatMap((page) => {
327
- if (!pagination.items)
328
- return Stream.make(page);
329
- const items = getPath(page, pagination.items);
330
- return Stream.fromIterable(items ?? []);
331
- }));
332
+ const itemsFn = (input) => pagination.items
333
+ ? extractItems(pagesFn(input), pagination.items)
334
+ : pagesFn(input);
332
335
  const result = baseFn;
333
336
  result.pages = pagesFn;
334
337
  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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"}
@@ -27,15 +27,22 @@ import * as Stream from "effect/Stream";
27
27
  * Pagination trait describing how to navigate between pages.
28
28
  */
29
29
  export interface PaginatedTrait {
30
+ /** Pagination strategy */
31
+ mode?: "token" | "page" | "cursor" | "single";
30
32
  /** The name of the input member containing the page/cursor token */
31
- inputToken: string;
33
+ inputToken?: string;
32
34
  /** The path to the output member containing the next page/cursor token */
33
- outputToken: string;
35
+ outputToken?: string;
34
36
  /** The path to the output member containing the paginated items */
35
37
  items?: string;
36
38
  /** The name of the input member that limits page size */
37
39
  pageSize?: string;
38
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>;
42
+ /**
43
+ * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
44
+ */
45
+ export declare const paginateSingle: PaginationStrategy;
39
46
  /**
40
47
  * Creates a stream of pages using page-number pagination.
41
48
  *
@@ -63,6 +70,10 @@ export declare const paginateCursor: <Input extends Record<string, unknown>, Out
63
70
  * @returns A Stream of full page responses
64
71
  */
65
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>;
73
+ /**
74
+ * Shared default pagination dispatcher for SDKs that use generic token/cursor/page traversal.
75
+ */
76
+ export declare const paginateWithDefaults: PaginationStrategy;
66
77
  /**
67
78
  * Extracts individual items from a page stream.
68
79
  *
@@ -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,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,GAC7B,KAAK,kCACL,MAAM,EACN,CAAC,EACD,CAAC,kJAmCF,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,kCACL,MAAM,EACN,CAAC,EACD,CAAC,kJAmCF,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,kCACL,MAAM,EACN,CAAC,EACD,CAAC,oIAgCF,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,qFAS5C,CAAC"}
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,kCACL,MAAM,EACN,CAAC,EACD,CAAC,kJA+CF,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,GACzB,KAAK,kCACL,MAAM,EACN,CAAC,EACD,CAAC,kJA+CF,CAAC;AAMF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GACxB,KAAK,kCACL,MAAM,EACN,CAAC,EACD,CAAC,oIAyCF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAoBlC,CAAC;AAMF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,qFAS5C,CAAC"}
package/lib/pagination.js CHANGED
@@ -24,6 +24,11 @@
24
24
  import * as Effect from "effect/Effect";
25
25
  import * as Stream from "effect/Stream";
26
26
  import { getPath } from "./traits.js";
27
+ const missingPaginationConfig = (kind) => Stream.die(new Error(kind));
28
+ /**
29
+ * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
30
+ */
31
+ export const paginateSingle = (operation, input) => Stream.make(input).pipe(Stream.mapEffect((requestPayload) => operation(requestPayload)));
27
32
  // ============================================================================
28
33
  // Page-based Pagination (PlanetScale style)
29
34
  // ============================================================================
@@ -36,23 +41,32 @@ import { getPath } from "./traits.js";
36
41
  * @returns A Stream of full page responses
37
42
  */
38
43
  export const paginatePageNumber = (operation, input, pagination) => {
44
+ const inputToken = pagination.inputToken;
45
+ const outputToken = pagination.outputToken;
46
+ const inputRecord = input;
47
+ if (!inputToken || !outputToken) {
48
+ return missingPaginationConfig("Page-number pagination requires inputToken and outputToken");
49
+ }
50
+ const startPage = typeof inputRecord[inputToken] === "number"
51
+ ? inputRecord[inputToken]
52
+ : 1;
39
53
  const unfoldFn = (state) => Effect.gen(function* () {
40
54
  if (state.done) {
41
55
  return undefined;
42
56
  }
43
57
  const requestPayload = {
44
58
  ...input,
45
- [pagination.inputToken]: state.page,
59
+ [inputToken]: state.page,
46
60
  };
47
61
  const response = yield* operation(requestPayload);
48
- const nextPage = getPath(response, pagination.outputToken);
62
+ const nextPage = getPath(response, outputToken);
49
63
  const nextState = {
50
64
  page: nextPage ?? state.page + 1,
51
65
  done: nextPage === null || nextPage === undefined,
52
66
  };
53
67
  return [response, nextState];
54
68
  });
55
- return Stream.unfold({ page: 1, done: false }, unfoldFn);
69
+ return Stream.unfold({ page: startPage, done: false }, unfoldFn);
56
70
  };
57
71
  // ============================================================================
58
72
  // Cursor-based Pagination (Neon style)
@@ -66,23 +80,32 @@ export const paginatePageNumber = (operation, input, pagination) => {
66
80
  * @returns A Stream of full page responses
67
81
  */
68
82
  export const paginateCursor = (operation, input, pagination) => {
83
+ const inputToken = pagination.inputToken;
84
+ const outputToken = pagination.outputToken;
85
+ const inputRecord = input;
86
+ if (!inputToken || !outputToken) {
87
+ return missingPaginationConfig("Cursor pagination requires inputToken and outputToken");
88
+ }
89
+ const startCursor = typeof inputRecord[inputToken] === "string"
90
+ ? inputRecord[inputToken]
91
+ : undefined;
69
92
  const unfoldFn = (state) => Effect.gen(function* () {
70
93
  if (state.done) {
71
94
  return undefined;
72
95
  }
73
96
  const requestPayload = {
74
97
  ...input,
75
- ...(state.cursor ? { [pagination.inputToken]: state.cursor } : {}),
98
+ ...(state.cursor ? { [inputToken]: state.cursor } : {}),
76
99
  };
77
100
  const response = yield* operation(requestPayload);
78
- const nextCursor = getPath(response, pagination.outputToken);
101
+ const nextCursor = getPath(response, outputToken);
79
102
  const nextState = {
80
103
  cursor: nextCursor ?? undefined,
81
104
  done: nextCursor === null || nextCursor === undefined,
82
105
  };
83
106
  return [response, nextState];
84
107
  });
85
- return Stream.unfold({ cursor: undefined, done: false }, unfoldFn);
108
+ return Stream.unfold({ cursor: startCursor, done: false }, unfoldFn);
86
109
  };
87
110
  // ============================================================================
88
111
  // Token-based Pagination (AWS style)
@@ -96,22 +119,46 @@ export const paginateCursor = (operation, input, pagination) => {
96
119
  * @returns A Stream of full page responses
97
120
  */
98
121
  export const paginateToken = (operation, input, pagination) => {
122
+ const inputToken = pagination.inputToken;
123
+ const outputToken = pagination.outputToken;
124
+ const inputRecord = input;
125
+ if (!inputToken || !outputToken) {
126
+ return missingPaginationConfig("Token pagination requires inputToken and outputToken");
127
+ }
128
+ const startToken = inputRecord[inputToken];
99
129
  const unfoldFn = (state) => Effect.gen(function* () {
100
130
  if (state.done) {
101
131
  return undefined;
102
132
  }
103
133
  const requestPayload = state.token !== undefined
104
- ? { ...input, [pagination.inputToken]: state.token }
134
+ ? { ...input, [inputToken]: state.token }
105
135
  : input;
106
136
  const response = yield* operation(requestPayload);
107
- const nextToken = getPath(response, pagination.outputToken);
137
+ const nextToken = getPath(response, outputToken);
108
138
  const nextState = {
109
139
  token: nextToken,
110
140
  done: nextToken === undefined || nextToken === null,
111
141
  };
112
142
  return [response, nextState];
113
143
  });
114
- return Stream.unfold({ token: undefined, done: false }, unfoldFn);
144
+ return Stream.unfold({ token: startToken, done: false }, unfoldFn);
145
+ };
146
+ /**
147
+ * Shared default pagination dispatcher for SDKs that use generic token/cursor/page traversal.
148
+ */
149
+ export const paginateWithDefaults = (operation, input, pagination) => {
150
+ const mode = pagination.mode ?? "token";
151
+ switch (mode) {
152
+ case "page":
153
+ return paginatePageNumber(operation, input, pagination);
154
+ case "cursor":
155
+ return paginateCursor(operation, input, pagination);
156
+ case "single":
157
+ return missingPaginationConfig("Single-page pagination requires a provider-specific pagination strategy");
158
+ case "token":
159
+ default:
160
+ return paginateToken(operation, input, pagination);
161
+ }
115
162
  };
116
163
  // ============================================================================
117
164
  // Item extraction
@@ -1 +1 @@
1
- {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pagination.js","sourceRoot":"","sources":["../src/pagination.ts"],"names":[],"mappings":"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"}
package/lib/traits.d.ts CHANGED
@@ -139,6 +139,14 @@ export declare const httpBodySymbol: unique symbol;
139
139
  * (not a named field within a JSON body).
140
140
  */
141
141
  export declare const HttpBody: () => Annotation;
142
+ /** Symbol for response body path transformation */
143
+ export declare const responsePathSymbol: unique symbol;
144
+ /**
145
+ * ResponsePath - decode the response from a nested path within the raw body.
146
+ * Useful for providers that wrap successful responses in envelopes like
147
+ * `{ result: <payload>, result_info: ... }`.
148
+ */
149
+ export declare const ResponsePath: (path: string) => Annotation;
142
150
  /** Symbol for form data file annotation */
143
151
  export declare const httpFormDataFileSymbol: unique symbol;
144
152
  /**
@@ -186,6 +194,7 @@ export declare const getAnnotation: <T>(ast: AST.AST, symbol: symbol) => T | und
186
194
  * Get HTTP trait from a schema's AST.
187
195
  */
188
196
  export declare const getHttpTrait: (ast: AST.AST) => HttpTrait | undefined;
197
+ export declare const getResponsePath: (ast: AST.AST) => string | undefined;
189
198
  /**
190
199
  * Check if a PropertySignature has the pathParam annotation.
191
200
  * Works for both PathParam() (annotation value = true) and HttpPath("wire_name") (annotation value = string).
@@ -1 +1 @@
1
- {"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"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"}
package/lib/traits.js CHANGED
@@ -164,6 +164,14 @@ export const httpBodySymbol = Symbol.for("@distilled.cloud/http-body");
164
164
  * (not a named field within a JSON body).
165
165
  */
166
166
  export const HttpBody = () => makeAnnotation(httpBodySymbol, true);
167
+ /** Symbol for response body path transformation */
168
+ export const responsePathSymbol = Symbol.for("@distilled.cloud/response-path");
169
+ /**
170
+ * ResponsePath - decode the response from a nested path within the raw body.
171
+ * Useful for providers that wrap successful responses in envelopes like
172
+ * `{ result: <payload>, result_info: ... }`.
173
+ */
174
+ export const ResponsePath = (path) => makeAnnotation(responsePathSymbol, path);
167
175
  /** Symbol for form data file annotation */
168
176
  export const httpFormDataFileSymbol = Symbol.for("@distilled.cloud/http-form-data-file");
169
177
  /**
@@ -219,6 +227,7 @@ export const getAnnotation = (ast, symbol) => {
219
227
  * Get HTTP trait from a schema's AST.
220
228
  */
221
229
  export const getHttpTrait = (ast) => getAnnotation(ast, httpSymbol);
230
+ export const getResponsePath = (ast) => getAnnotation(ast, responsePathSymbol);
222
231
  /**
223
232
  * Check if a PropertySignature has the pathParam annotation.
224
233
  * Works for both PathParam() (annotation value = true) and HttpPath("wire_name") (annotation value = string).
package/lib/traits.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.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.2.6",
3
+ "version": "0.4.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/alchemy-run/distilled",
package/src/client.ts CHANGED
@@ -35,9 +35,14 @@ import * as HttpClient from "effect/unstable/http/HttpClient";
35
35
  import * as HttpClientError from "effect/unstable/http/HttpClientError";
36
36
  import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
37
37
  import { SingleShotGen } from "effect/Utils";
38
+ import {
39
+ extractItems,
40
+ paginateWithDefaults,
41
+ type PaginatedTrait,
42
+ type PaginationStrategy,
43
+ } from "./pagination.ts";
38
44
  import * as Traits from "./traits.ts";
39
45
  import { getPath } from "./traits.ts";
40
- import type { PaginatedTrait } from "./pagination.ts";
41
46
 
42
47
  // ============================================================================
43
48
  // Client Types
@@ -58,6 +63,26 @@ export type OperationMethod<I, A, E, R> = Effect.Effect<
58
63
  /**
59
64
  * A paginated operation that additionally has `.pages()` and `.items()` methods.
60
65
  */
66
+ type PaginatedItem<A> =
67
+ A extends ReadonlyArray<infer Item>
68
+ ? Item
69
+ : A extends { result: ReadonlyArray<infer Item> }
70
+ ? Item
71
+ : A extends { result?: ReadonlyArray<infer Item> | null | undefined }
72
+ ? Item
73
+ : A extends { result: { items: ReadonlyArray<infer Item> } }
74
+ ? Item
75
+ : A extends {
76
+ result?:
77
+ | {
78
+ items?: ReadonlyArray<infer Item> | null | undefined;
79
+ }
80
+ | null
81
+ | undefined;
82
+ }
83
+ ? Item
84
+ : unknown;
85
+
61
86
  export type PaginatedOperationMethod<I, A, E, R> = OperationMethod<
62
87
  I,
63
88
  A,
@@ -65,9 +90,19 @@ export type PaginatedOperationMethod<I, A, E, R> = OperationMethod<
65
90
  R
66
91
  > & {
67
92
  pages: (input: I) => Stream.Stream<A, E, R>;
68
- items: (input: I) => Stream.Stream<unknown, E, R>;
93
+ items: (input: I) => Stream.Stream<PaginatedItem<A>, E, R>;
69
94
  };
70
95
 
96
+ type ResolvedClientCredentials<Creds> =
97
+ Creds extends Effect.Effect<infer Resolved, any, any> ? Resolved : Creds;
98
+
99
+ const isEffectLike = (value: unknown): value is Effect.Effect<unknown> =>
100
+ typeof value === "object" &&
101
+ value !== null &&
102
+ typeof (value as { pipe?: unknown }).pipe === "function" &&
103
+ typeof (value as { [Symbol.iterator]?: unknown })[Symbol.iterator] ===
104
+ "function";
105
+
71
106
  /**
72
107
  * Configuration for the API client factory.
73
108
  * SDKs provide this to customize how errors are matched and credentials are applied.
@@ -79,10 +114,12 @@ export interface ClientConfig<Creds> {
79
114
  };
80
115
 
81
116
  /** Get the base URL from credentials */
82
- getBaseUrl: (creds: Creds) => string;
117
+ getBaseUrl: (creds: ResolvedClientCredentials<Creds>) => string;
83
118
 
84
119
  /** Get authorization header(s) from credentials */
85
- getAuthHeaders: (creds: Creds) => Record<string, string>;
120
+ getAuthHeaders: (
121
+ creds: ResolvedClientCredentials<Creds>,
122
+ ) => Record<string, string>;
86
123
 
87
124
  /** Match an error response body to a typed error.
88
125
  * Should return Effect.fail(error) for known errors,
@@ -103,6 +140,17 @@ export interface ClientConfig<Creds> {
103
140
  * For example, Cloudflare wraps responses in `{ result: <data>, ... }`.
104
141
  */
105
142
  transformResponse?: (body: unknown) => unknown;
143
+
144
+ /**
145
+ * Optional transform applied to encoded request parts before building the
146
+ * outbound HTTP request.
147
+ */
148
+ transformRequestParts?: (input: {
149
+ input: Record<string, unknown>;
150
+ method: string;
151
+ pathTemplate: string;
152
+ parts: Traits.RequestParts;
153
+ }) => Traits.RequestParts;
106
154
  }
107
155
 
108
156
  /**
@@ -313,6 +361,7 @@ function buildFormData(body: Record<string, unknown>): FormData {
313
361
  */
314
362
  export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
315
363
  type _ClientErrors = HttpClientError.HttpClientError | HttpBody.HttpBodyError;
364
+ type ResolvedCreds = ResolvedClientCredentials<Creds>;
316
365
 
317
366
  return {
318
367
  make: <
@@ -326,6 +375,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
326
375
  // Support both input/output and inputSchema/outputSchema aliases
327
376
  const inputSchema = (opConfig.inputSchema ?? opConfig.input)!;
328
377
  const outputSchema = (opConfig.outputSchema ?? opConfig.output)!;
378
+ const responsePath = Traits.getResponsePath(outputSchema.ast);
329
379
  type Input = Schema.Schema.Type<I>;
330
380
 
331
381
  // Read HTTP trait from input schema annotations
@@ -339,20 +389,32 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
339
389
 
340
390
  const fn = (input: Input): Effect.Effect<any, any, any> =>
341
391
  Effect.gen(function* () {
342
- const creds = yield* config.credentials as any;
392
+ const credentials = yield* config.credentials as any;
393
+ const creds = isEffectLike(credentials)
394
+ ? yield* credentials
395
+ : credentials;
343
396
  const client = yield* HttpClient.HttpClient;
344
397
 
345
- const baseUrl = config.getBaseUrl(creds as Creds);
346
- const authHeaders = config.getAuthHeaders(creds as Creds);
398
+ const baseUrl = config.getBaseUrl(creds as ResolvedCreds);
399
+ const authHeaders = config.getAuthHeaders(creds as ResolvedCreds);
347
400
 
348
401
  // Use schema-aware request builder for proper camelCase → wire_name mapping
349
- const parts = Traits.buildRequestParts(
402
+ let parts = Traits.buildRequestParts(
350
403
  inputSchema.ast,
351
404
  httpTrait,
352
405
  input as Record<string, unknown>,
353
406
  inputSchema,
354
407
  );
355
408
 
409
+ if (config.transformRequestParts) {
410
+ parts = config.transformRequestParts({
411
+ input: input as Record<string, unknown>,
412
+ method,
413
+ pathTemplate: httpTrait.path,
414
+ parts,
415
+ });
416
+ }
417
+
356
418
  let request = HttpClientRequest.make(method)(
357
419
  baseUrl + parts.path,
358
420
  ).pipe(
@@ -475,6 +537,14 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
475
537
  ? config.transformResponse(rawBody)
476
538
  : rawBody;
477
539
 
540
+ if (responsePath) {
541
+ const nested = getPath(responseBody, responsePath);
542
+ if (nested !== undefined) {
543
+ responseBody =
544
+ responsePath === "result" && nested === null ? {} : nested;
545
+ }
546
+ }
547
+
478
548
  // Handle Cloudflare-style paginated responses where result is
479
549
  // { items: [...] } but the schema expects an array
480
550
  if (
@@ -521,11 +591,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
521
591
  const E extends readonly ApiErrorClass[] = readonly [],
522
592
  >(
523
593
  configFn: () => PaginatedOperationConfig<I, O, E>,
524
- paginateFn?: (
525
- baseFn: (input: any) => Effect.Effect<any, any, any>,
526
- input: any,
527
- pagination: PaginatedTrait,
528
- ) => Stream.Stream<any, any, any>,
594
+ paginateFn?: PaginationStrategy,
529
595
  ): any => {
530
596
  const opConfig = configFn();
531
597
  const pagination = opConfig.pagination!;
@@ -539,36 +605,7 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
539
605
 
540
606
  type Input = Schema.Schema.Type<I>;
541
607
 
542
- // Default pagination: token-based (works for Cloudflare/GCP style)
543
- const defaultPaginateFn = (
544
- op: (input: any) => Effect.Effect<any, any, any>,
545
- input: any,
546
- pag: PaginatedTrait,
547
- ): Stream.Stream<any, any, any> => {
548
- type State = { token: unknown; done: boolean };
549
- return Stream.unfold(
550
- { token: undefined, done: false } as State,
551
- (state: State) =>
552
- Effect.gen(function* () {
553
- if (state.done) return undefined;
554
- const requestPayload =
555
- state.token !== undefined
556
- ? { ...input, [pag.inputToken]: state.token }
557
- : input;
558
- const response = yield* op(requestPayload);
559
- const nextToken = getPath(response, pag.outputToken);
560
- return [
561
- response,
562
- {
563
- token: nextToken,
564
- done: nextToken === undefined || nextToken === null,
565
- },
566
- ] as const;
567
- }),
568
- );
569
- };
570
-
571
- const paginate = paginateFn ?? defaultPaginateFn;
608
+ const paginate = paginateFn ?? paginateWithDefaults;
572
609
 
573
610
  // Stream all pages
574
611
  const pagesFn = (input: Omit<Input, string>) =>
@@ -576,15 +613,9 @@ export const makeAPI = <Creds>(config: ClientConfig<Creds>) => {
576
613
 
577
614
  // Stream individual items
578
615
  const itemsFn = (input: Omit<Input, string>) =>
579
- pagesFn(input).pipe(
580
- Stream.flatMap((page) => {
581
- if (!pagination.items) return Stream.make(page);
582
- const items = getPath(page, pagination.items) as
583
- | readonly unknown[]
584
- | undefined;
585
- return Stream.fromIterable(items ?? []);
586
- }),
587
- );
616
+ pagination.items
617
+ ? extractItems(pagesFn(input), pagination.items)
618
+ : pagesFn(input);
588
619
 
589
620
  const result = baseFn as typeof baseFn & {
590
621
  pages: typeof pagesFn;
package/src/pagination.ts CHANGED
@@ -33,16 +33,39 @@ import { getPath } from "./traits.ts";
33
33
  * Pagination trait describing how to navigate between pages.
34
34
  */
35
35
  export interface PaginatedTrait {
36
+ /** Pagination strategy */
37
+ mode?: "token" | "page" | "cursor" | "single";
36
38
  /** The name of the input member containing the page/cursor token */
37
- inputToken: string;
39
+ inputToken?: string;
38
40
  /** The path to the output member containing the next page/cursor token */
39
- outputToken: string;
41
+ outputToken?: string;
40
42
  /** The path to the output member containing the paginated items */
41
43
  items?: string;
42
44
  /** The name of the input member that limits page size */
43
45
  pageSize?: string;
44
46
  }
45
47
 
48
+ export type PaginationStrategy = <
49
+ Input extends Record<string, unknown>,
50
+ Output,
51
+ E,
52
+ R,
53
+ >(
54
+ operation: (input: Input) => Effect.Effect<Output, E, R>,
55
+ input: Input,
56
+ pagination: PaginatedTrait,
57
+ ) => Stream.Stream<Output, E, R>;
58
+
59
+ const missingPaginationConfig = (kind: string) => Stream.die(new Error(kind));
60
+
61
+ /**
62
+ * Creates a stream for single-shot list endpoints that still expose the paginated API surface.
63
+ */
64
+ export const paginateSingle: PaginationStrategy = (operation, input) =>
65
+ Stream.make(input).pipe(
66
+ Stream.mapEffect((requestPayload) => operation(requestPayload)),
67
+ );
68
+
46
69
  // ============================================================================
47
70
  // Page-based Pagination (PlanetScale style)
48
71
  // ============================================================================
@@ -65,7 +88,19 @@ export const paginatePageNumber = <
65
88
  input: Omit<Input, string>,
66
89
  pagination: PaginatedTrait,
67
90
  ): Stream.Stream<Output, E, R> => {
91
+ const inputToken = pagination.inputToken;
92
+ const outputToken = pagination.outputToken;
93
+ const inputRecord = input as Record<string, unknown>;
94
+ if (!inputToken || !outputToken) {
95
+ return missingPaginationConfig(
96
+ "Page-number pagination requires inputToken and outputToken",
97
+ );
98
+ }
68
99
  type State = { page: number; done: boolean };
100
+ const startPage =
101
+ typeof inputRecord[inputToken] === "number"
102
+ ? (inputRecord[inputToken] as number)
103
+ : 1;
69
104
 
70
105
  const unfoldFn = (state: State) =>
71
106
  Effect.gen(function* () {
@@ -75,12 +110,12 @@ export const paginatePageNumber = <
75
110
 
76
111
  const requestPayload = {
77
112
  ...input,
78
- [pagination.inputToken]: state.page,
113
+ [inputToken]: state.page,
79
114
  } as Input;
80
115
 
81
116
  const response = yield* operation(requestPayload);
82
117
 
83
- const nextPage = getPath(response, pagination.outputToken) as
118
+ const nextPage = getPath(response, outputToken) as
84
119
  | number
85
120
  | null
86
121
  | undefined;
@@ -93,7 +128,7 @@ export const paginatePageNumber = <
93
128
  return [response, nextState] as const;
94
129
  });
95
130
 
96
- return Stream.unfold({ page: 1, done: false } as State, unfoldFn);
131
+ return Stream.unfold({ page: startPage, done: false } as State, unfoldFn);
97
132
  };
98
133
 
99
134
  // ============================================================================
@@ -118,7 +153,19 @@ export const paginateCursor = <
118
153
  input: Omit<Input, string>,
119
154
  pagination: PaginatedTrait,
120
155
  ): Stream.Stream<Output, E, R> => {
156
+ const inputToken = pagination.inputToken;
157
+ const outputToken = pagination.outputToken;
158
+ const inputRecord = input as Record<string, unknown>;
159
+ if (!inputToken || !outputToken) {
160
+ return missingPaginationConfig(
161
+ "Cursor pagination requires inputToken and outputToken",
162
+ );
163
+ }
121
164
  type State = { cursor: string | undefined; done: boolean };
165
+ const startCursor =
166
+ typeof inputRecord[inputToken] === "string"
167
+ ? (inputRecord[inputToken] as string)
168
+ : undefined;
122
169
 
123
170
  const unfoldFn = (state: State) =>
124
171
  Effect.gen(function* () {
@@ -128,12 +175,12 @@ export const paginateCursor = <
128
175
 
129
176
  const requestPayload = {
130
177
  ...input,
131
- ...(state.cursor ? { [pagination.inputToken]: state.cursor } : {}),
178
+ ...(state.cursor ? { [inputToken]: state.cursor } : {}),
132
179
  } as Input;
133
180
 
134
181
  const response = yield* operation(requestPayload);
135
182
 
136
- const nextCursor = getPath(response, pagination.outputToken) as
183
+ const nextCursor = getPath(response, outputToken) as
137
184
  | string
138
185
  | null
139
186
  | undefined;
@@ -146,7 +193,7 @@ export const paginateCursor = <
146
193
  return [response, nextState] as const;
147
194
  });
148
195
 
149
- return Stream.unfold({ cursor: undefined, done: false } as State, unfoldFn);
196
+ return Stream.unfold({ cursor: startCursor, done: false } as State, unfoldFn);
150
197
  };
151
198
 
152
199
  // ============================================================================
@@ -171,7 +218,16 @@ export const paginateToken = <
171
218
  input: Input,
172
219
  pagination: PaginatedTrait,
173
220
  ): Stream.Stream<Output, E, R> => {
221
+ const inputToken = pagination.inputToken;
222
+ const outputToken = pagination.outputToken;
223
+ const inputRecord = input as Record<string, unknown>;
224
+ if (!inputToken || !outputToken) {
225
+ return missingPaginationConfig(
226
+ "Token pagination requires inputToken and outputToken",
227
+ );
228
+ }
174
229
  type State = { token: unknown; done: boolean };
230
+ const startToken = inputRecord[inputToken];
175
231
 
176
232
  const unfoldFn = (state: State) =>
177
233
  Effect.gen(function* () {
@@ -181,12 +237,12 @@ export const paginateToken = <
181
237
 
182
238
  const requestPayload =
183
239
  state.token !== undefined
184
- ? { ...input, [pagination.inputToken]: state.token }
240
+ ? { ...input, [inputToken]: state.token }
185
241
  : input;
186
242
 
187
243
  const response = yield* operation(requestPayload as Input);
188
244
 
189
- const nextToken = getPath(response, pagination.outputToken);
245
+ const nextToken = getPath(response, outputToken);
190
246
 
191
247
  const nextState: State = {
192
248
  token: nextToken,
@@ -196,7 +252,32 @@ export const paginateToken = <
196
252
  return [response, nextState] as const;
197
253
  });
198
254
 
199
- return Stream.unfold({ token: undefined, done: false } as State, unfoldFn);
255
+ return Stream.unfold({ token: startToken, done: false } as State, unfoldFn);
256
+ };
257
+
258
+ /**
259
+ * Shared default pagination dispatcher for SDKs that use generic token/cursor/page traversal.
260
+ */
261
+ export const paginateWithDefaults: PaginationStrategy = (
262
+ operation,
263
+ input,
264
+ pagination,
265
+ ) => {
266
+ const mode = pagination.mode ?? "token";
267
+
268
+ switch (mode) {
269
+ case "page":
270
+ return paginatePageNumber(operation, input, pagination);
271
+ case "cursor":
272
+ return paginateCursor(operation, input, pagination);
273
+ case "single":
274
+ return missingPaginationConfig(
275
+ "Single-page pagination requires a provider-specific pagination strategy",
276
+ );
277
+ case "token":
278
+ default:
279
+ return paginateToken(operation, input, pagination);
280
+ }
200
281
  };
201
282
 
202
283
  // ============================================================================
package/src/traits.ts CHANGED
@@ -236,6 +236,17 @@ export const httpBodySymbol = Symbol.for("@distilled.cloud/http-body");
236
236
  */
237
237
  export const HttpBody = () => makeAnnotation(httpBodySymbol, true);
238
238
 
239
+ /** Symbol for response body path transformation */
240
+ export const responsePathSymbol = Symbol.for("@distilled.cloud/response-path");
241
+
242
+ /**
243
+ * ResponsePath - decode the response from a nested path within the raw body.
244
+ * Useful for providers that wrap successful responses in envelopes like
245
+ * `{ result: <payload>, result_info: ... }`.
246
+ */
247
+ export const ResponsePath = (path: string) =>
248
+ makeAnnotation(responsePathSymbol, path);
249
+
239
250
  /** Symbol for form data file annotation */
240
251
  export const httpFormDataFileSymbol = Symbol.for(
241
252
  "@distilled.cloud/http-form-data-file",
@@ -325,6 +336,9 @@ export const getAnnotation = <T>(
325
336
  export const getHttpTrait = (ast: AST.AST): HttpTrait | undefined =>
326
337
  getAnnotation<HttpTrait>(ast, httpSymbol);
327
338
 
339
+ export const getResponsePath = (ast: AST.AST): string | undefined =>
340
+ getAnnotation<string>(ast, responsePathSymbol);
341
+
328
342
  /**
329
343
  * Check if a PropertySignature has the pathParam annotation.
330
344
  * Works for both PathParam() (annotation value = true) and HttpPath("wire_name") (annotation value = string).