@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,300 +0,0 @@
1
- // Client assembly, shared by both runtime distributions and both output modes. The
2
- // wiring (descriptor map + `Ops` interface, emitters/descriptor.ts) is identical; only
3
- // the runtime block differs — `runtime: 'package'` imports `createClient` from
4
- // `@redocly/client-generator`, everything else (inline, the default) embeds the
5
- // assembled runtime sources in its place (emitters/inline-runtime.ts). Single-file
6
- // layout: runtime (import line | embedded block) → schema types → type guards →
7
- // `<Op>*` aliases → Ops → OPERATIONS → (baked setup) → client instance → sugar →
8
- // (package mode only) type re-exports — the embedded types are already exported in
9
- // place, so the embed arm needs none. Split mode moves the schema types + guards into
10
- // a sibling `<stem>.schemas.ts` the entry re-exports (`emitClientSplit`).
11
- import { allOperations } from '../writers/util.js';
12
- import { apiKeySetterName } from './auth.js';
13
- import { banner, HEADER, renderTitleComment } from './client.js';
14
- import { descriptorStatements, opsInterfaceStatements, packageIdents } from './descriptor.js';
15
- import { isIdentifier } from './identifier.js';
16
- import { assembleInlineRuntime } from './inline-runtime.js';
17
- import { renderOperationAliases, sseAliases } from './operation-aliases.js';
18
- import { operationSignature } from './operation-signature.js';
19
- import { computeResponse, errorTypeNodes, isTypedMultipart } from './operation-types.js';
20
- import { renderArgList } from './operations.js';
21
- import { resolveModelPagination } from './pagination.js';
22
- import { isSseOp } from './sse.js';
23
- import { pascalCase } from './support.js';
24
- import { arrow, exportConstStatement, parseStatements, printNodes, printStatements, ts, } from './ts.js';
25
- import { typeGuardStatements } from './type-guards.js';
26
- import { typesStatements } from './types.js';
27
- const { factory } = ts;
28
- const PACKAGE_SPECIFIER = '@redocly/client-generator';
29
- /**
30
- * A double-quoted TS string literal for generated code. `JSON.stringify` alone leaves
31
- * U+2028/U+2029 raw (legal JSON, line terminators in code contexts) — escape them so a
32
- * hostile spec value can never alter the shape of the emitted statement.
33
- */
34
- function codeString(value) {
35
- return JSON.stringify(value)
36
- .replace(/\u2028/g, '\\u2028')
37
- .replace(/\u2029/g, '\\u2029');
38
- }
39
- export function emitClientSingleFile(model, options = {}) {
40
- return emitClient(model, options).entry;
41
- }
42
- /**
43
- * `split` mode: the same client with the schema types + type guards carved out into a
44
- * sibling `<stem>.schemas.ts`. The entry file re-exports the schemas module
45
- * (`export *`) and type-imports exactly the schema names its own code references, so
46
- * both files hold under `noUnusedLocals`. `schemas` is absent when the document
47
- * declares no schema statements (the entry is then self-contained).
48
- */
49
- export function emitClientSplit(model, options, stem) {
50
- return emitClient(model, options, stem);
51
- }
52
- /** The shared assembly; `splitStem` (when given) selects the two-file split layout. */
53
- function emitClient(model, options, splitStem) {
54
- const embed = options.runtime !== 'package';
55
- const ops = allOperations(model.services);
56
- const idents = packageIdents(model);
57
- // Resolved (and VERIFIED) up front: an explicit rule that doesn't fit throws here,
58
- // before any statement is built — one aggregated error for the whole model.
59
- const pagination = resolveModelPagination(model, options.pagination);
60
- const ctx = {
61
- argsStyle: options.argsStyle ?? 'flat',
62
- errorMode: options.errorMode ?? 'throw',
63
- dateType: options.dateType ?? 'string',
64
- queryAuthKeys: new Set(model.securitySchemes.filter((s) => s.kind === 'apiKeyQuery').map((s) => s.key)),
65
- schemaNames: new Set(model.schemas.map((s) => s.name)),
66
- pagination,
67
- };
68
- const flat = ctx.argsStyle === 'flat';
69
- const hasSse = ops.some(isSseOp);
70
- const hasRegular = ops.some((op) => !isSseOp(op));
71
- const apiKeySchemes = model.securitySchemes.filter((s) => s.kind === 'apiKeyHeader' || s.kind === 'apiKeyQuery' || s.kind === 'apiKeyCookie');
72
- const wiring = ops.length > 0
73
- ? [
74
- ...opsInterfaceStatements(model, idents, ctx),
75
- ...descriptorStatements(model, idents, ctx.dateType, pagination),
76
- ]
77
- : // A spec with no operations still gets the uniform wiring shape.
78
- parseStatements('export type Ops = Record<string, never>;\n' +
79
- 'export const OPERATIONS = {} as const satisfies Record<string, OperationDescriptor>;');
80
- const runtimeSection = embed
81
- ? assembleInlineRuntime({
82
- multipart: ops.some((op) => op.requestBody && isTypedMultipart(op.requestBody)),
83
- // Auth sugar needs schemes; `resolveAuth` fires when a descriptor carries
84
- // `security` — a valid spec implies the former, but embed on either.
85
- auth: model.securitySchemes.length > 0 || ops.some((op) => op.security.length > 0),
86
- sse: hasSse,
87
- setup: !!options.setup,
88
- paginate: pagination.size > 0,
89
- })
90
- : importLine(options, ctx, {
91
- hasFlatSse: hasSse && flat,
92
- hasFlatRegular: hasRegular && flat,
93
- hasRegular,
94
- hasApiKey: apiKeySchemes.length > 0,
95
- });
96
- const schemaStatements = [
97
- ...typesStatements(model.schemas, options.enumStyle ?? 'const-object', ctx.dateType),
98
- ...typeGuardStatements(model.schemas),
99
- ];
100
- const bodyStatements = [...ops.flatMap((op) => aliasStatements(op, ctx)), ...wiring];
101
- const sugar = printNodes(sugarStatements(ops, idents, ctx, model.securitySchemes, apiKeySchemes));
102
- // Embed mode exports its whole public surface in place; only the package arm re-exports.
103
- const reexports = embed ? '' : reexportLines(ctx, hasSse);
104
- // Layout puts the reader's OWN API first (types → aliases → Ops → OPERATIONS) and the
105
- // machinery after it. In embed mode the runtime block sits between the descriptors and
106
- // the `client` initializer — after it for readability, before `client` so every
107
- // declaration the module-init call chain touches (hoisted functions AND any future
108
- // top-level const) is already evaluated; in package mode the import line leads.
109
- if (splitStem === undefined) {
110
- return {
111
- entry: banner([
112
- HEADER,
113
- renderTitleComment(model),
114
- ...(embed ? [] : [runtimeSection]),
115
- printStatements([...schemaStatements, ...bodyStatements]),
116
- ...(embed ? [runtimeSection] : []),
117
- clientSection(options, ctx, model),
118
- sugar,
119
- reexports,
120
- ]),
121
- };
122
- }
123
- const body = printStatements(bodyStatements);
124
- const hasSchemas = schemaStatements.length > 0;
125
- return {
126
- entry: banner([
127
- HEADER,
128
- renderTitleComment(model),
129
- hasSchemas
130
- ? schemaLinks(body + '\n' + sugar, ctx.schemaNames, `./${splitStem}.schemas.js`)
131
- : '',
132
- ...(embed ? [] : [runtimeSection]),
133
- body,
134
- ...(embed ? [runtimeSection] : []),
135
- clientSection(options, ctx, model),
136
- sugar,
137
- reexports,
138
- ]),
139
- schemas: hasSchemas
140
- ? banner([HEADER, renderTitleComment(model), printStatements(schemaStatements)])
141
- : undefined,
142
- };
143
- }
144
- /**
145
- * The entry ⇄ schemas linkage of the split layout: a type-only import of exactly the
146
- * schema names the entry's own code references, plus the public `export *` re-export.
147
- * Referenced names are found by walking the printed entry code's identifiers (an AST
148
- * pass over the emitted text, not a substring search — operation JSDoc may mention a
149
- * schema name, and importing an unreferenced type would trip `noUnusedLocals`).
150
- */
151
- function schemaLinks(entryCode, schemaNames, specifier) {
152
- const referenced = new Set();
153
- const visit = (node) => {
154
- if (ts.isIdentifier(node) && schemaNames.has(node.text))
155
- referenced.add(node.text);
156
- node.forEachChild(visit);
157
- };
158
- for (const statement of parseStatements(entryCode))
159
- visit(statement);
160
- const names = [...referenced].sort();
161
- const importLine = names.length > 0 ? `import type { ${names.join(', ')} } from '${specifier}';\n` : '';
162
- return `${importLine}export * from '${specifier}';`;
163
- }
164
- /** The single import from the runtime package — only names the file actually references. */
165
- function importLine(options, ctx, refs) {
166
- const values = ['createClient', ...(options.setup ? ['mergeSetup'] : [])];
167
- const types = [
168
- ...(options.setup ? ['ClientConfig', 'Middleware'] : []),
169
- 'OperationDescriptor',
170
- // Flat sugar signatures reference the per-call option types.
171
- ...(refs.hasFlatRegular ? ['RequestOptions'] : []),
172
- // `Ops` wraps results in `Result` in result mode — but only NON-SSE members
173
- // (an SSE-only spec would otherwise import it unused and fail noUnusedLocals).
174
- ...(ctx.errorMode === 'result' && refs.hasRegular ? ['Result'] : []),
175
- ...(refs.hasFlatSse ? ['SseOptions'] : []),
176
- // The apiKey sugar closures take a `TokenProvider`.
177
- ...(refs.hasApiKey ? ['TokenProvider'] : []),
178
- ].sort();
179
- const names = [...values, ...types.map((t) => `type ${t}`)].join(', ');
180
- return `import { ${names} } from '${PACKAGE_SPECIFIER}';`;
181
- }
182
- /** One operation's `<Op>*` aliases — the same emitters and suppression rules as inline mode. */
183
- function aliasStatements(op, ctx) {
184
- const { pathParams } = operationSignature(op);
185
- const ordered = pathParams.map((p) => p.param);
186
- const identMap = new Map(pathParams.map((p) => [p.param.name, p.ident]));
187
- if (isSseOp(op))
188
- return sseAliases(op, ordered, identMap, ctx, 'wire');
189
- const { responseType } = computeResponse(op.successResponses, ctx.dateType);
190
- const errorMembers = ctx.errorMode === 'result' ? errorTypeNodes(op.errorResponses, ctx.dateType) : [];
191
- const errorAlias = errorMembers.length > 0 ? `${pascalCase(op.name)}Error` : '';
192
- return renderOperationAliases(op, responseType, ordered, identMap, errorAlias, errorMembers, ctx, true, 'wire');
193
- }
194
- /** The (optional) baked setup + the default `client` instance. */
195
- function clientSection(options, ctx, model) {
196
- const serverUrl = options.serverUrl ?? model.serverUrl;
197
- const fields = [
198
- // Always baked when the document declares one: the runtime's fallback is a
199
- // relative URL, which Node's fetch rejects.
200
- ...(serverUrl !== undefined ? [`serverUrl: ${codeString(serverUrl)}`] : []),
201
- ...(ctx.errorMode === 'result' ? ['errorMode: "result"'] : []),
202
- ];
203
- const config = fields.length > 0 ? `{ ${fields.join(', ')} }` : '{}';
204
- // Precedence, lowest → highest: spec defaults → baked publisher setup → app `configure()`.
205
- // The inner merge flattens the setup into a ClientConfig; the outer layers it OVER the
206
- // spec defaults (mergeSetup's second argument wins per-field; middleware composes).
207
- const configArg = options.setup
208
- ? `mergeSetup({ config: ${config} }, mergeSetup(__redoclySetup, {}))`
209
- : config;
210
- // The trailing type args narrow `ctx.operation` to the spec's literal unions.
211
- // `OperationTag` mirrors descriptorStatements' gate: derived only when some
212
- // operation is tagged (it would otherwise be `never`); zero-ops specs have no
213
- // derived unions at all, so they keep the string defaults.
214
- const ops = allOperations(model.services);
215
- const hasTags = ops.some((op) => op.tags.length > 0);
216
- const typeArgs = ops.length > 0
217
- ? `<Ops, OperationId, OperationPath, ${hasTags ? 'OperationTag' : 'string'}>`
218
- : '<Ops>';
219
- const client = `export const client = createClient${typeArgs}(OPERATIONS, ${configArg});`;
220
- if (!options.setup)
221
- return client;
222
- return ('// ─── Baked-in setup (--setup) ───\n' +
223
- `const __redoclySetup: { config?: ClientConfig; middleware?: Middleware[] } = ${options.setup};\n` +
224
- client);
225
- }
226
- /** Core destructure + per-scheme auth setters + per-operation call sugar. */
227
- function sugarStatements(ops, idents, ctx, schemes, apiKeySchemes) {
228
- const statements = [...parseStatements('export const { configure, use } = client;')];
229
- // Auth sugar in `authSetterNames` order: bearer, basic, then each apiKey scheme.
230
- // The runtime's auth members close over the instance config (no `this`), so
231
- // direct bindings are safe.
232
- if (schemes.some((s) => s.kind === 'bearer')) {
233
- statements.push(...parseStatements('export const setBearer = client.auth.bearer;'));
234
- }
235
- if (schemes.some((s) => s.kind === 'basic')) {
236
- statements.push(...parseStatements('export const setBasicAuth = client.auth.basic;'));
237
- }
238
- for (const scheme of apiKeySchemes) {
239
- const name = apiKeySetterName(scheme.key, apiKeySchemes.length === 1);
240
- statements.push(...parseStatements(`export const ${name} = (value: TokenProvider) => client.auth.apiKey(${codeString(scheme.key)}, value);`));
241
- }
242
- if (ops.length === 0)
243
- return statements;
244
- if (ctx.argsStyle === 'grouped') {
245
- // Grouped style: the client methods already take the grouped args shape.
246
- const names = ops.map((op) => idents.get(op.name)).join(', ');
247
- statements.push(...parseStatements(`export const { ${names} } = client;`));
248
- return statements;
249
- }
250
- for (const op of ops)
251
- statements.push(flatSugarStatement(op, idents.get(op.name), ctx));
252
- return statements;
253
- }
254
- /**
255
- * One flat one-liner: today's positional signature forwarding to the grouped client
256
- * method. Path values are keyed by the WIRE name (the runtime routes
257
- * `args[param.name]`); a path param literally named `params`/`body`/`headers` would
258
- * collide with the slot keys — a spec-acknowledged runtime-contract limitation.
259
- * A paginated operation's arrow is wrapped in `Object.assign(…, { pages, items })`
260
- * so the flat sugar preserves the method-attached iterators.
261
- */
262
- function flatSugarStatement(op, ident, ctx) {
263
- const { pathParams } = operationSignature(op);
264
- const params = renderArgList(op, pathParams.map((p) => p.param), new Map(pathParams.map((p) => [p.param.name, p.ident])), ctx);
265
- const props = pathParams.map(({ param, ident: paramIdent }) => param.name === paramIdent
266
- ? factory.createShorthandPropertyAssignment(paramIdent)
267
- : factory.createPropertyAssignment(isIdentifier(param.name) ? param.name : factory.createStringLiteral(param.name), factory.createIdentifier(paramIdent)));
268
- if (op.queryParams.length > 0)
269
- props.push(factory.createShorthandPropertyAssignment('params'));
270
- if (op.requestBody)
271
- props.push(factory.createShorthandPropertyAssignment('body'));
272
- if (op.headerParams.length > 0) {
273
- props.push(factory.createShorthandPropertyAssignment('headers'));
274
- }
275
- const call = factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('client'), ident), undefined, [factory.createObjectLiteralExpression(props, false), factory.createIdentifier('init')]);
276
- const fn = arrow(params, call);
277
- if (!ctx.pagination?.has(op.name))
278
- return exportConstStatement(ident, fn);
279
- const methodMember = (name) => factory.createPropertyAssignment(name, factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createIdentifier('client'), ident), name));
280
- return exportConstStatement(ident, factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Object'), 'assign'), undefined, [
281
- fn,
282
- factory.createObjectLiteralExpression([methodMember('pages'), methodMember('items')], false),
283
- ]));
284
- }
285
- /** Public type surface re-exported for single-import DX (plus the `ApiError` class). */
286
- function reexportLines(ctx, hasSse) {
287
- const types = [
288
- 'ClientConfig',
289
- 'Middleware',
290
- 'RequestOptions',
291
- ...(ctx.errorMode === 'result' ? ['Result'] : []),
292
- ...(hasSse ? ['ServerSentEvent', 'SseOptions'] : []),
293
- ].sort();
294
- return (
295
- // `createClient` is re-exported so package-mode consumers can build additional
296
- // instances from the generated module alone — symmetric with inline output.
297
- `export { ApiError, createClient } from '${PACKAGE_SPECIFIER}';\n` +
298
- `export type { ${types.join(', ')} } from '${PACKAGE_SPECIFIER}';`);
299
- }
300
- //# sourceMappingURL=package-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"package-client.js","sourceRoot":"","sources":["../../src/emitters/package-client.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { OutputMode, Writer } from './types.js';
2
- export type { GeneratedFile, OutputMode, Writer, WriterInput } from './types.js';
3
- /** Select the writer for an output mode. */
4
- export declare function getWriter(mode: OutputMode): Writer;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/writers/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAErD,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAOjF,4CAA4C;AAC5C,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAElD"}
@@ -1,11 +0,0 @@
1
- import { singleFileWriter } from './single-file-writer.js';
2
- import { splitWriter } from './split-writer.js';
3
- const WRITERS = {
4
- single: singleFileWriter,
5
- split: splitWriter,
6
- };
7
- /** Select the writer for an output mode. */
8
- export function getWriter(mode) {
9
- return WRITERS[mode];
10
- }
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/writers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,MAAM,OAAO,GAA+B;IAC1C,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,WAAW;CACnB,CAAC;AAEF,4CAA4C;AAC5C,MAAM,UAAU,SAAS,CAAC,IAAgB;IACxC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;AACvB,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { Writer } from './types.js';
2
- /**
3
- * The default writer: the whole client in one file at the `--output` path. The shared
4
- * emitter branches on `emit.runtime` internally — `inline` (the default) embeds the
5
- * runtime sources, `package` imports them from `@redocly/client-generator`.
6
- */
7
- export declare const singleFileWriter: Writer;
8
- //# sourceMappingURL=single-file-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-file-writer.d.ts","sourceRoot":"","sources":["../../src/writers/single-file-writer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAE9B,CAAC"}
@@ -1,10 +0,0 @@
1
- import { emitClientSingleFile } from '../emitters/package-client.js';
2
- /**
3
- * The default writer: the whole client in one file at the `--output` path. The shared
4
- * emitter branches on `emit.runtime` internally — `inline` (the default) embeds the
5
- * runtime sources, `package` imports them from `@redocly/client-generator`.
6
- */
7
- export const singleFileWriter = ({ model, outputPath, emit }) => [
8
- { path: outputPath, content: emitClientSingleFile(model, emit) },
9
- ];
10
- //# sourceMappingURL=single-file-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-file-writer.js","sourceRoot":"","sources":["../../src/writers/single-file-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAGrE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACvE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE;CACjE,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { Writer } from './types.js';
2
- /**
3
- * `split` mode: two sibling files derived from the `--output` anchor, for both
4
- * runtime distributions.
5
- *
6
- * <stem>.schemas.ts model types, enums, const-objects, and type guards
7
- * <stem>.ts everything else (runtime, wiring, client, sugar), which
8
- * `export *`s the schemas module and type-imports exactly
9
- * the schema names it references
10
- *
11
- * The schemas file is skipped entirely when the document declares no schemas.
12
- */
13
- export declare const splitWriter: Writer;
14
- //# sourceMappingURL=split-writer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-writer.d.ts","sourceRoot":"","sources":["../../src/writers/split-writer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,MAOzB,CAAC"}
@@ -1,23 +0,0 @@
1
- import { join } from 'node:path';
2
- import { emitClientSplit } from '../emitters/package-client.js';
3
- import { anchor } from './util.js';
4
- /**
5
- * `split` mode: two sibling files derived from the `--output` anchor, for both
6
- * runtime distributions.
7
- *
8
- * <stem>.schemas.ts model types, enums, const-objects, and type guards
9
- * <stem>.ts everything else (runtime, wiring, client, sugar), which
10
- * `export *`s the schemas module and type-imports exactly
11
- * the schema names it references
12
- *
13
- * The schemas file is skipped entirely when the document declares no schemas.
14
- */
15
- export const splitWriter = ({ model, outputPath, emit }) => {
16
- const { dir, stem } = anchor(outputPath);
17
- const { entry, schemas } = emitClientSplit(model, emit, stem);
18
- return [
19
- ...(schemas === undefined ? [] : [{ path: join(dir, `${stem}.schemas.ts`), content: schemas }]),
20
- { path: outputPath, content: entry },
21
- ];
22
- };
23
- //# sourceMappingURL=split-writer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-writer.js","sourceRoot":"","sources":["../../src/writers/split-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE;IACjE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO;QACL,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/F,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;KACrC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,31 +0,0 @@
1
- import type { EmitOptions } from '../emitters/client.js';
2
- import type { ApiModel } from '../intermediate-representation/model.js';
3
- /**
4
- * How the generated client is partitioned across files.
5
- *
6
- * - `single` (default): one self-contained file.
7
- * - `split`: schema types + guards in a sibling `<stem>.schemas.ts`; everything
8
- * else in the entry file, which re-exports the schemas module.
9
- */
10
- export type OutputMode = 'single' | 'split';
11
- /** A single file the generator will write to disk. */
12
- export type GeneratedFile = {
13
- path: string;
14
- content: string;
15
- };
16
- export type WriterInput = {
17
- model: ApiModel;
18
- /**
19
- * The `--output` anchor path (ends in `.ts`). Multi-file writers derive sibling
20
- * and per-tag-folder paths from its directory and base name (stem).
21
- */
22
- outputPath: string;
23
- emit: EmitOptions;
24
- };
25
- /**
26
- * A Writer turns the IR + emit options into the set of files to write. This is
27
- * the one seam output modes vary at; the emitter (which renders code) stays
28
- * mode-agnostic.
29
- */
30
- export type Writer = (input: WriterInput) => GeneratedFile[];
31
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/writers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAExE;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,aAAa,EAAE,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/writers/types.ts"],"names":[],"mappings":""}
@@ -1,14 +0,0 @@
1
- import type { OperationModel } from '../intermediate-representation/model.js';
2
- /**
3
- * Derive the directory and base name (stem, without `.ts`) from the `--output`
4
- * anchor path. Multi-file writers build sibling/per-tag paths from these.
5
- */
6
- export declare function anchor(outputPath: string): {
7
- dir: string;
8
- stem: string;
9
- };
10
- /** All operations across the model's services, flattened. */
11
- export declare function allOperations(operationsByService: {
12
- operations: OperationModel[];
13
- }[]): OperationModel[];
14
- //# sourceMappingURL=util.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/writers/util.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;GAGG;AACH,wBAAgB,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAGxE;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAC3B,mBAAmB,EAAE;IAAE,UAAU,EAAE,cAAc,EAAE,CAAA;CAAE,EAAE,GACtD,cAAc,EAAE,CAElB"}
@@ -1,14 +0,0 @@
1
- import { parse } from 'node:path';
2
- /**
3
- * Derive the directory and base name (stem, without `.ts`) from the `--output`
4
- * anchor path. Multi-file writers build sibling/per-tag paths from these.
5
- */
6
- export function anchor(outputPath) {
7
- const { dir, name } = parse(outputPath);
8
- return { dir, stem: name };
9
- }
10
- /** All operations across the model's services, flattened. */
11
- export function allOperations(operationsByService) {
12
- return operationsByService.flatMap((service) => service.operations);
13
- }
14
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/writers/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAIlC;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,UAAkB;IACvC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7B,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAC3B,mBAAuD;IAEvD,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACtE,CAAC"}