@sebspark/openapi-typegen 1.1.0 → 1.2.1
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/index.js +51 -5
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -185,6 +185,7 @@ var generateProperty = (property) => {
|
|
|
185
185
|
return `${document(property)}${propertyName(property.name)}${property.optional ? "?" : ""}: ${types.join(OR) || "unknown"}`;
|
|
186
186
|
};
|
|
187
187
|
var preamble = (type) => type.name ? `${document(type)}export type ${typeName(type.name)} = ` : "";
|
|
188
|
+
var rxProperVariable = /^[a-zA-Z_<>$][a-zA-Z0-9_<>$]*$/;
|
|
188
189
|
var typeName = (name) => {
|
|
189
190
|
if (rxProperVariable.test(name))
|
|
190
191
|
return name;
|
|
@@ -195,7 +196,6 @@ var propertyName = (name) => {
|
|
|
195
196
|
return name;
|
|
196
197
|
return `'${name}'`;
|
|
197
198
|
};
|
|
198
|
-
var rxProperVariable = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/;
|
|
199
199
|
var extensions = (type) => type.extends.map(generateType).concat("").join(AND);
|
|
200
200
|
var generatePrimitive = (parsed) => `${preamble(parsed)}${parsed.type}`;
|
|
201
201
|
var generateCustom = (parsed) => `${preamble(parsed)}${typeName(parsed.type)}`;
|
|
@@ -208,7 +208,8 @@ var generateObject = (parsed) => {
|
|
|
208
208
|
};
|
|
209
209
|
var generateArray = (parsed) => {
|
|
210
210
|
const lines = [];
|
|
211
|
-
|
|
211
|
+
const items = generateType(parsed.items);
|
|
212
|
+
lines.push(`${preamble(parsed)}${items}[]`);
|
|
212
213
|
return lines.join("\n");
|
|
213
214
|
};
|
|
214
215
|
var generateEnum = (parsed) => {
|
|
@@ -217,7 +218,7 @@ var generateEnum = (parsed) => {
|
|
|
217
218
|
var generateHeader = (header) => {
|
|
218
219
|
return `${preamble(header)}{ ${propertyName(header.name)}${header.optional ? "?" : ""}: ${generateType(header.type)} }`;
|
|
219
220
|
};
|
|
220
|
-
var generateResponseBody = (type) => {
|
|
221
|
+
var generateResponseBody = (type, optional = true) => {
|
|
221
222
|
const customType = type.type;
|
|
222
223
|
if (customType)
|
|
223
224
|
return typeName(customType);
|
|
@@ -227,7 +228,9 @@ var generateResponseBody = (type) => {
|
|
|
227
228
|
const tokens = [];
|
|
228
229
|
tokens.push(preamble(body));
|
|
229
230
|
tokens.push("APIResponse<");
|
|
230
|
-
tokens.push(
|
|
231
|
+
tokens.push(
|
|
232
|
+
body.data ? generateType(serialized(body.data, optional)) : "undefined"
|
|
233
|
+
);
|
|
231
234
|
if (body.headers) {
|
|
232
235
|
tokens.push(", ");
|
|
233
236
|
tokens.push(body.headers ? generateHeaders(body.headers) : "undefined");
|
|
@@ -235,6 +238,36 @@ var generateResponseBody = (type) => {
|
|
|
235
238
|
tokens.push(">");
|
|
236
239
|
return tokens.join("");
|
|
237
240
|
};
|
|
241
|
+
var serialized = (orig, optional = true) => {
|
|
242
|
+
switch (orig.type) {
|
|
243
|
+
case "bigint":
|
|
244
|
+
case "boolean":
|
|
245
|
+
case "enum":
|
|
246
|
+
case "null":
|
|
247
|
+
case "number":
|
|
248
|
+
case "string":
|
|
249
|
+
case "symbol":
|
|
250
|
+
case "undefined": {
|
|
251
|
+
return orig;
|
|
252
|
+
}
|
|
253
|
+
case "Date": {
|
|
254
|
+
return { ...orig, type: "string" };
|
|
255
|
+
}
|
|
256
|
+
case "array": {
|
|
257
|
+
return {
|
|
258
|
+
...orig,
|
|
259
|
+
items: serialized(orig.items, optional)
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
case "object": {
|
|
263
|
+
return orig;
|
|
264
|
+
}
|
|
265
|
+
default: {
|
|
266
|
+
const wrapper = optional ? "PartiallySerialized" : "Serialized";
|
|
267
|
+
return { ...orig, type: `${wrapper}<${typeName(orig.type)}>` };
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
};
|
|
238
271
|
var generateHeaders = (headers) => {
|
|
239
272
|
const tokens = [];
|
|
240
273
|
for (const header of headers) {
|
|
@@ -306,7 +339,7 @@ var generateCall = (path) => {
|
|
|
306
339
|
url: '${path.url}', ${generateClientArgs(path.args)}opts?: RequestOptions,
|
|
307
340
|
): Promise<${responses}>`;
|
|
308
341
|
};
|
|
309
|
-
var generateResponses = (path) => Object.entries(path.responses).filter(([code]) => parseInt(code, 10) < 400).map(([, type]) => generateResponseBody(type)).join(OR);
|
|
342
|
+
var generateResponses = (path) => Object.entries(path.responses).filter(([code]) => parseInt(code, 10) < 400).map(([, type]) => generateResponseBody(type, false)).join(OR);
|
|
310
343
|
|
|
311
344
|
// src/generator/server.ts
|
|
312
345
|
var generateServer = (name, paths) => {
|
|
@@ -353,7 +386,9 @@ var generate = (name, doc) => `
|
|
|
353
386
|
APIServerDefinition,
|
|
354
387
|
BaseClient,
|
|
355
388
|
GenericRouteHandler,
|
|
389
|
+
PartiallySerialized,
|
|
356
390
|
RequestOptions,
|
|
391
|
+
Serialized,
|
|
357
392
|
} from '@sebspark/openapi-core'
|
|
358
393
|
import type { Request } from 'express'
|
|
359
394
|
|
|
@@ -508,6 +543,17 @@ var parsePropertyType = (property) => {
|
|
|
508
543
|
case "integer": {
|
|
509
544
|
return { type: "number", ...parseDocumentation(schemaObject) };
|
|
510
545
|
}
|
|
546
|
+
case "string": {
|
|
547
|
+
switch (schemaObject.format) {
|
|
548
|
+
case "date":
|
|
549
|
+
case "date-time": {
|
|
550
|
+
return { type: "Date", ...parseDocumentation(schemaObject) };
|
|
551
|
+
}
|
|
552
|
+
default: {
|
|
553
|
+
return { type, ...parseDocumentation(schemaObject) };
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
511
557
|
default: {
|
|
512
558
|
return { type, ...parseDocumentation(schemaObject) };
|
|
513
559
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebspark/openapi-typegen",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"boxen": "<6",
|
|
28
28
|
"chalk": "<5",
|
|
29
29
|
"change-case": "4.1.2",
|
|
30
|
-
"prettier": "3.2.
|
|
30
|
+
"prettier": "3.2.5",
|
|
31
31
|
"yaml": "2.3.4",
|
|
32
32
|
"yargs": "17.7.2",
|
|
33
33
|
"yarn": "1.22.21"
|