@redocly/client-generator 0.0.0-snapshot.manual → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/README.md +118 -422
  2. package/lib/config-file.d.ts +2 -2
  3. package/lib/config-file.d.ts.map +1 -1
  4. package/lib/config-file.js +0 -18
  5. package/lib/config-file.js.map +1 -1
  6. package/lib/emitters/client-assembly.d.ts.map +1 -1
  7. package/lib/emitters/client-assembly.js +14 -15
  8. package/lib/emitters/client-assembly.js.map +1 -1
  9. package/lib/emitters/descriptor.d.ts.map +1 -1
  10. package/lib/emitters/descriptor.js +10 -29
  11. package/lib/emitters/descriptor.js.map +1 -1
  12. package/lib/emitters/emit-options.d.ts +16 -20
  13. package/lib/emitters/emit-options.d.ts.map +1 -1
  14. package/lib/emitters/emit-options.js +3 -2
  15. package/lib/emitters/emit-options.js.map +1 -1
  16. package/lib/emitters/faker.d.ts.map +1 -1
  17. package/lib/emitters/faker.js +25 -8
  18. package/lib/emitters/faker.js.map +1 -1
  19. package/lib/emitters/identifier.d.ts +6 -0
  20. package/lib/emitters/identifier.d.ts.map +1 -1
  21. package/lib/emitters/identifier.js +11 -1
  22. package/lib/emitters/identifier.js.map +1 -1
  23. package/lib/emitters/inline-runtime.js +1 -1
  24. package/lib/emitters/inline-runtime.js.map +1 -1
  25. package/lib/emitters/mock.d.ts +2 -2
  26. package/lib/emitters/mock.d.ts.map +1 -1
  27. package/lib/emitters/mock.js +59 -37
  28. package/lib/emitters/mock.js.map +1 -1
  29. package/lib/emitters/operation-aliases.d.ts.map +1 -1
  30. package/lib/emitters/operation-aliases.js +6 -0
  31. package/lib/emitters/operation-aliases.js.map +1 -1
  32. package/lib/emitters/operation-signature.d.ts +1 -0
  33. package/lib/emitters/operation-signature.d.ts.map +1 -1
  34. package/lib/emitters/operation-signature.js +11 -3
  35. package/lib/emitters/operation-signature.js.map +1 -1
  36. package/lib/emitters/operation-types.js +1 -1
  37. package/lib/emitters/operation-types.js.map +1 -1
  38. package/lib/emitters/operations.d.ts +2 -2
  39. package/lib/emitters/operations.d.ts.map +1 -1
  40. package/lib/emitters/operations.js +4 -2
  41. package/lib/emitters/operations.js.map +1 -1
  42. package/lib/emitters/pagination.d.ts +14 -7
  43. package/lib/emitters/pagination.d.ts.map +1 -1
  44. package/lib/emitters/pagination.js +70 -37
  45. package/lib/emitters/pagination.js.map +1 -1
  46. package/lib/emitters/reserved-names.d.ts +5 -0
  47. package/lib/emitters/reserved-names.d.ts.map +1 -0
  48. package/lib/emitters/reserved-names.js +134 -0
  49. package/lib/emitters/reserved-names.js.map +1 -0
  50. package/lib/emitters/runtime-sources.d.ts +6 -6
  51. package/lib/emitters/runtime-sources.js +6 -6
  52. package/lib/emitters/runtime-sources.js.map +1 -1
  53. package/lib/emitters/sample.d.ts +13 -1
  54. package/lib/emitters/sample.d.ts.map +1 -1
  55. package/lib/emitters/sample.js +138 -8
  56. package/lib/emitters/sample.js.map +1 -1
  57. package/lib/emitters/setup-bake.d.ts.map +1 -1
  58. package/lib/emitters/setup-bake.js +15 -1
  59. package/lib/emitters/setup-bake.js.map +1 -1
  60. package/lib/emitters/tanstack-query.d.ts +8 -3
  61. package/lib/emitters/tanstack-query.d.ts.map +1 -1
  62. package/lib/emitters/tanstack-query.js +231 -57
  63. package/lib/emitters/tanstack-query.js.map +1 -1
  64. package/lib/emitters/transformers.d.ts.map +1 -1
  65. package/lib/emitters/transformers.js +118 -36
  66. package/lib/emitters/transformers.js.map +1 -1
  67. package/lib/emitters/ts.d.ts.map +1 -1
  68. package/lib/emitters/ts.js +8 -0
  69. package/lib/emitters/ts.js.map +1 -1
  70. package/lib/emitters/types.d.ts +1 -9
  71. package/lib/emitters/types.d.ts.map +1 -1
  72. package/lib/emitters/types.js +4 -6
  73. package/lib/emitters/types.js.map +1 -1
  74. package/lib/emitters/wrapper-support.d.ts.map +1 -1
  75. package/lib/emitters/wrapper-support.js +2 -0
  76. package/lib/emitters/wrapper-support.js.map +1 -1
  77. package/lib/emitters/zod.d.ts.map +1 -1
  78. package/lib/emitters/zod.js +121 -19
  79. package/lib/emitters/zod.js.map +1 -1
  80. package/lib/generate.d.ts +25 -0
  81. package/lib/generate.d.ts.map +1 -0
  82. package/lib/generate.js +119 -0
  83. package/lib/generate.js.map +1 -0
  84. package/lib/generators/index.d.ts.map +1 -1
  85. package/lib/generators/index.js +9 -2
  86. package/lib/generators/index.js.map +1 -1
  87. package/lib/generators/mock.js +1 -1
  88. package/lib/generators/mock.js.map +1 -1
  89. package/lib/generators/resolve.js +6 -1
  90. package/lib/generators/resolve.js.map +1 -1
  91. package/lib/generators/swr.js +1 -1
  92. package/lib/generators/swr.js.map +1 -1
  93. package/lib/generators/tanstack-query.d.ts +9 -8
  94. package/lib/generators/tanstack-query.d.ts.map +1 -1
  95. package/lib/generators/tanstack-query.js +22 -18
  96. package/lib/generators/tanstack-query.js.map +1 -1
  97. package/lib/generators/transformers.d.ts.map +1 -1
  98. package/lib/generators/transformers.js +4 -2
  99. package/lib/generators/transformers.js.map +1 -1
  100. package/lib/generators/types.d.ts +2 -2
  101. package/lib/generators/types.d.ts.map +1 -1
  102. package/lib/index.d.ts +3 -20
  103. package/lib/index.d.ts.map +1 -1
  104. package/lib/index.js +8 -107
  105. package/lib/index.js.map +1 -1
  106. package/lib/intermediate-representation/build.d.ts.map +1 -1
  107. package/lib/intermediate-representation/build.js +25 -17
  108. package/lib/intermediate-representation/build.js.map +1 -1
  109. package/lib/intermediate-representation/model.d.ts +8 -8
  110. package/lib/intermediate-representation/model.d.ts.map +1 -1
  111. package/lib/intermediate-representation/normalize-swagger2.js +27 -2
  112. package/lib/intermediate-representation/normalize-swagger2.js.map +1 -1
  113. package/lib/intermediate-representation/sanitize-identifiers.d.ts +10 -0
  114. package/lib/intermediate-representation/sanitize-identifiers.d.ts.map +1 -1
  115. package/lib/intermediate-representation/sanitize-identifiers.js +79 -20
  116. package/lib/intermediate-representation/sanitize-identifiers.js.map +1 -1
  117. package/lib/loader.d.ts.map +1 -1
  118. package/lib/loader.js +20 -1
  119. package/lib/loader.js.map +1 -1
  120. package/lib/plugin.d.ts +0 -6
  121. package/lib/plugin.d.ts.map +1 -1
  122. package/lib/plugin.js +7 -8
  123. package/lib/plugin.js.map +1 -1
  124. package/lib/runtime/create-client.d.ts +12 -1
  125. package/lib/runtime/create-client.d.ts.map +1 -1
  126. package/lib/runtime/create-client.js +95 -13
  127. package/lib/runtime/create-client.js.map +1 -1
  128. package/lib/runtime/index.js +2 -2
  129. package/lib/runtime/index.js.map +1 -1
  130. package/lib/runtime/paginate.d.ts +25 -2
  131. package/lib/runtime/paginate.d.ts.map +1 -1
  132. package/lib/runtime/paginate.js +95 -5
  133. package/lib/runtime/paginate.js.map +1 -1
  134. package/lib/runtime/parse.d.ts +5 -1
  135. package/lib/runtime/parse.d.ts.map +1 -1
  136. package/lib/runtime/parse.js +29 -3
  137. package/lib/runtime/parse.js.map +1 -1
  138. package/lib/runtime/send.d.ts +1 -1
  139. package/lib/runtime/send.d.ts.map +1 -1
  140. package/lib/runtime/send.js +2 -2
  141. package/lib/runtime/send.js.map +1 -1
  142. package/lib/runtime/sse.d.ts +1 -0
  143. package/lib/runtime/sse.d.ts.map +1 -1
  144. package/lib/runtime/sse.js +9 -9
  145. package/lib/runtime/sse.js.map +1 -1
  146. package/lib/runtime/types.d.ts +31 -6
  147. package/lib/runtime/types.d.ts.map +1 -1
  148. package/lib/types.d.ts +23 -20
  149. package/lib/types.d.ts.map +1 -1
  150. package/package.json +12 -2
  151. package/lib/config.d.ts +0 -63
  152. package/lib/config.d.ts.map +0 -1
  153. package/lib/config.js +0 -2
  154. package/lib/config.js.map +0 -1
  155. package/lib/emitters/client.d.ts +0 -71
  156. package/lib/emitters/client.d.ts.map +0 -1
  157. package/lib/emitters/client.js +0 -28
  158. package/lib/emitters/client.js.map +0 -1
  159. package/lib/emitters/package-client.d.ts +0 -15
  160. package/lib/emitters/package-client.d.ts.map +0 -1
  161. package/lib/emitters/package-client.js +0 -300
  162. package/lib/emitters/package-client.js.map +0 -1
  163. package/lib/writers/index.d.ts +0 -5
  164. package/lib/writers/index.d.ts.map +0 -1
  165. package/lib/writers/index.js +0 -11
  166. package/lib/writers/index.js.map +0 -1
  167. package/lib/writers/single-file-writer.d.ts +0 -8
  168. package/lib/writers/single-file-writer.d.ts.map +0 -1
  169. package/lib/writers/single-file-writer.js +0 -10
  170. package/lib/writers/single-file-writer.js.map +0 -1
  171. package/lib/writers/split-writer.d.ts +0 -14
  172. package/lib/writers/split-writer.d.ts.map +0 -1
  173. package/lib/writers/split-writer.js +0 -23
  174. package/lib/writers/split-writer.js.map +0 -1
  175. package/lib/writers/types.d.ts +0 -31
  176. package/lib/writers/types.d.ts.map +0 -1
  177. package/lib/writers/types.js +0 -2
  178. package/lib/writers/types.js.map +0 -1
  179. package/lib/writers/util.d.ts +0 -14
  180. package/lib/writers/util.d.ts.map +0 -1
  181. package/lib/writers/util.js +0 -14
  182. package/lib/writers/util.js.map +0 -1
@@ -1,10 +1,15 @@
1
1
  import type { ApiModel } from '../intermediate-representation/model.js';
2
+ import { type PaginationConfig } from './pagination.js';
2
3
  export type TanstackOptions = {
3
- argsStyle: 'flat' | 'grouped';
4
- /** Import specifier for the sdk entry the operation functions/types live in. */
4
+ /** Import specifier for the sdk entry the `client` instance and types live in. */
5
5
  sdkModule: string;
6
- /** TanStack adapter to import `queryOptions` from (`@tanstack/${framework}-query`). */
6
+ /** TanStack adapter to import the option helpers from (`@tanstack/${framework}-query`). */
7
7
  framework: 'react' | 'vue' | 'svelte' | 'solid';
8
+ /** Auto-pagination rules — paginated query ops gain `<op>InfiniteOptions`. */
9
+ pagination?: PaginationConfig;
10
+ /** Leading element for every query/mutation key — namespaces the cache when several
11
+ * generated APIs share one QueryClient (operationIds may collide across APIs). */
12
+ queryKeyPrefix?: string;
8
13
  };
9
14
  /** Render the full TanStack Query module source. `''` when there are no wrappable operations. */
10
15
  export declare function renderTanstackModule(model: ApiModel, opts: TanstackOptions): string;
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-query.d.ts","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,yCAAyC,CAAC;AAoBxF,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,uFAAuF;IACvF,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;CACjD,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAInF"}
1
+ {"version":3,"file":"tanstack-query.d.ts","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,yCAAyC,CAAC;AAGxF,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,eAAe,GAAG;IAC5B,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,SAAS,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAChD,8EAA8E;IAC9E,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;sFACkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,MAAM,CAWnF"}
@@ -1,68 +1,242 @@
1
- // Emits an idiomatic TanStack Query v5 (React) module wrapping the sdk operation
2
- // functions. Per query operation (GET/HEAD) a `<op>QueryKey(vars)` +
3
- // `<op>Options(vars, init?)` (`queryOptions({ queryKey, queryFn })`); per mutation
4
- // (everything else) a `<op>Mutation()` (`{ mutationKey, mutationFn }`). Each
5
- // factory forwards to the sdk function per the configured args style — grouped
6
- // (`getPet(vars, init)`) or flat (`getPet(vars.petId, vars.params, …, init)`),
7
- // matching `operations.ts` positional order so the call type-checks against the
8
- // generated sdk. AST-native via `ts.factory`.
9
- import { arrow, constArray, exportConstStatement as exportConst, printStatements, ts, } from './ts.js';
10
- import { hasInputs, initParam, isQuery, sdkCall, sdkNamedImport, varsParam, wrappableOperations, } from './wrapper-support.js';
11
- const { factory } = ts;
1
+ // Emits an idiomatic TanStack Query v5 module over the generated client. The factories
2
+ // are built by `createQueryFactories(instance)` bindable to any client instance (per-instance
3
+ // config, middleware, retry) and the module-level exports bind the sdk's default
4
+ // `client`. Per query operation (GET/HEAD): `<op>QueryKey(vars?)` (the no-args form is
5
+ // the invalidation prefix) and `<op>Options(vars, init?)` whose `queryFn` forwards
6
+ // TanStack's abort `signal`. A paginated query op additionally gets
7
+ // `<op>InfiniteOptions(vars, init?)` with `initialPageParam`/`getNextPageParam` compiled
8
+ // from the pagination rule's JSON pointers. Per mutation: `<op>Mutation(init?)`. Calls go
9
+ // through the client instance's grouped methods, so the module is independent of the
10
+ // sdk's `--args-style`.
11
+ //
12
+ // The factory bodies are authored as source text and round-tripped through
13
+ // `parseStatements` → `printStatements`, which validates the syntax at generation time
14
+ // and normalizes everything to the printer's canonical style. Every interpolated piece
15
+ // is generator-derived (sanitized operation names, JSON-pointer property chains built
16
+ // here) — never raw spec text.
17
+ import { codeString, isSafeIdentifier, safeIdent } from './identifier.js';
18
+ import { resolveModelPagination, resolveSchemaPointer, } from './pagination.js';
19
+ import { parseStatements, printStatements } from './ts.js';
20
+ import { hasInputs, isQuery, variablesName, wrappableOperations } from './wrapper-support.js';
12
21
  /** Render the full TanStack Query module source. `''` when there are no wrappable operations. */
13
22
  export function renderTanstackModule(model, opts) {
14
23
  const ops = wrappableOperations(model, 'tanstack-query');
15
24
  if (ops.length === 0)
16
25
  return '';
17
- return printStatements(tanstackStatements(ops, opts));
18
- }
19
- /** The TanStack module statements: the import header followed by per-op factories. */
20
- function tanstackStatements(ops, opts) {
21
- const hasQuery = ops.some(isQuery);
22
- const statements = [];
23
- for (const op of ops) {
24
- statements.push(...(isQuery(op) ? queryStatements(op, opts) : [mutationStatement(op, opts)]));
26
+ const pagination = resolveModelPagination(model, opts.pagination);
27
+ const source = [
28
+ importHeader(ops, opts, pagination),
29
+ ...ops.filter(isQuery).map((op) => queryKeySource(op, opts.queryKeyPrefix)),
30
+ factoriesSource(model, ops, pagination, opts.queryKeyPrefix),
31
+ ...defaultBindings(ops, pagination),
32
+ ].join('\n');
33
+ return printStatements(parseStatements(source));
34
+ }
35
+ /**
36
+ * Whether the op gets an `<op>InfiniteOptions` factory: a paginated query operation.
37
+ * `link`-style pagination is excluded — its next page lives in the `Link` response
38
+ * HEADER, which a TanStack `queryFn` (body-only) cannot see; use the sdk's
39
+ * `.pages()`/`.items()` iterators for those operations instead.
40
+ */
41
+ function isInfinite(op, pagination) {
42
+ if (!isQuery(op))
43
+ return false;
44
+ const paginated = pagination.get(op.name);
45
+ return paginated !== undefined && paginated.spec.style !== 'link';
46
+ }
47
+ /**
48
+ * The import header: the option helpers from `@tanstack/${framework}-query` (only the
49
+ * ones used), then the sdk's `client` instance plus the referenced types.
50
+ */
51
+ function importHeader(ops, opts, pagination) {
52
+ const helpers = [
53
+ ...(ops.some((op) => isInfinite(op, pagination)) ? ['infiniteQueryOptions'] : []),
54
+ ...(ops.some(isQuery) ? ['queryOptions'] : []),
55
+ ];
56
+ const types = [...ops.filter(hasInputs).map(variablesName), 'RequestOptions']
57
+ .sort()
58
+ .map((name) => `type ${name}`);
59
+ const lines = [];
60
+ if (helpers.length > 0) {
61
+ lines.push(`import { ${helpers.join(', ')} } from "@tanstack/${opts.framework}-query";`);
62
+ }
63
+ lines.push(`import { client, ${types.join(', ')} } from "${opts.sdkModule}";`);
64
+ return lines.join('\n');
65
+ }
66
+ /**
67
+ * `<op>QueryKey(vars?)` — with `vars` the exact key `<op>Options` uses; without, the
68
+ * one-element prefix matching every cached page/filter of the operation
69
+ * (`queryClient.invalidateQueries({ queryKey: getOrderQueryKey() })`).
70
+ */
71
+ function queryKeySource(op, prefix) {
72
+ const base = keyElements(op, prefix);
73
+ if (!hasInputs(op)) {
74
+ return `export const ${op.name}QueryKey = () => [${base}] as const;`;
75
+ }
76
+ return (`export const ${op.name}QueryKey = (vars?: ${variablesName(op)}) =>\n` +
77
+ ` vars === undefined ? ([${base}] as const) : ([${base}, vars] as const);`);
78
+ }
79
+ /** The constant leading key elements: `"main", "getOrder"` with a prefix, else the id alone. */
80
+ function keyElements(op, prefix) {
81
+ // The prefix is config-supplied text — `codeString` is the code-context escaping.
82
+ return prefix === undefined ? `"${op.name}"` : `${codeString(prefix)}, "${op.name}"`;
83
+ }
84
+ /** The `createQueryFactories(instance)` declaration wrapping every option/mutation factory. */
85
+ function factoriesSource(model, ops, pagination, prefix) {
86
+ const members = ops.flatMap((op) => {
87
+ if (!isQuery(op))
88
+ return [mutationMember(op, prefix)];
89
+ const paginated = pagination.get(op.name);
90
+ return paginated !== undefined && paginated.spec.style !== 'link'
91
+ ? [optionsMember(op), infiniteMember(model, op, paginated.spec)]
92
+ : [optionsMember(op)];
93
+ });
94
+ return ('/**\n' +
95
+ ' * Build the factories over a specific client instance — its config, middleware, and\n' +
96
+ ' * retry apply to every call (`createQueryFactories(createClient(OPERATIONS, config))`).\n' +
97
+ " * The module-level exports below are these factories bound to the sdk's default `client`.\n" +
98
+ ' */\n' +
99
+ 'export const createQueryFactories = (instance: typeof client = client) => ({\n' +
100
+ members.join(',\n') +
101
+ '\n});');
102
+ }
103
+ /** `<op>Options` — `queryFn` forwards TanStack's abort `signal` into the request `init`. */
104
+ function optionsMember(op) {
105
+ const { params, keyArg, callArgs } = varsPieces(op);
106
+ return (` ${op.name}Options: (${params}) => queryOptions({\n` +
107
+ ` queryKey: ${op.name}QueryKey(${keyArg}),\n` +
108
+ ` queryFn: ({ signal }) => instance.${op.name}(${callArgs}, { ...init, signal }),\n` +
109
+ ` })`);
110
+ }
111
+ /** `<op>Mutation(init?)` — per-call `RequestOptions` (headers, a retry override) reach the mutation. */
112
+ function mutationMember(op, prefix) {
113
+ const mutationFn = hasInputs(op)
114
+ ? `(vars: ${variablesName(op)}) => instance.${op.name}(vars, init)`
115
+ : `() => instance.${op.name}({}, init)`;
116
+ return (` ${op.name}Mutation: (init?: RequestOptions) => ({\n` +
117
+ ` mutationKey: [${keyElements(op, prefix)}] as const,\n` +
118
+ ` mutationFn: ${mutationFn},\n` +
119
+ ` })`);
120
+ }
121
+ /**
122
+ * `<op>InfiniteOptions` — the pagination rule compiled into TanStack's contract: the
123
+ * page param rides the rule's advance query parameter, `initialPageParam` resumes from
124
+ * the caller's own value, and `getNextPageParam` mirrors the runtime iterators' stop
125
+ * conditions (cursor: absent/`null`/`''`, plus the optional `hasMore === false`;
126
+ * offset/page: an empty items page).
127
+ */
128
+ function infiniteMember(model, op, spec) {
129
+ const { params, keyArg } = varsPieces(op);
130
+ const override = `{ ...vars, params: { ...vars.params, ${safeIdent(spec.param)}: pageParam } }`;
131
+ return (` ${op.name}InfiniteOptions: (${params}) => infiniteQueryOptions({\n` +
132
+ ` queryKey: [...${op.name}QueryKey(${keyArg}), "infinite"] as const,\n` +
133
+ ` queryFn: ({ pageParam, signal }) => instance.${op.name}(${override}, { ...init, signal }),\n` +
134
+ nextPageSource(model, op, spec) +
135
+ ` })`);
136
+ }
137
+ /** The `initialPageParam` + `getNextPageParam` pair for one pagination style. */
138
+ function nextPageSource(model, op, spec) {
139
+ const advance = paramsAccess(spec.param);
140
+ if (spec.style === 'cursor') {
141
+ const stopEarly = spec.hasMore === undefined
142
+ ? ''
143
+ : ` if (lastPage${pointerChain(spec.hasMore)} === false) return undefined;\n`;
144
+ // Only the stop checks the cursor's static type admits are emitted — a `=== null`
145
+ // against a non-nullable string is a TS2367 in the consumer's build. TanStack v5
146
+ // itself stops on a returned `null`/`undefined`, so an omitted check stays safe
147
+ // even when the server sends a value the description says it cannot.
148
+ const checks = cursorStopChecks(model, op, spec.nextCursor);
149
+ const body = checks.length === 0
150
+ ? ` return lastPage${pointerChain(spec.nextCursor)};\n`
151
+ : ` const next = lastPage${pointerChain(spec.nextCursor)};\n` +
152
+ ` return ${checks.join(' || ')} ? undefined : next;\n`;
153
+ return (` initialPageParam: vars.params?.${advance},\n` +
154
+ ` getNextPageParam: (lastPage) => {\n` +
155
+ stopEarly +
156
+ body +
157
+ ` },\n`);
25
158
  }
26
- return [...importHeader(ops, opts, hasQuery), ...statements];
27
- }
28
- /** A query op's `<op>QueryKey` + `<op>Options` statements. */
29
- function queryStatements(op, opts) {
30
- const inputs = hasInputs(op);
31
- const keyId = factory.createStringLiteral(op.name);
32
- const keyParams = inputs ? [varsParam(op)] : [];
33
- const keyElements = inputs ? [keyId, factory.createIdentifier('vars')] : [keyId];
34
- const queryKey = exportConst(`${op.name}QueryKey`, arrow(keyParams, constArray(keyElements)));
35
- const keyCall = factory.createCallExpression(factory.createIdentifier(`${op.name}QueryKey`), undefined, inputs ? [factory.createIdentifier('vars')] : []);
36
- const queryOptionsCall = factory.createCallExpression(factory.createIdentifier('queryOptions'), undefined, [
37
- factory.createObjectLiteralExpression([
38
- factory.createPropertyAssignment('queryKey', keyCall),
39
- factory.createPropertyAssignment('queryFn', arrow([], sdkCall(op, opts.argsStyle, 'vars', true))),
40
- ], true),
41
- ]);
42
- const optionsParams = inputs ? [varsParam(op), initParam()] : [initParam()];
43
- const options = exportConst(`${op.name}Options`, arrow(optionsParams, queryOptionsCall));
44
- return [queryKey, options];
45
- }
46
- /** A mutation op's `<op>Mutation` statement. */
47
- function mutationStatement(op, opts) {
48
- const inputs = hasInputs(op);
49
- const mutationFn = arrow(inputs ? [varsParam(op)] : [], sdkCall(op, opts.argsStyle, 'vars', false));
50
- const obj = factory.createObjectLiteralExpression([
51
- factory.createPropertyAssignment('mutationKey', constArray([factory.createStringLiteral(op.name)])),
52
- factory.createPropertyAssignment('mutationFn', mutationFn),
53
- ], true);
54
- // Wrap in parens so the arrow body is an object literal, not a block.
55
- return exportConst(`${op.name}Mutation`, arrow([], factory.createParenthesizedExpression(obj)));
159
+ const step = spec.style === 'offset' ? 'lastPageParam + count' : 'lastPageParam + 1';
160
+ const start = spec.style === 'offset' ? '0' : '1';
161
+ return (` initialPageParam: vars.params?.${advance} ?? ${start},\n` +
162
+ ` getNextPageParam: (lastPage, _allPages, lastPageParam) => {\n` +
163
+ ` const count = ${itemsLength(spec.items)};\n` +
164
+ ` return count === 0 ? undefined : ${step};\n` +
165
+ ` },\n`);
56
166
  }
57
167
  /**
58
- * The import header: `queryOptions` from `@tanstack/${framework}-query` (when any
59
- * query op), then the shared sdk named import.
168
+ * The `next === …` stop conditions whose comparison the cursor's static type allows:
169
+ * `undefined` when any step of the chain can miss, `null` when the cursor is nullable,
170
+ * `""` when it is a plain string.
60
171
  */
61
- function importHeader(ops, opts, hasQuery) {
62
- const tanstack = factory.createImportDeclaration(undefined, factory.createImportClause(false, undefined, factory.createNamedImports([
63
- factory.createImportSpecifier(false, undefined, factory.createIdentifier('queryOptions')),
64
- ])), factory.createStringLiteral(`@tanstack/${opts.framework}-query`));
65
- const sdkImport = sdkNamedImport(ops, opts.sdkModule, hasQuery);
66
- return hasQuery ? [tanstack, sdkImport] : [sdkImport];
172
+ function cursorStopChecks(model, op, pointer) {
173
+ const page = op.successResponses.find((response) => response.contentType.toLowerCase().includes('json'));
174
+ // Both resolve — `resolveModelPagination` already verified the rule fits the operation.
175
+ const root = resolveSchemaPointer(page.schema, '', model);
176
+ const target = resolveSchemaPointer(page.schema, pointer, model);
177
+ const keys = pointer.slice(1).split('/');
178
+ let canBeUndefined = keys.length > 1;
179
+ if (!canBeUndefined && root?.kind === 'object') {
180
+ const property = root.properties.find((candidate) => candidate.name === keys[0]);
181
+ canBeUndefined = property === undefined || !property.required;
182
+ }
183
+ const members = target?.kind === 'union' ? target.members : target ? [target] : [];
184
+ const nullable = members.some((member) => member.kind === 'null');
185
+ const plainString = members.some((member) => member.kind === 'scalar' && member.scalar === 'string');
186
+ return [
187
+ ...(canBeUndefined ? ['next === undefined'] : []),
188
+ ...(nullable ? ['next === null'] : []),
189
+ ...(plainString ? ['next === ""'] : []),
190
+ ];
191
+ }
192
+ /** The shared `(vars, init?)` parameter list plus how `vars` reaches the key and the call. */
193
+ function varsPieces(op) {
194
+ if (!hasInputs(op)) {
195
+ return { params: 'init?: RequestOptions', keyArg: '', callArgs: '{}' };
196
+ }
197
+ return {
198
+ params: `vars: ${variablesName(op)}, init?: RequestOptions`,
199
+ keyArg: 'vars',
200
+ callArgs: 'vars',
201
+ };
202
+ }
203
+ /** One query-param access step: `.name`, or `["a b"]` when not a bare identifier. */
204
+ function paramsAccess(name) {
205
+ return isSafeIdentifier(name) ? name : `[${safeIdent(name)}]`;
206
+ }
207
+ /** An RFC 6901 pointer as an optional property chain: `/page/endCursor` → `.page?.endCursor`. */
208
+ function pointerChain(pointer) {
209
+ const keys = pointer
210
+ .slice(1)
211
+ .split('/')
212
+ .map((token) => token.replaceAll('~1', '/').replaceAll('~0', '~'));
213
+ return keys
214
+ .map((key, index) => {
215
+ const bare = isSafeIdentifier(key);
216
+ if (index === 0)
217
+ return bare ? `.${key}` : `[${safeIdent(key)}]`;
218
+ return bare ? `?.${key}` : `?.[${safeIdent(key)}]`;
219
+ })
220
+ .join('');
221
+ }
222
+ /** The page's item count per the `items` pointer (`''` means the page IS the array). */
223
+ function itemsLength(items) {
224
+ if (items === '')
225
+ return 'lastPage?.length ?? 0';
226
+ return `lastPage${pointerChain(items)}?.length ?? 0`;
227
+ }
228
+ /** `export const <name> = defaultFactories.<name>;` per factory, bound to the default client. */
229
+ function defaultBindings(ops, pagination) {
230
+ const names = ops.flatMap((op) => {
231
+ if (!isQuery(op))
232
+ return [`${op.name}Mutation`];
233
+ return isInfinite(op, pagination)
234
+ ? [`${op.name}Options`, `${op.name}InfiniteOptions`]
235
+ : [`${op.name}Options`];
236
+ });
237
+ return [
238
+ 'const defaultFactories = createQueryFactories();',
239
+ ...names.map((name) => `export const ${name} = defaultFactories.${name};`),
240
+ ];
67
241
  }
68
242
  //# sourceMappingURL=tanstack-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tanstack-query.js","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tanstack-query.js","sourceRoot":"","sources":["../../src/emitters/tanstack-query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/emitters/transformers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,yCAAyC,CAAC;AAqbjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAU7F"}
1
+ {"version":3,"file":"transformers.d.ts","sourceRoot":"","sources":["../../src/emitters/transformers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,yCAAyC,CAAC;AAmjBjD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAa7F"}