@kubb/adapter-oas 5.0.0-alpha.16 → 5.0.0-alpha.17
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.cjs +64 -125
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -25
- package/dist/index.js +66 -123
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/src/adapter.ts +10 -3
- package/src/constants.ts +1 -2
- package/src/parser.ts +79 -52
- package/src/types.ts +1 -26
- package/src/discriminator.ts +0 -25
- package/src/infer.ts +0 -85
- package/src/naming.ts +0 -25
- package/src/refResolver.ts +0 -65
package/dist/index.cjs
CHANGED
|
@@ -2,10 +2,6 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
2
2
|
//#region \0rolldown/runtime.js
|
|
3
3
|
var __create = Object.create;
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
5
|
-
var __name = (target, value) => __defProp(target, "name", {
|
|
6
|
-
value,
|
|
7
|
-
configurable: true
|
|
8
|
-
});
|
|
9
5
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
10
6
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
11
7
|
var __getProtoOf = Object.getPrototypeOf;
|
|
@@ -914,91 +910,6 @@ function resolveCollisions(schemasWithMeta) {
|
|
|
914
910
|
};
|
|
915
911
|
}
|
|
916
912
|
//#endregion
|
|
917
|
-
//#region src/discriminator.ts
|
|
918
|
-
function resolveDiscriminatorValue(mapping, ref) {
|
|
919
|
-
if (!mapping || !ref) return void 0;
|
|
920
|
-
return Object.entries(mapping).find(([, value]) => value === ref)?.[0];
|
|
921
|
-
}
|
|
922
|
-
function createDiscriminantNode(propertyName, value) {
|
|
923
|
-
return (0, _kubb_ast.createSchema)({
|
|
924
|
-
type: "object",
|
|
925
|
-
primitive: "object",
|
|
926
|
-
properties: [(0, _kubb_ast.createProperty)({
|
|
927
|
-
name: propertyName,
|
|
928
|
-
schema: (0, _kubb_ast.createSchema)({
|
|
929
|
-
type: "enum",
|
|
930
|
-
primitive: "string",
|
|
931
|
-
enumValues: [value]
|
|
932
|
-
}),
|
|
933
|
-
required: true
|
|
934
|
-
})]
|
|
935
|
-
});
|
|
936
|
-
}
|
|
937
|
-
//#endregion
|
|
938
|
-
//#region src/naming.ts
|
|
939
|
-
function resolveChildName(parentName, propName) {
|
|
940
|
-
return parentName ? pascalCase([parentName, propName].join(" ")) : void 0;
|
|
941
|
-
}
|
|
942
|
-
function resolveEnumPropName(parentName, propName, enumSuffix) {
|
|
943
|
-
return pascalCase([
|
|
944
|
-
parentName,
|
|
945
|
-
propName,
|
|
946
|
-
enumSuffix
|
|
947
|
-
].filter(Boolean).join(" "));
|
|
948
|
-
}
|
|
949
|
-
function applyEnumName(propNode, parentName, propName, enumSuffix) {
|
|
950
|
-
const enumNode = (0, _kubb_ast.narrowSchema)(propNode, "enum");
|
|
951
|
-
if (enumNode?.primitive === "boolean") return {
|
|
952
|
-
...propNode,
|
|
953
|
-
name: void 0
|
|
954
|
-
};
|
|
955
|
-
if (enumNode) return {
|
|
956
|
-
...propNode,
|
|
957
|
-
name: resolveEnumPropName(parentName, propName, enumSuffix)
|
|
958
|
-
};
|
|
959
|
-
return propNode;
|
|
960
|
-
}
|
|
961
|
-
//#endregion
|
|
962
|
-
//#region src/refResolver.ts
|
|
963
|
-
/**
|
|
964
|
-
* Collects import entries for all `ref` schema nodes in `node`.
|
|
965
|
-
*/
|
|
966
|
-
function getImports({ node, nameMapping, resolve }) {
|
|
967
|
-
return (0, _kubb_ast.collect)(node, { schema(schemaNode) {
|
|
968
|
-
if (schemaNode.type !== "ref" || !schemaNode.ref) return;
|
|
969
|
-
const rawName = (0, _kubb_ast.extractRefName)(schemaNode.ref);
|
|
970
|
-
const result = resolve(nameMapping.get(rawName) ?? rawName);
|
|
971
|
-
if (!result) return;
|
|
972
|
-
return {
|
|
973
|
-
name: [result.name],
|
|
974
|
-
path: result.path
|
|
975
|
-
};
|
|
976
|
-
} });
|
|
977
|
-
}
|
|
978
|
-
/**
|
|
979
|
-
* Walks a schema tree and resolves `ref`/`enum` names through callbacks.
|
|
980
|
-
*/
|
|
981
|
-
function resolveRefs({ node, nameMapping, resolveName, resolveEnumName }) {
|
|
982
|
-
return (0, _kubb_ast.transform)(node, { schema(schemaNode) {
|
|
983
|
-
const schemaRef = (0, _kubb_ast.narrowSchema)(schemaNode, _kubb_ast.schemaTypes.ref);
|
|
984
|
-
if (schemaRef && (schemaRef.ref || schemaRef.name)) {
|
|
985
|
-
const rawRef = schemaRef.ref ?? schemaRef.name;
|
|
986
|
-
const resolved = resolveName(nameMapping.get(rawRef) ?? rawRef);
|
|
987
|
-
if (resolved) return {
|
|
988
|
-
...schemaNode,
|
|
989
|
-
name: resolved
|
|
990
|
-
};
|
|
991
|
-
}
|
|
992
|
-
if (schemaNode.type === "enum" && schemaNode.name) {
|
|
993
|
-
const resolved = (resolveEnumName ?? resolveName)(schemaNode.name);
|
|
994
|
-
if (resolved) return {
|
|
995
|
-
...schemaNode,
|
|
996
|
-
name: resolved
|
|
997
|
-
};
|
|
998
|
-
}
|
|
999
|
-
} });
|
|
1000
|
-
}
|
|
1001
|
-
//#endregion
|
|
1002
913
|
//#region src/parser.ts
|
|
1003
914
|
/**
|
|
1004
915
|
* Looks up the Kubb `SchemaType` for a given OAS `format` string.
|
|
@@ -1188,7 +1099,7 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1188
1099
|
const inOneOf = parentUnion.some((oneOfItem) => isReference(oneOfItem) && oneOfItem.$ref === childRef);
|
|
1189
1100
|
const inMapping = Object.values(deref.discriminator.mapping ?? {}).some((v) => v === childRef);
|
|
1190
1101
|
if (inOneOf || inMapping) {
|
|
1191
|
-
const discriminatorValue =
|
|
1102
|
+
const discriminatorValue = (0, _kubb_ast.findDiscriminator)(deref.discriminator.mapping, childRef);
|
|
1192
1103
|
if (discriminatorValue) filteredDiscriminantValues.push({
|
|
1193
1104
|
propertyName: deref.discriminator.propertyName,
|
|
1194
1105
|
value: discriminatorValue
|
|
@@ -1220,10 +1131,13 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1220
1131
|
const { allOf: _allOf, ...schemaWithoutAllOf } = schema;
|
|
1221
1132
|
allOfMembers.push(convertSchema({ schema: schemaWithoutAllOf }, rawOptions));
|
|
1222
1133
|
}
|
|
1223
|
-
for (const { propertyName, value } of filteredDiscriminantValues) allOfMembers.push(
|
|
1134
|
+
for (const { propertyName, value } of filteredDiscriminantValues) allOfMembers.push((0, _kubb_ast.createDiscriminantNode)({
|
|
1135
|
+
propertyName,
|
|
1136
|
+
value
|
|
1137
|
+
}));
|
|
1224
1138
|
return (0, _kubb_ast.createSchema)({
|
|
1225
1139
|
type: "intersection",
|
|
1226
|
-
members: [...(0, _kubb_ast.
|
|
1140
|
+
members: [...(0, _kubb_ast.mergeAdjacentObjects)(allOfMembers.slice(0, syntheticStart)), ...(0, _kubb_ast.mergeAdjacentObjects)(allOfMembers.slice(syntheticStart))],
|
|
1227
1141
|
...renderSchemaBase(schema, name, nullable, defaultValue)
|
|
1228
1142
|
});
|
|
1229
1143
|
}
|
|
@@ -1236,6 +1150,15 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1236
1150
|
* adding common fields next to a discriminated union.
|
|
1237
1151
|
*/
|
|
1238
1152
|
function convertUnion({ schema, name, nullable, defaultValue, rawOptions }) {
|
|
1153
|
+
function pickDiscriminatorPropertyNode(node, propertyName) {
|
|
1154
|
+
const discriminatorProperty = (0, _kubb_ast.narrowSchema)(node, "object")?.properties?.find((property) => property.name === propertyName);
|
|
1155
|
+
if (!discriminatorProperty) return;
|
|
1156
|
+
return (0, _kubb_ast.createSchema)({
|
|
1157
|
+
type: "object",
|
|
1158
|
+
primitive: "object",
|
|
1159
|
+
properties: [discriminatorProperty]
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1239
1162
|
const unionMembers = [...schema.oneOf ?? [], ...schema.anyOf ?? []];
|
|
1240
1163
|
const unionBase = {
|
|
1241
1164
|
...renderSchemaBase(schema, name, nullable, defaultValue),
|
|
@@ -1249,32 +1172,40 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1249
1172
|
name
|
|
1250
1173
|
}, rawOptions);
|
|
1251
1174
|
})() : void 0;
|
|
1252
|
-
if (sharedPropertiesNode || discriminator?.mapping)
|
|
1253
|
-
|
|
1254
|
-
...unionBase,
|
|
1255
|
-
members: unionMembers.map((s) => {
|
|
1175
|
+
if (sharedPropertiesNode || discriminator?.mapping) {
|
|
1176
|
+
const members = unionMembers.map((s) => {
|
|
1256
1177
|
const ref = isReference(s) ? s.$ref : void 0;
|
|
1257
|
-
const discriminatorValue =
|
|
1178
|
+
const discriminatorValue = (0, _kubb_ast.findDiscriminator)(discriminator?.mapping, ref);
|
|
1258
1179
|
const memberNode = convertSchema({ schema: s }, rawOptions);
|
|
1259
|
-
if (
|
|
1180
|
+
if (!discriminatorValue || !discriminator) return memberNode;
|
|
1181
|
+
return (0, _kubb_ast.createSchema)({
|
|
1260
1182
|
type: "intersection",
|
|
1261
|
-
members: [memberNode,
|
|
1183
|
+
members: [memberNode, (sharedPropertiesNode ? pickDiscriminatorPropertyNode((0, _kubb_ast.setDiscriminatorEnum)({
|
|
1262
1184
|
node: sharedPropertiesNode,
|
|
1263
1185
|
propertyName: discriminator.propertyName,
|
|
1264
1186
|
values: [discriminatorValue]
|
|
1265
|
-
}) :
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
type: "intersection",
|
|
1270
|
-
members: [memberNode, createDiscriminantNode(discriminator.propertyName, discriminatorValue)]
|
|
1187
|
+
}), discriminator.propertyName) : void 0) ?? (0, _kubb_ast.createDiscriminantNode)({
|
|
1188
|
+
propertyName: discriminator.propertyName,
|
|
1189
|
+
value: discriminatorValue
|
|
1190
|
+
})]
|
|
1271
1191
|
});
|
|
1272
|
-
})
|
|
1273
|
-
|
|
1192
|
+
});
|
|
1193
|
+
const unionNode = (0, _kubb_ast.createSchema)({
|
|
1194
|
+
type: "union",
|
|
1195
|
+
...unionBase,
|
|
1196
|
+
members
|
|
1197
|
+
});
|
|
1198
|
+
if (!sharedPropertiesNode) return unionNode;
|
|
1199
|
+
return (0, _kubb_ast.createSchema)({
|
|
1200
|
+
type: "intersection",
|
|
1201
|
+
...renderSchemaBase(schema, name, nullable, defaultValue),
|
|
1202
|
+
members: [unionNode, sharedPropertiesNode]
|
|
1203
|
+
});
|
|
1204
|
+
}
|
|
1274
1205
|
return (0, _kubb_ast.createSchema)({
|
|
1275
1206
|
type: "union",
|
|
1276
1207
|
...unionBase,
|
|
1277
|
-
members: (0, _kubb_ast.
|
|
1208
|
+
members: (0, _kubb_ast.simplifyUnion)(unionMembers.map((s) => convertSchema({ schema: s }, rawOptions)))
|
|
1278
1209
|
});
|
|
1279
1210
|
}
|
|
1280
1211
|
/**
|
|
@@ -1386,15 +1317,15 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1386
1317
|
};
|
|
1387
1318
|
const extensionKey = enumExtensionKeys.find((key) => key in schema);
|
|
1388
1319
|
if (extensionKey || enumPrimitive === "number" || enumPrimitive === "integer" || enumPrimitive === "boolean") {
|
|
1389
|
-
const
|
|
1320
|
+
const enumPrimitiveType = enumPrimitive === "number" || enumPrimitive === "integer" ? "number" : enumPrimitive === "boolean" ? "boolean" : "string";
|
|
1390
1321
|
const sourceValues = extensionKey ? [...new Set(schema[extensionKey])] : [...new Set(filteredValues)];
|
|
1391
1322
|
return (0, _kubb_ast.createSchema)({
|
|
1392
1323
|
...enumBase,
|
|
1393
|
-
|
|
1324
|
+
primitive: enumPrimitiveType,
|
|
1394
1325
|
namedEnumValues: sourceValues.map((label, index) => ({
|
|
1395
1326
|
name: String(label),
|
|
1396
1327
|
value: extensionKey ? filteredValues[index] ?? label : label,
|
|
1397
|
-
|
|
1328
|
+
primitive: enumPrimitiveType
|
|
1398
1329
|
}))
|
|
1399
1330
|
});
|
|
1400
1331
|
}
|
|
@@ -1420,13 +1351,13 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1420
1351
|
const required = Array.isArray(schema.required) ? schema.required.includes(propName) : !!schema.required;
|
|
1421
1352
|
const resolvedPropSchema = propSchema;
|
|
1422
1353
|
const propNullable = isNullable(resolvedPropSchema);
|
|
1423
|
-
let schemaNode =
|
|
1354
|
+
let schemaNode = (0, _kubb_ast.setEnumName)(convertSchema({
|
|
1424
1355
|
schema: resolvedPropSchema,
|
|
1425
|
-
name:
|
|
1356
|
+
name: (0, _kubb_ast.childName)(name, propName)
|
|
1426
1357
|
}, rawOptions), name, propName, options.enumSuffix);
|
|
1427
1358
|
const tupleNode = (0, _kubb_ast.narrowSchema)(schemaNode, "tuple");
|
|
1428
1359
|
if (tupleNode?.items) {
|
|
1429
|
-
const namedItems = tupleNode.items.map((item) =>
|
|
1360
|
+
const namedItems = tupleNode.items.map((item) => (0, _kubb_ast.setEnumName)(item, name, propName, options.enumSuffix));
|
|
1430
1361
|
if (namedItems.some((item, i) => item !== tupleNode.items[i])) schemaNode = {
|
|
1431
1362
|
...tupleNode,
|
|
1432
1363
|
items: namedItems
|
|
@@ -1459,11 +1390,11 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1459
1390
|
});
|
|
1460
1391
|
if (isDiscriminator(schema) && schema.discriminator.mapping) {
|
|
1461
1392
|
const discPropName = schema.discriminator.propertyName;
|
|
1462
|
-
return (0, _kubb_ast.
|
|
1393
|
+
return (0, _kubb_ast.setDiscriminatorEnum)({
|
|
1463
1394
|
node: objectNode,
|
|
1464
1395
|
propertyName: discPropName,
|
|
1465
1396
|
values: Object.keys(schema.discriminator.mapping),
|
|
1466
|
-
enumName: name ?
|
|
1397
|
+
enumName: name ? (0, _kubb_ast.enumPropName)(name, discPropName, options.enumSuffix) : void 0
|
|
1467
1398
|
});
|
|
1468
1399
|
}
|
|
1469
1400
|
return objectNode;
|
|
@@ -1495,7 +1426,7 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1495
1426
|
*/
|
|
1496
1427
|
function convertArray({ schema, name, nullable, defaultValue, rawOptions, options }) {
|
|
1497
1428
|
const rawItems = schema.items;
|
|
1498
|
-
const itemName = rawItems?.enum?.length && name ?
|
|
1429
|
+
const itemName = rawItems?.enum?.length && name ? (0, _kubb_ast.enumPropName)(void 0, name, options.enumSuffix) : void 0;
|
|
1499
1430
|
return (0, _kubb_ast.createSchema)({
|
|
1500
1431
|
type: "array",
|
|
1501
1432
|
primitive: "array",
|
|
@@ -1726,15 +1657,16 @@ function createOasParser(oas, { contentType } = {}) {
|
|
|
1726
1657
|
operations: Object.entries(paths).flatMap(([_path, methods]) => Object.entries(methods).map(([, operation]) => operation ? parseOperation(mergedOptions, oas, operation) : null).filter((op) => op !== null))
|
|
1727
1658
|
});
|
|
1728
1659
|
}
|
|
1660
|
+
const resolveRefs = (node, resolveName, resolveEnumName) => (0, _kubb_ast.resolveNames)({
|
|
1661
|
+
node,
|
|
1662
|
+
nameMapping,
|
|
1663
|
+
resolveName,
|
|
1664
|
+
resolveEnumName
|
|
1665
|
+
});
|
|
1729
1666
|
return {
|
|
1730
1667
|
parse,
|
|
1731
1668
|
convertSchema,
|
|
1732
|
-
resolveRefs
|
|
1733
|
-
node,
|
|
1734
|
-
nameMapping,
|
|
1735
|
-
resolveName,
|
|
1736
|
-
resolveEnumName
|
|
1737
|
-
}), "resolveRefs"),
|
|
1669
|
+
resolveRefs,
|
|
1738
1670
|
nameMapping
|
|
1739
1671
|
};
|
|
1740
1672
|
}
|
|
@@ -1779,10 +1711,17 @@ const adapterOas = (0, _kubb_core.createAdapter)((options) => {
|
|
|
1779
1711
|
nameMapping
|
|
1780
1712
|
},
|
|
1781
1713
|
getImports(node, resolve) {
|
|
1782
|
-
return
|
|
1714
|
+
return (0, _kubb_ast.collectImports)({
|
|
1783
1715
|
node,
|
|
1784
1716
|
nameMapping,
|
|
1785
|
-
resolve
|
|
1717
|
+
resolve: (schemaName) => {
|
|
1718
|
+
const result = resolve(schemaName);
|
|
1719
|
+
if (!result) return;
|
|
1720
|
+
return {
|
|
1721
|
+
name: [result.name],
|
|
1722
|
+
path: result.path
|
|
1723
|
+
};
|
|
1724
|
+
}
|
|
1786
1725
|
});
|
|
1787
1726
|
},
|
|
1788
1727
|
async parse(source) {
|