@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 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 = resolveDiscriminatorValue(deref.discriminator.mapping, childRef);
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(createDiscriminantNode(propertyName, value));
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.mergeAdjacentAnonymousObjects)(allOfMembers.slice(0, syntheticStart)), ...(0, _kubb_ast.mergeAdjacentAnonymousObjects)(allOfMembers.slice(syntheticStart))],
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) return (0, _kubb_ast.createSchema)({
1253
- type: "union",
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 = resolveDiscriminatorValue(discriminator?.mapping, ref);
1178
+ const discriminatorValue = (0, _kubb_ast.findDiscriminator)(discriminator?.mapping, ref);
1258
1179
  const memberNode = convertSchema({ schema: s }, rawOptions);
1259
- if (sharedPropertiesNode) return (0, _kubb_ast.createSchema)({
1180
+ if (!discriminatorValue || !discriminator) return memberNode;
1181
+ return (0, _kubb_ast.createSchema)({
1260
1182
  type: "intersection",
1261
- members: [memberNode, discriminatorValue && discriminator ? (0, _kubb_ast.applyDiscriminatorEnum)({
1183
+ members: [memberNode, (sharedPropertiesNode ? pickDiscriminatorPropertyNode((0, _kubb_ast.setDiscriminatorEnum)({
1262
1184
  node: sharedPropertiesNode,
1263
1185
  propertyName: discriminator.propertyName,
1264
1186
  values: [discriminatorValue]
1265
- }) : sharedPropertiesNode]
1266
- });
1267
- if (!discriminatorValue || !discriminator) return memberNode;
1268
- return (0, _kubb_ast.createSchema)({
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.simplifyUnionMembers)(unionMembers.map((s) => convertSchema({ schema: s }, rawOptions)))
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 enumType = enumPrimitive === "number" || enumPrimitive === "integer" ? "number" : enumPrimitive === "boolean" ? "boolean" : "string";
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
- enumType,
1324
+ primitive: enumPrimitiveType,
1394
1325
  namedEnumValues: sourceValues.map((label, index) => ({
1395
1326
  name: String(label),
1396
1327
  value: extensionKey ? filteredValues[index] ?? label : label,
1397
- format: enumType
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 = applyEnumName(convertSchema({
1354
+ let schemaNode = (0, _kubb_ast.setEnumName)(convertSchema({
1424
1355
  schema: resolvedPropSchema,
1425
- name: resolveChildName(name, propName)
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) => applyEnumName(item, name, propName, options.enumSuffix));
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.applyDiscriminatorEnum)({
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 ? resolveEnumPropName(name, discPropName, options.enumSuffix) : void 0
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 ? resolveEnumPropName(void 0, name, options.enumSuffix) : void 0;
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: /* @__PURE__ */ __name((node, resolveName, resolveEnumName) => 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 getImports({
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) {