@sebspark/openapi-typegen 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +60 -12
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -100,7 +100,7 @@ var requestArgs = (args, name, title) => {
|
|
|
100
100
|
if (!args)
|
|
101
101
|
return [];
|
|
102
102
|
const tokens = [];
|
|
103
|
-
const type = args.
|
|
103
|
+
const type = (args.allOf || []).map((e) => e.type).join(AND) || "Object";
|
|
104
104
|
tokens.push(
|
|
105
105
|
param(
|
|
106
106
|
buildPath("args", name),
|
|
@@ -178,7 +178,7 @@ var generateType = (parsed) => {
|
|
|
178
178
|
type = generateCustom(parsed);
|
|
179
179
|
}
|
|
180
180
|
}
|
|
181
|
-
return type.replace(/
|
|
181
|
+
return type.replace(/ [&|] \{\s*\}/g, "");
|
|
182
182
|
};
|
|
183
183
|
var generateProperty = (property) => {
|
|
184
184
|
const types = property.type.map(generateType);
|
|
@@ -196,7 +196,37 @@ var propertyName = (name) => {
|
|
|
196
196
|
return name;
|
|
197
197
|
return `'${name}'`;
|
|
198
198
|
};
|
|
199
|
-
var extensions = (type) => type.
|
|
199
|
+
var extensions = (type) => (type.allOf || []).map(generateType).concat("").join(AND) + parseOptional(type.oneOf, type.discriminator);
|
|
200
|
+
var parseOptional = (optional, discriminator) => {
|
|
201
|
+
const tokens = [];
|
|
202
|
+
const map = reverseDiscriminator(discriminator);
|
|
203
|
+
for (const type of optional || []) {
|
|
204
|
+
if (type.type === "object")
|
|
205
|
+
tokens.push(generateType(type));
|
|
206
|
+
else {
|
|
207
|
+
const custom = type;
|
|
208
|
+
if (!map[custom.type])
|
|
209
|
+
tokens.push(generateType(custom));
|
|
210
|
+
else {
|
|
211
|
+
tokens.push(
|
|
212
|
+
`(${generateType(custom)} & { ${discriminator == null ? void 0 : discriminator.propertyName}: '${map[custom.type]}' })`
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (tokens.length)
|
|
218
|
+
tokens.push("");
|
|
219
|
+
return tokens.join(OR);
|
|
220
|
+
};
|
|
221
|
+
var reverseDiscriminator = (discriminator) => {
|
|
222
|
+
const reverse = {};
|
|
223
|
+
if (!discriminator)
|
|
224
|
+
return reverse;
|
|
225
|
+
for (const [val, { type }] of Object.entries(discriminator.mapping)) {
|
|
226
|
+
reverse[type] = val;
|
|
227
|
+
}
|
|
228
|
+
return reverse;
|
|
229
|
+
};
|
|
200
230
|
var generatePrimitive = (parsed) => `${preamble(parsed)}${parsed.type}`;
|
|
201
231
|
var generateCustom = (parsed) => `${preamble(parsed)}${typeName(parsed.type)}`;
|
|
202
232
|
var generateObject = (parsed) => {
|
|
@@ -208,7 +238,8 @@ var generateObject = (parsed) => {
|
|
|
208
238
|
};
|
|
209
239
|
var generateArray = (parsed) => {
|
|
210
240
|
const lines = [];
|
|
211
|
-
|
|
241
|
+
const items = generateType(parsed.items);
|
|
242
|
+
lines.push(`${preamble(parsed)}${items}[]`);
|
|
212
243
|
return lines.join("\n");
|
|
213
244
|
};
|
|
214
245
|
var generateEnum = (parsed) => {
|
|
@@ -415,7 +446,6 @@ var generateComponents = (components) => {
|
|
|
415
446
|
tokens.push(
|
|
416
447
|
generateType({
|
|
417
448
|
type: "object",
|
|
418
|
-
extends: [],
|
|
419
449
|
name: param2.name,
|
|
420
450
|
properties: [
|
|
421
451
|
{
|
|
@@ -488,11 +518,11 @@ var parseSchema = (name, schemaOrRef) => {
|
|
|
488
518
|
}
|
|
489
519
|
};
|
|
490
520
|
var parseObjectSchema = (name, schema) => {
|
|
521
|
+
var _a;
|
|
491
522
|
const type = {
|
|
492
523
|
name,
|
|
493
524
|
type: "object",
|
|
494
525
|
properties: [],
|
|
495
|
-
extends: [],
|
|
496
526
|
...parseDocumentation(schema)
|
|
497
527
|
};
|
|
498
528
|
if (schema.properties) {
|
|
@@ -501,7 +531,23 @@ var parseObjectSchema = (name, schema) => {
|
|
|
501
531
|
);
|
|
502
532
|
}
|
|
503
533
|
if (schema.allOf) {
|
|
504
|
-
type.
|
|
534
|
+
type.allOf = schema.allOf.flatMap(parsePropertyType);
|
|
535
|
+
}
|
|
536
|
+
if (schema.oneOf) {
|
|
537
|
+
type.oneOf = schema.oneOf.flatMap(parsePropertyType);
|
|
538
|
+
}
|
|
539
|
+
if (schema.anyOf) {
|
|
540
|
+
type.oneOf = schema.anyOf.flatMap(parsePropertyType);
|
|
541
|
+
}
|
|
542
|
+
if ((_a = schema.discriminator) == null ? void 0 : _a.mapping) {
|
|
543
|
+
const mapping = {};
|
|
544
|
+
for (const [prop, ref] of Object.entries(schema.discriminator.mapping)) {
|
|
545
|
+
mapping[prop] = { type: parseRef(ref) };
|
|
546
|
+
}
|
|
547
|
+
type.discriminator = {
|
|
548
|
+
propertyName: schema.discriminator.propertyName,
|
|
549
|
+
mapping
|
|
550
|
+
};
|
|
505
551
|
}
|
|
506
552
|
return type;
|
|
507
553
|
};
|
|
@@ -616,7 +662,6 @@ var parseArgs = (path, components) => {
|
|
|
616
662
|
};
|
|
617
663
|
var createArgs = (initializer = {}) => ({
|
|
618
664
|
type: "object",
|
|
619
|
-
extends: [],
|
|
620
665
|
properties: [],
|
|
621
666
|
optional: true,
|
|
622
667
|
...initializer
|
|
@@ -632,7 +677,9 @@ var parseParameters2 = (parameters = [], components = {}) => {
|
|
|
632
677
|
const param2 = findRef(components, ref);
|
|
633
678
|
const arg = args[param2.in] || createArgs({ ...parseDocumentation(param2) });
|
|
634
679
|
arg.optional = arg.optional && !param2.required;
|
|
635
|
-
arg.
|
|
680
|
+
if (!arg.allOf)
|
|
681
|
+
arg.allOf = [];
|
|
682
|
+
arg.allOf.push({ type: parseRef(ref) });
|
|
636
683
|
args[param2.in] = arg;
|
|
637
684
|
break;
|
|
638
685
|
}
|
|
@@ -666,6 +713,7 @@ var parseParameters2 = (parameters = [], components = {}) => {
|
|
|
666
713
|
return args;
|
|
667
714
|
};
|
|
668
715
|
var parseRequestBody = (requestBody, components = {}) => {
|
|
716
|
+
var _a, _b;
|
|
669
717
|
const args = {};
|
|
670
718
|
if (!requestBody)
|
|
671
719
|
return args;
|
|
@@ -674,7 +722,7 @@ var parseRequestBody = (requestBody, components = {}) => {
|
|
|
674
722
|
const refBody = findRef(components, ref);
|
|
675
723
|
args.body = createArgs({
|
|
676
724
|
optional: !refBody.required,
|
|
677
|
-
|
|
725
|
+
allOf: [{ type: parseRef(ref) }]
|
|
678
726
|
});
|
|
679
727
|
} else {
|
|
680
728
|
const body = requestBody;
|
|
@@ -691,13 +739,13 @@ var parseRequestBody = (requestBody, components = {}) => {
|
|
|
691
739
|
} else if (parsed.type) {
|
|
692
740
|
args.body = createArgs({
|
|
693
741
|
optional: !body.required,
|
|
694
|
-
|
|
742
|
+
allOf: [parsed],
|
|
695
743
|
...parseDocumentation(body)
|
|
696
744
|
});
|
|
697
745
|
}
|
|
698
746
|
}
|
|
699
747
|
}
|
|
700
|
-
if (bodyArgs.
|
|
748
|
+
if (((_a = bodyArgs.allOf) == null ? void 0 : _a.length) || ((_b = bodyArgs.oneOf) == null ? void 0 : _b.length) || bodyArgs.properties.length) {
|
|
701
749
|
args.body = bodyArgs;
|
|
702
750
|
}
|
|
703
751
|
}
|