@zerolith/client 0.1.0-alpha.6 → 0.1.0-alpha.7
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/dist/generate.d.ts +8 -5
- package/dist/generate.d.ts.map +1 -1
- package/dist/generate.js +56 -27
- package/dist/generate.js.map +1 -1
- package/package.json +3 -3
- package/src/generate.ts +65 -27
package/dist/generate.d.ts
CHANGED
|
@@ -162,11 +162,14 @@ export interface GenerateOptions {
|
|
|
162
162
|
* method and path), and `routes` carries the method and path of each.
|
|
163
163
|
* Header and cookie parameters, security, and non-local references are
|
|
164
164
|
* left out; the client sends headers through its options. A schema whose
|
|
165
|
-
* type name
|
|
166
|
-
*
|
|
167
|
-
* `
|
|
168
|
-
*
|
|
169
|
-
*
|
|
165
|
+
* type name would clash is written under the first free name with a
|
|
166
|
+
* number added, as `Record2`, with a comment that says why, and every
|
|
167
|
+
* `$ref` to it uses that name: one that another schema takes first, as
|
|
168
|
+
* `note-item` and `note_item` both give `NoteItem`, one named like the
|
|
169
|
+
* interface of the operations or the `RouteTable` the module imports, and
|
|
170
|
+
* one named like a built-in type the module writes, such as `Record` for
|
|
171
|
+
* an object of free keys or `Blob` for a binary response. A schema named
|
|
172
|
+
* like a built-in the module does not write keeps its name.
|
|
170
173
|
*/
|
|
171
174
|
export declare function generateClient(document: OpenApiDocument, options?: GenerateOptions): string;
|
|
172
175
|
//# sourceMappingURL=generate.d.ts.map
|
package/dist/generate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,sGAAsG;AACtG,MAAM,WAAW,YAAY;IAEzB,4OAA4O;IAC5O,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0MAA0M;IAC1M,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sKAAsK;IACtK,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,iMAAiM;IACjM,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6JAA6J;IAC7J,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1C,qGAAqG;IACrG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,mNAAmN;IACnN,oBAAoB,CAAC,EAAE,OAAO,GAAG,YAAY,CAAC;IAC9C,kJAAkJ;IAClJ,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,yJAAyJ;IACzJ,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;IAC7B,2MAA2M;IAC3M,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,oLAAoL;IACpL,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,uLAAuL;IACvL,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;IACvB,4HAA4H;IAC5H,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6JAA6J;IAC7J,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAE5B,yIAAyI;IACzI,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0KAA0K;IAC1K,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2LAA2L;IAC3L,EAAE,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC5D,4KAA4K;IAC5K,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8GAA8G;IAC9G,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,8IAA8I;IAC9I,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAE5B,wJAAwJ;IACxJ,MAAM,CAAC,EAAE,YAAY,CAAC;CACzB;AAED,mDAAmD;AACnD,MAAM,WAAW,iBAAiB;IAE9B,4IAA4I;IAC5I,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+GAA+G;IAC/G,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,2QAA2Q;IAC3Q,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,+CAA+C;AAC/C,MAAM,WAAW,cAAc;IAE3B,wIAAwI;IACxI,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2MAA2M;IAC3M,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAE5B,wNAAwN;IACxN,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uIAAuI;IACvI,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,mGAAmG;IACnG,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,oKAAoK;IACpK,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC9C;AAED,0BAA0B;AAC1B,MAAM,WAAW,cAAc;IAE3B,sIAAsI;IACtI,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4GAA4G;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iIAAiI;IACjI,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,wCAAwC;IACxC,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,wCAAwC;IACxC,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,yCAAyC;IACzC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,yCAAyC;IACzC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,wGAAwG;IACxG,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,+KAA+K;IAC/K,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1D;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAE5B,oGAAoG;IACpG,OAAO,EAAE,MAAM,CAAC;IAChB,kGAAkG;IAClG,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,+HAA+H;IAC/H,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,iJAAiJ;IACjJ,UAAU,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACvC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC7C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAClD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;KAC9C,CAAC;CACL;AAED,oCAAoC;AACpC,MAAM,WAAW,eAAe;IAE5B,+FAA+F;IAC/F,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/dist/generate.js
CHANGED
|
@@ -62,8 +62,15 @@ function deref(context, value, section) {
|
|
|
62
62
|
}
|
|
63
63
|
return current;
|
|
64
64
|
}
|
|
65
|
-
/** The type name each schema of the document being generated is written under, by schema name, which a `$ref` to the schema uses; `
|
|
65
|
+
/** The type name each schema of the document being generated is written under, by schema name, which a `$ref` to the schema uses; `writeModule` sets it before it writes a type. */
|
|
66
66
|
let schemaTypes = new Map();
|
|
67
|
+
/** The built-in type names the module being generated writes, as `Record` for an object of free keys or `Blob` for a binary response; `writeModule` empties it before it writes. */
|
|
68
|
+
let builtInsUsed = new Set();
|
|
69
|
+
/** A built-in type name, recorded as written by the module being generated. */
|
|
70
|
+
function builtIn(name) {
|
|
71
|
+
builtInsUsed.add(name);
|
|
72
|
+
return name;
|
|
73
|
+
}
|
|
67
74
|
function schemaRefName(ref) {
|
|
68
75
|
const prefix = "#/components/schemas/";
|
|
69
76
|
if (!ref.startsWith(prefix)) {
|
|
@@ -155,9 +162,9 @@ function objectType(schema, indent) {
|
|
|
155
162
|
const properties = Object.entries(schema.properties ?? {});
|
|
156
163
|
const required = new Set(schema.required ?? []);
|
|
157
164
|
const extra = schema.additionalProperties;
|
|
158
|
-
const record = extra === undefined || extra === false ? undefined :
|
|
165
|
+
const record = extra === undefined || extra === false ? undefined : `${builtIn("Record")}<string, ${extra === true ? "unknown" : typeOf(extra, indent)}>`;
|
|
159
166
|
if (properties.length === 0) {
|
|
160
|
-
return record ?? (extra === false ? "
|
|
167
|
+
return record ?? `${builtIn("Record")}<string, ${extra === false ? "never" : "unknown"}>`;
|
|
161
168
|
}
|
|
162
169
|
const inner = `${indent} `;
|
|
163
170
|
const lines = properties.map(([name, property]) => {
|
|
@@ -244,15 +251,15 @@ function bodyType(context, operation) {
|
|
|
244
251
|
case "json":
|
|
245
252
|
return { type: typeOf(content.schema, " "), required };
|
|
246
253
|
case "form":
|
|
247
|
-
return { type: "FormData", required };
|
|
254
|
+
return { type: builtIn("FormData"), required };
|
|
248
255
|
case "urlencoded":
|
|
249
|
-
return { type: "URLSearchParams", required };
|
|
256
|
+
return { type: builtIn("URLSearchParams"), required };
|
|
250
257
|
case "text":
|
|
251
258
|
return { type: "string", required };
|
|
252
259
|
case "none":
|
|
253
260
|
return undefined;
|
|
254
261
|
default:
|
|
255
|
-
return { type: "BodyInit", required };
|
|
262
|
+
return { type: builtIn("BodyInit"), required };
|
|
256
263
|
}
|
|
257
264
|
}
|
|
258
265
|
function outputType(context, operation) {
|
|
@@ -277,7 +284,7 @@ function outputType(context, operation) {
|
|
|
277
284
|
types.add("undefined");
|
|
278
285
|
break;
|
|
279
286
|
default:
|
|
280
|
-
types.add("Blob");
|
|
287
|
+
types.add(builtIn("Blob"));
|
|
281
288
|
}
|
|
282
289
|
}
|
|
283
290
|
return [...types].join(" | ");
|
|
@@ -299,27 +306,36 @@ function entryOf(context, path, item, method, operation) {
|
|
|
299
306
|
const doc = [operation.summary, operation.description, operation.deprecated === true ? "@deprecated" : undefined].filter((part) => part !== undefined && part !== "").join("\n\n");
|
|
300
307
|
return { name: operationName(operation, method, path), method, path, lines, doc: doc === "" ? undefined : doc };
|
|
301
308
|
}
|
|
302
|
-
/** The
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
309
|
+
/** The built-in types a generated module may write, with what each is. */
|
|
310
|
+
const BUILT_INS = new Map([
|
|
311
|
+
["Record", "TypeScript's Record type"],
|
|
312
|
+
["Blob", "the global Blob type"],
|
|
313
|
+
["FormData", "the global FormData type"],
|
|
314
|
+
["URLSearchParams", "the global URLSearchParams type"],
|
|
315
|
+
["BodyInit", "the global BodyInit type"]
|
|
316
|
+
]);
|
|
317
|
+
/** The type names no schema can take in a module, with what each is: the interface of the operations, the `RouteTable` the module imports, and the built-in types in `used`, which the module writes. A built-in the module does not write is left to a schema of that name. */
|
|
318
|
+
function reservedTypeNames(apiName, used) {
|
|
319
|
+
const reserved = new Map([
|
|
310
320
|
["RouteTable", "the RouteTable type the module imports"],
|
|
311
321
|
[apiName, "the interface of the operations, which apiName renames"]
|
|
312
322
|
]);
|
|
323
|
+
for (const [name, what] of BUILT_INS) {
|
|
324
|
+
if (used.has(name)) {
|
|
325
|
+
reserved.set(name, `${what}, which this module uses`);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return reserved;
|
|
313
329
|
}
|
|
314
330
|
/**
|
|
315
331
|
* The type name every schema is written under, by schema name, with the
|
|
316
332
|
* reason for a name that is not the schema's own. A schema keeps its own
|
|
317
|
-
* name, as `note-item` gives `NoteItem`, unless
|
|
318
|
-
*
|
|
319
|
-
*
|
|
333
|
+
* name, as `note-item` gives `NoteItem`, unless `reserved` holds it or a
|
|
334
|
+
* schema earlier in sorted order takes it; then it gets the first free
|
|
335
|
+
* name with a number added, as `Record2`.
|
|
320
336
|
*/
|
|
321
|
-
function schemaTypeNames(names,
|
|
322
|
-
const holders =
|
|
337
|
+
function schemaTypeNames(names, reserved) {
|
|
338
|
+
const holders = new Map(reserved);
|
|
323
339
|
const assigned = new Map();
|
|
324
340
|
for (const name of names) {
|
|
325
341
|
const type = typeName(name);
|
|
@@ -351,11 +367,14 @@ function schemaTypeNames(names, apiName) {
|
|
|
351
367
|
* method and path), and `routes` carries the method and path of each.
|
|
352
368
|
* Header and cookie parameters, security, and non-local references are
|
|
353
369
|
* left out; the client sends headers through its options. A schema whose
|
|
354
|
-
* type name
|
|
355
|
-
*
|
|
356
|
-
* `
|
|
357
|
-
*
|
|
358
|
-
*
|
|
370
|
+
* type name would clash is written under the first free name with a
|
|
371
|
+
* number added, as `Record2`, with a comment that says why, and every
|
|
372
|
+
* `$ref` to it uses that name: one that another schema takes first, as
|
|
373
|
+
* `note-item` and `note_item` both give `NoteItem`, one named like the
|
|
374
|
+
* interface of the operations or the `RouteTable` the module imports, and
|
|
375
|
+
* one named like a built-in type the module writes, such as `Record` for
|
|
376
|
+
* an object of free keys or `Blob` for a binary response. A schema named
|
|
377
|
+
* like a built-in the module does not write keeps its name.
|
|
359
378
|
*/
|
|
360
379
|
export function generateClient(document, options = {}) {
|
|
361
380
|
if (typeof document.openapi !== "string" || !document.openapi.startsWith("3.")) {
|
|
@@ -363,13 +382,23 @@ export function generateClient(document, options = {}) {
|
|
|
363
382
|
}
|
|
364
383
|
const context = { document, apiName: options.apiName ?? "Api" };
|
|
365
384
|
const specifier = options.clientSpecifier ?? "@zerolith/client";
|
|
385
|
+
const names = Object.keys(document.components?.schemas ?? {}).toSorted((a, b) => a.localeCompare(b));
|
|
386
|
+
const first = writeModule(context, specifier, schemaTypeNames(names, reservedTypeNames(context.apiName, new Set())));
|
|
387
|
+
if (![...first.types.values()].some(({ type }) => first.used.has(type))) {
|
|
388
|
+
return first.code;
|
|
389
|
+
}
|
|
390
|
+
return writeModule(context, specifier, schemaTypeNames(names, reservedTypeNames(context.apiName, first.used))).code;
|
|
391
|
+
}
|
|
392
|
+
/** The module text for the given schema type names, with the built-in types it writes, which a second pass reserves when a schema took one of their names. */
|
|
393
|
+
function writeModule(context, specifier, types) {
|
|
394
|
+
const { document } = context;
|
|
395
|
+
builtInsUsed = new Set();
|
|
366
396
|
const out = [];
|
|
367
397
|
const title = document.info?.title === undefined ? "an OpenAPI document" : `${document.info.title}${document.info.version === undefined ? "" : ` ${document.info.version}`}`;
|
|
368
398
|
out.push(`// Generated by @zerolith/client from ${title}. Do not edit; regenerate instead.`);
|
|
369
399
|
out.push(`import type { RouteTable } from ${JSON.stringify(specifier)};`);
|
|
370
400
|
out.push("");
|
|
371
401
|
const schemas = Object.entries(document.components?.schemas ?? {}).toSorted(([a], [b]) => a.localeCompare(b));
|
|
372
|
-
const types = schemaTypeNames(schemas.map(([name]) => name), context.apiName);
|
|
373
402
|
schemaTypes = new Map(Array.from(types, ([name, { type }]) => [name, type]));
|
|
374
403
|
for (const [name, schema] of schemas) {
|
|
375
404
|
const { type, reason } = types.get(name) ?? { type: typeName(name) };
|
|
@@ -415,6 +444,6 @@ export function generateClient(document, options = {}) {
|
|
|
415
444
|
out.push(entries.map((entry) => ` ${key(entry.name)}: { method: ${JSON.stringify(entry.method)}, path: ${JSON.stringify(entry.path)} }`).join(",\n"));
|
|
416
445
|
out.push(`} as const satisfies RouteTable<${context.apiName}>;`);
|
|
417
446
|
out.push("");
|
|
418
|
-
return out.join("\n");
|
|
447
|
+
return { code: out.join("\n"), used: builtInsUsed, types };
|
|
419
448
|
}
|
|
420
449
|
//# sourceMappingURL=generate.js.map
|
package/dist/generate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zerolith/client",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.7",
|
|
4
4
|
"description": "A typed HTTP client for zerolith over a neutral contract: generate the route table and types from an OpenAPI document, call operations with checked inputs, and read failures as RFC 9457 problems",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "molexxxx",
|
|
@@ -52,9 +52,9 @@
|
|
|
52
52
|
"build": "tsc -p tsconfig.build.json"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
|
-
"zerolith": "^0.1.0-alpha.
|
|
55
|
+
"zerolith": "^0.1.0-alpha.7"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"zerolith": "^0.1.0-alpha.
|
|
58
|
+
"zerolith": "^0.1.0-alpha.7"
|
|
59
59
|
}
|
|
60
60
|
}
|
package/src/generate.ts
CHANGED
|
@@ -261,9 +261,19 @@ function deref<T extends { $ref?: string }>(context: Context, value: T, section:
|
|
|
261
261
|
return current;
|
|
262
262
|
}
|
|
263
263
|
|
|
264
|
-
/** The type name each schema of the document being generated is written under, by schema name, which a `$ref` to the schema uses; `
|
|
264
|
+
/** The type name each schema of the document being generated is written under, by schema name, which a `$ref` to the schema uses; `writeModule` sets it before it writes a type. */
|
|
265
265
|
let schemaTypes: ReadonlyMap<string, string> = new Map();
|
|
266
266
|
|
|
267
|
+
/** The built-in type names the module being generated writes, as `Record` for an object of free keys or `Blob` for a binary response; `writeModule` empties it before it writes. */
|
|
268
|
+
let builtInsUsed = new Set<string>();
|
|
269
|
+
|
|
270
|
+
/** A built-in type name, recorded as written by the module being generated. */
|
|
271
|
+
function builtIn(name: string): string
|
|
272
|
+
{
|
|
273
|
+
builtInsUsed.add(name);
|
|
274
|
+
return name;
|
|
275
|
+
}
|
|
276
|
+
|
|
267
277
|
function schemaRefName(ref: string): string
|
|
268
278
|
{
|
|
269
279
|
const prefix = "#/components/schemas/";
|
|
@@ -384,10 +394,10 @@ function objectType(schema: SchemaObject, indent: string): string
|
|
|
384
394
|
const properties = Object.entries(schema.properties ?? {});
|
|
385
395
|
const required = new Set(schema.required ?? []);
|
|
386
396
|
const extra = schema.additionalProperties;
|
|
387
|
-
const record = extra === undefined || extra === false ? undefined :
|
|
397
|
+
const record = extra === undefined || extra === false ? undefined : `${builtIn("Record")}<string, ${extra === true ? "unknown" : typeOf(extra, indent)}>`;
|
|
388
398
|
if (properties.length === 0)
|
|
389
399
|
{
|
|
390
|
-
return record ?? (extra === false ? "
|
|
400
|
+
return record ?? `${builtIn("Record")}<string, ${extra === false ? "never" : "unknown"}>`;
|
|
391
401
|
}
|
|
392
402
|
const inner = `${indent} `;
|
|
393
403
|
const lines = properties.map(([name, property]) =>
|
|
@@ -509,15 +519,15 @@ function bodyType(context: Context, operation: OperationObject): { type: string;
|
|
|
509
519
|
case "json":
|
|
510
520
|
return { type: typeOf(content.schema, " "), required };
|
|
511
521
|
case "form":
|
|
512
|
-
return { type: "FormData", required };
|
|
522
|
+
return { type: builtIn("FormData"), required };
|
|
513
523
|
case "urlencoded":
|
|
514
|
-
return { type: "URLSearchParams", required };
|
|
524
|
+
return { type: builtIn("URLSearchParams"), required };
|
|
515
525
|
case "text":
|
|
516
526
|
return { type: "string", required };
|
|
517
527
|
case "none":
|
|
518
528
|
return undefined;
|
|
519
529
|
default:
|
|
520
|
-
return { type: "BodyInit", required };
|
|
530
|
+
return { type: builtIn("BodyInit"), required };
|
|
521
531
|
}
|
|
522
532
|
}
|
|
523
533
|
|
|
@@ -547,7 +557,7 @@ function outputType(context: Context, operation: OperationObject): string
|
|
|
547
557
|
types.add("undefined");
|
|
548
558
|
break;
|
|
549
559
|
default:
|
|
550
|
-
types.add("Blob");
|
|
560
|
+
types.add(builtIn("Blob"));
|
|
551
561
|
}
|
|
552
562
|
}
|
|
553
563
|
return [...types].join(" | ");
|
|
@@ -575,30 +585,42 @@ function entryOf(context: Context, path: string, item: PathItemObject, method: s
|
|
|
575
585
|
return { name: operationName(operation, method, path), method, path, lines, doc: doc === "" ? undefined : doc };
|
|
576
586
|
}
|
|
577
587
|
|
|
578
|
-
/** The
|
|
579
|
-
|
|
588
|
+
/** The built-in types a generated module may write, with what each is. */
|
|
589
|
+
const BUILT_INS: ReadonlyMap<string, string> = new Map([
|
|
590
|
+
["Record", "TypeScript's Record type"],
|
|
591
|
+
["Blob", "the global Blob type"],
|
|
592
|
+
["FormData", "the global FormData type"],
|
|
593
|
+
["URLSearchParams", "the global URLSearchParams type"],
|
|
594
|
+
["BodyInit", "the global BodyInit type"]
|
|
595
|
+
]);
|
|
596
|
+
|
|
597
|
+
/** The type names no schema can take in a module, with what each is: the interface of the operations, the `RouteTable` the module imports, and the built-in types in `used`, which the module writes. A built-in the module does not write is left to a schema of that name. */
|
|
598
|
+
function reservedTypeNames(apiName: string, used: ReadonlySet<string>): Map<string, string>
|
|
580
599
|
{
|
|
581
|
-
|
|
582
|
-
["Record", "TypeScript's Record type"],
|
|
583
|
-
["Blob", "the global Blob type"],
|
|
584
|
-
["FormData", "the global FormData type"],
|
|
585
|
-
["URLSearchParams", "the global URLSearchParams type"],
|
|
586
|
-
["BodyInit", "the global BodyInit type"],
|
|
600
|
+
const reserved = new Map([
|
|
587
601
|
["RouteTable", "the RouteTable type the module imports"],
|
|
588
602
|
[apiName, "the interface of the operations, which apiName renames"]
|
|
589
603
|
]);
|
|
604
|
+
for (const [name, what] of BUILT_INS)
|
|
605
|
+
{
|
|
606
|
+
if (used.has(name))
|
|
607
|
+
{
|
|
608
|
+
reserved.set(name, `${what}, which this module uses`);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
return reserved;
|
|
590
612
|
}
|
|
591
613
|
|
|
592
614
|
/**
|
|
593
615
|
* The type name every schema is written under, by schema name, with the
|
|
594
616
|
* reason for a name that is not the schema's own. A schema keeps its own
|
|
595
|
-
* name, as `note-item` gives `NoteItem`, unless
|
|
596
|
-
*
|
|
597
|
-
*
|
|
617
|
+
* name, as `note-item` gives `NoteItem`, unless `reserved` holds it or a
|
|
618
|
+
* schema earlier in sorted order takes it; then it gets the first free
|
|
619
|
+
* name with a number added, as `Record2`.
|
|
598
620
|
*/
|
|
599
|
-
function schemaTypeNames(names: readonly string[],
|
|
621
|
+
function schemaTypeNames(names: readonly string[], reserved: ReadonlyMap<string, string>): Map<string, { type: string; reason?: string }>
|
|
600
622
|
{
|
|
601
|
-
const holders =
|
|
623
|
+
const holders = new Map(reserved);
|
|
602
624
|
const assigned = new Map<string, { type: string; reason?: string }>();
|
|
603
625
|
for (const name of names)
|
|
604
626
|
{
|
|
@@ -636,11 +658,14 @@ function schemaTypeNames(names: readonly string[], apiName: string): Map<string,
|
|
|
636
658
|
* method and path), and `routes` carries the method and path of each.
|
|
637
659
|
* Header and cookie parameters, security, and non-local references are
|
|
638
660
|
* left out; the client sends headers through its options. A schema whose
|
|
639
|
-
* type name
|
|
640
|
-
*
|
|
641
|
-
* `
|
|
642
|
-
*
|
|
643
|
-
*
|
|
661
|
+
* type name would clash is written under the first free name with a
|
|
662
|
+
* number added, as `Record2`, with a comment that says why, and every
|
|
663
|
+
* `$ref` to it uses that name: one that another schema takes first, as
|
|
664
|
+
* `note-item` and `note_item` both give `NoteItem`, one named like the
|
|
665
|
+
* interface of the operations or the `RouteTable` the module imports, and
|
|
666
|
+
* one named like a built-in type the module writes, such as `Record` for
|
|
667
|
+
* an object of free keys or `Blob` for a binary response. A schema named
|
|
668
|
+
* like a built-in the module does not write keeps its name.
|
|
644
669
|
*/
|
|
645
670
|
export function generateClient(document: OpenApiDocument, options: GenerateOptions = {}): string
|
|
646
671
|
{
|
|
@@ -650,6 +675,20 @@ export function generateClient(document: OpenApiDocument, options: GenerateOptio
|
|
|
650
675
|
}
|
|
651
676
|
const context: Context = { document, apiName: options.apiName ?? "Api" };
|
|
652
677
|
const specifier = options.clientSpecifier ?? "@zerolith/client";
|
|
678
|
+
const names = Object.keys(document.components?.schemas ?? {}).toSorted((a, b) => a.localeCompare(b));
|
|
679
|
+
const first = writeModule(context, specifier, schemaTypeNames(names, reservedTypeNames(context.apiName, new Set())));
|
|
680
|
+
if (![...first.types.values()].some(({ type }) => first.used.has(type)))
|
|
681
|
+
{
|
|
682
|
+
return first.code;
|
|
683
|
+
}
|
|
684
|
+
return writeModule(context, specifier, schemaTypeNames(names, reservedTypeNames(context.apiName, first.used))).code;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
/** The module text for the given schema type names, with the built-in types it writes, which a second pass reserves when a schema took one of their names. */
|
|
688
|
+
function writeModule(context: Context, specifier: string, types: Map<string, { type: string; reason?: string }>): { code: string; used: ReadonlySet<string>; types: Map<string, { type: string; reason?: string }> }
|
|
689
|
+
{
|
|
690
|
+
const { document } = context;
|
|
691
|
+
builtInsUsed = new Set();
|
|
653
692
|
const out: string[] = [];
|
|
654
693
|
const title = document.info?.title === undefined ? "an OpenAPI document" : `${document.info.title}${document.info.version === undefined ? "" : ` ${document.info.version}`}`;
|
|
655
694
|
out.push(`// Generated by @zerolith/client from ${title}. Do not edit; regenerate instead.`);
|
|
@@ -657,7 +696,6 @@ export function generateClient(document: OpenApiDocument, options: GenerateOptio
|
|
|
657
696
|
out.push("");
|
|
658
697
|
|
|
659
698
|
const schemas = Object.entries(document.components?.schemas ?? {}).toSorted(([a], [b]) => a.localeCompare(b));
|
|
660
|
-
const types = schemaTypeNames(schemas.map(([name]) => name), context.apiName);
|
|
661
699
|
schemaTypes = new Map(Array.from(types, ([name, { type }]) => [name, type]));
|
|
662
700
|
for (const [name, schema] of schemas)
|
|
663
701
|
{
|
|
@@ -714,5 +752,5 @@ export function generateClient(document: OpenApiDocument, options: GenerateOptio
|
|
|
714
752
|
out.push(entries.map((entry) => ` ${key(entry.name)}: { method: ${JSON.stringify(entry.method)}, path: ${JSON.stringify(entry.path)} }`).join(",\n"));
|
|
715
753
|
out.push(`} as const satisfies RouteTable<${context.apiName}>;`);
|
|
716
754
|
out.push("");
|
|
717
|
-
return out.join("\n");
|
|
755
|
+
return { code: out.join("\n"), used: builtInsUsed, types };
|
|
718
756
|
}
|