@kubb/plugin-oas 3.0.0-alpha.0 → 3.0.0-alpha.2

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.
Files changed (43) hide show
  1. package/dist/{OperationGenerator-CrCcKl3S.d.cts → OperationGenerator-CeM_9pxW.d.cts} +1 -1
  2. package/dist/{OperationGenerator-B0RLFu4P.d.ts → OperationGenerator-DhUhvRJE.d.ts} +1 -1
  3. package/dist/{chunk-K4GEQ3C2.cjs → chunk-CJXRFYEF.cjs} +21 -21
  4. package/dist/{chunk-K4GEQ3C2.cjs.map → chunk-CJXRFYEF.cjs.map} +1 -1
  5. package/dist/{chunk-UKUEVTRB.cjs → chunk-DRLYORTT.cjs} +23 -23
  6. package/dist/{chunk-UKUEVTRB.cjs.map → chunk-DRLYORTT.cjs.map} +1 -1
  7. package/dist/{chunk-ZZ7ZC4TT.js → chunk-K6KUETAI.js} +2 -2
  8. package/dist/{chunk-QSM6A5QX.js → chunk-LEACSHKT.js} +3 -3
  9. package/dist/{chunk-J7IF3KA3.cjs → chunk-P42X362U.cjs} +3 -3
  10. package/dist/chunk-P42X362U.cjs.map +1 -0
  11. package/dist/{chunk-3UN2S6P2.cjs → chunk-QLJIL3U5.cjs} +3 -3
  12. package/dist/{chunk-3UN2S6P2.cjs.map → chunk-QLJIL3U5.cjs.map} +1 -1
  13. package/dist/{chunk-Y272OQMW.js → chunk-UB552H4J.js} +3 -3
  14. package/dist/chunk-UB552H4J.js.map +1 -0
  15. package/dist/{chunk-GUPCIAYT.js → chunk-Y4V7HHX7.js} +2 -2
  16. package/dist/components.cjs +5 -5
  17. package/dist/components.d.cts +2 -2
  18. package/dist/components.d.ts +2 -2
  19. package/dist/components.js +3 -3
  20. package/dist/hooks.cjs +13 -13
  21. package/dist/hooks.d.cts +1 -1
  22. package/dist/hooks.d.ts +1 -1
  23. package/dist/hooks.js +3 -3
  24. package/dist/index.cjs +21 -27
  25. package/dist/index.cjs.map +1 -1
  26. package/dist/index.d.cts +3 -3
  27. package/dist/index.d.ts +3 -3
  28. package/dist/index.js +4 -10
  29. package/dist/index.js.map +1 -1
  30. package/dist/{types-BP45TdiW.d.ts → types-Dte3MA6H.d.cts} +0 -5
  31. package/dist/{types-BP45TdiW.d.cts → types-Dte3MA6H.d.ts} +0 -5
  32. package/dist/utils.cjs +8 -8
  33. package/dist/utils.d.cts +2 -2
  34. package/dist/utils.d.ts +2 -2
  35. package/dist/utils.js +2 -2
  36. package/package.json +11 -11
  37. package/src/plugin.ts +1 -9
  38. package/src/types.ts +0 -6
  39. package/dist/chunk-J7IF3KA3.cjs.map +0 -1
  40. package/dist/chunk-Y272OQMW.js.map +0 -1
  41. /package/dist/{chunk-ZZ7ZC4TT.js.map → chunk-K6KUETAI.js.map} +0 -0
  42. /package/dist/{chunk-QSM6A5QX.js.map → chunk-LEACSHKT.js.map} +0 -0
  43. /package/dist/{chunk-GUPCIAYT.js.map → chunk-Y4V7HHX7.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { FileMetaBase, PluginFactoryOptions, Generator, PluginManager, Plugin } from '@kubb/core';
2
2
  import * as KubbFile from '@kubb/fs/types';
3
3
  import { Operation, Oas, contentType } from '@kubb/oas';
4
- import { g as OperationsByMethod, f as OperationSchemas, E as Exclude, I as Include, b as Override } from './types-BP45TdiW.cjs';
4
+ import { g as OperationsByMethod, f as OperationSchemas, E as Exclude, I as Include, b as Override } from './types-Dte3MA6H.cjs';
5
5
 
6
6
  type GetOperationGeneratorOptions<T extends OperationGenerator<any, any, any>> = T extends OperationGenerator<infer Options, any, any> ? Options : never;
7
7
  type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>;
@@ -1,7 +1,7 @@
1
1
  import { FileMetaBase, PluginFactoryOptions, Generator, PluginManager, Plugin } from '@kubb/core';
2
2
  import * as KubbFile from '@kubb/fs/types';
3
3
  import { Operation, Oas, contentType } from '@kubb/oas';
4
- import { g as OperationsByMethod, f as OperationSchemas, E as Exclude, I as Include, b as Override } from './types-BP45TdiW.js';
4
+ import { g as OperationsByMethod, f as OperationSchemas, E as Exclude, I as Include, b as Override } from './types-Dte3MA6H.js';
5
5
 
6
6
  type GetOperationGeneratorOptions<T extends OperationGenerator<any, any, any>> = T extends OperationGenerator<infer Options, any, any> ? Options : never;
7
7
  type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>;
@@ -5,10 +5,10 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkJ7IF3KA3cjs = require('./chunk-J7IF3KA3.cjs');
8
+ var _chunkP42X362Ucjs = require('./chunk-P42X362U.cjs');
9
9
 
10
10
  // src/SchemaMapper.ts
11
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
11
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
12
12
  var schemaKeywords = {
13
13
  any: "any",
14
14
  strict: "strict",
@@ -60,7 +60,7 @@ function isKeyword(meta, keyword) {
60
60
  }
61
61
 
62
62
  // src/SchemaGenerator.ts
63
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
63
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
64
64
  var _core = require('@kubb/core');
65
65
  var _transformers = require('@kubb/core/transformers'); var _transformers2 = _interopRequireDefault(_transformers);
66
66
  var _utils = require('@kubb/core/utils');
@@ -70,11 +70,11 @@ var _usedAliasNames, _SchemaGenerator_instances, getUsedEnumNames_fn, getOptions
70
70
  var _SchemaGenerator = class _SchemaGenerator extends _core.Generator {
71
71
  constructor() {
72
72
  super(...arguments);
73
- _chunkJ7IF3KA3cjs.__privateAdd.call(void 0, this, _SchemaGenerator_instances);
73
+ _chunkP42X362Ucjs.__privateAdd.call(void 0, this, _SchemaGenerator_instances);
74
74
  // Collect the types of all referenced schemas, so we can export them later
75
75
  this.refs = {};
76
76
  // Keep track of already used type aliases
77
- _chunkJ7IF3KA3cjs.__privateAdd.call(void 0, this, _usedAliasNames, {});
77
+ _chunkP42X362Ucjs.__privateAdd.call(void 0, this, _usedAliasNames, {});
78
78
  }
79
79
  /**
80
80
  * Creates a type node from a given schema.
@@ -82,8 +82,8 @@ var _SchemaGenerator = class _SchemaGenerator extends _core.Generator {
82
82
  * optionally adds a union with null.
83
83
  */
84
84
  parse(props) {
85
- const options = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
86
- const defaultSchemas = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, parseSchemaObject_fn).call(this, props);
85
+ const options = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
86
+ const defaultSchemas = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, parseSchemaObject_fn).call(this, props);
87
87
  const schemas = _optionalChain([options, 'access', _ => _.transformers, 'optionalAccess', _2 => _2.schema, 'optionalCall', _3 => _3(props, defaultSchemas)]) || defaultSchemas || [];
88
88
  return _remeda.uniqueWith.call(void 0, schemas, _remeda.isDeepEqual);
89
89
  }
@@ -200,9 +200,9 @@ var _SchemaGenerator = class _SchemaGenerator extends _core.Generator {
200
200
  }
201
201
  async build() {
202
202
  const { oas, contentType, include } = this.context;
203
- const schemas = _chunkJ7IF3KA3cjs.getSchemas.call(void 0, { oas, contentType, includes: include });
203
+ const schemas = _chunkP42X362Ucjs.getSchemas.call(void 0, { oas, contentType, includes: include });
204
204
  const promises = Object.entries(schemas).reduce((acc, [name, schema]) => {
205
- const options = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, { name });
205
+ const options = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, { name });
206
206
  const promiseOperation = this.schema.call(this, name, schema, {
207
207
  ...this.options,
208
208
  ...options
@@ -219,7 +219,7 @@ var _SchemaGenerator = class _SchemaGenerator extends _core.Generator {
219
219
  _usedAliasNames = new WeakMap();
220
220
  _SchemaGenerator_instances = new WeakSet();
221
221
  getUsedEnumNames_fn = function(props) {
222
- const options = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
222
+ const options = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
223
223
  return options.usedEnumNames || {};
224
224
  };
225
225
  getOptions_fn = function({ name }) {
@@ -235,7 +235,7 @@ getOptions_fn = function({ name }) {
235
235
  };
236
236
  };
237
237
  getUnknownReturn_fn = function(props) {
238
- const options = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
238
+ const options = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, props);
239
239
  if (options.unknownType === "any") {
240
240
  return schemaKeywords.any;
241
241
  }
@@ -269,7 +269,7 @@ parseProperties_fn = function({ schema, name }) {
269
269
  }).reduce((acc, curr) => ({ ...acc, ...curr }), {});
270
270
  let additionalPropertiesSchemas = [];
271
271
  if (additionalProperties) {
272
- additionalPropertiesSchemas = additionalProperties === true ? [{ keyword: _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUnknownReturn_fn).call(this, { schema, name }) }] : this.parse({ schema: additionalProperties, parentName: name });
272
+ additionalPropertiesSchemas = additionalProperties === true ? [{ keyword: _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUnknownReturn_fn).call(this, { schema, name }) }] : this.parse({ schema: additionalProperties, parentName: name });
273
273
  }
274
274
  return [
275
275
  {
@@ -287,7 +287,7 @@ parseProperties_fn = function({ schema, name }) {
287
287
  getRefAlias_fn = function(obj) {
288
288
  const { $ref } = obj;
289
289
  let ref = this.refs[$ref];
290
- const originalName = _utils.getUniqueName.call(void 0, $ref.replace(/.+\//, ""), _chunkJ7IF3KA3cjs.__privateGet.call(void 0, this, _usedAliasNames));
290
+ const originalName = _utils.getUniqueName.call(void 0, $ref.replace(/.+\//, ""), _chunkP42X362Ucjs.__privateGet.call(void 0, this, _usedAliasNames));
291
291
  const propertyName = this.context.pluginManager.resolveName({
292
292
  name: originalName,
293
293
  pluginKey: this.context.plugin.key,
@@ -324,7 +324,7 @@ getRefAlias_fn = function(obj) {
324
324
  ];
325
325
  };
326
326
  getParsedSchemaObject_fn = function(schema) {
327
- const parsedSchema = _chunkJ7IF3KA3cjs.getSchemaFactory.call(void 0, this.context.oas)(schema);
327
+ const parsedSchema = _chunkP42X362Ucjs.getSchemaFactory.call(void 0, this.context.oas)(schema);
328
328
  return parsedSchema;
329
329
  };
330
330
  /**
@@ -332,9 +332,9 @@ getParsedSchemaObject_fn = function(schema) {
332
332
  * schema and returns the appropriate type.
333
333
  */
334
334
  parseSchemaObject_fn = function({ schema: _schema, name, parentName }) {
335
- const options = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, { schema: _schema, name });
336
- const unknownReturn = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUnknownReturn_fn).call(this, { schema: _schema, name });
337
- const { schema, version } = _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getParsedSchemaObject_fn).call(this, _schema);
335
+ const options = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getOptions_fn).call(this, { schema: _schema, name });
336
+ const unknownReturn = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUnknownReturn_fn).call(this, { schema: _schema, name });
337
+ const { schema, version } = _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getParsedSchemaObject_fn).call(this, _schema);
338
338
  const resolvedName = this.context.pluginManager.resolveName({
339
339
  name: `${parentName || ""} ${name}`,
340
340
  pluginKey: this.context.plugin.key,
@@ -401,7 +401,7 @@ parseSchemaObject_fn = function({ schema: _schema, name, parentName }) {
401
401
  }
402
402
  if (_oas.isReference.call(void 0, schema)) {
403
403
  return [
404
- ..._chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getRefAlias_fn).call(this, schema),
404
+ ..._chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getRefAlias_fn).call(this, schema),
405
405
  nullable && { keyword: schemaKeywords.nullable },
406
406
  {
407
407
  keyword: schemaKeywords.schema,
@@ -475,7 +475,7 @@ parseSchemaObject_fn = function({ schema: _schema, name, parentName }) {
475
475
  return [and, ...baseItems];
476
476
  }
477
477
  if (schema.enum) {
478
- const enumName = _utils.getUniqueName.call(void 0, _transformers.pascalCase.call(void 0, [parentName, name, options.enumSuffix].join(" ")), _chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUsedEnumNames_fn).call(this, { schema, name }));
478
+ const enumName = _utils.getUniqueName.call(void 0, _transformers.pascalCase.call(void 0, [parentName, name, options.enumSuffix].join(" ")), _chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, getUsedEnumNames_fn).call(this, { schema, name }));
479
479
  const typeName = this.context.pluginManager.resolveName({
480
480
  name: enumName,
481
481
  pluginKey: this.context.plugin.key,
@@ -664,7 +664,7 @@ parseSchemaObject_fn = function({ schema: _schema, name, parentName }) {
664
664
  ];
665
665
  }
666
666
  if (schema.properties || schema.additionalProperties) {
667
- return [..._chunkJ7IF3KA3cjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, parseProperties_fn).call(this, { schema, name }), ...baseItems];
667
+ return [..._chunkP42X362Ucjs.__privateMethod.call(void 0, this, _SchemaGenerator_instances, parseProperties_fn).call(this, { schema, name }), ...baseItems];
668
668
  }
669
669
  if (schema.type) {
670
670
  if (Array.isArray(schema.type)) {
@@ -695,4 +695,4 @@ var SchemaGenerator = _SchemaGenerator;
695
695
 
696
696
 
697
697
  exports.schemaKeywords = schemaKeywords; exports.isKeyword = isKeyword; exports.SchemaGenerator = SchemaGenerator;
698
- //# sourceMappingURL=chunk-K4GEQ3C2.cjs.map
698
+ //# sourceMappingURL=chunk-CJXRFYEF.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/chunk-K4GEQ3C2.cjs","../src/SchemaMapper.ts","../src/SchemaGenerator.ts"],"names":["_schema","nullable","min","max"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/chunk-K4GEQ3C2.cjs","sourcesContent":[null,"import type * as KubbFile from '@kubb/fs/types'\n\nexport type SchemaKeywordMapper = {\n object: {\n keyword: 'object'\n args: {\n properties: { [x: string]: Schema[] }\n additionalProperties: Schema[]\n strict?: boolean\n }\n }\n strict: { keyword: 'strict' }\n url: { keyword: 'url' }\n readOnly: { keyword: 'readOnly' }\n uuid: { keyword: 'uuid' }\n email: { keyword: 'email' }\n firstName: { keyword: 'firstName' }\n lastName: { keyword: 'lastName' }\n phone: { keyword: 'phone' }\n password: { keyword: 'password' }\n date: { keyword: 'date'; args: { type?: 'date' | 'string' } }\n time: { keyword: 'time'; args: { type?: 'date' | 'string' } }\n datetime: { keyword: 'datetime'; args: { offset?: boolean; local?: boolean } }\n tuple: { keyword: 'tuple'; args: { items: Schema[]; min?: number; max?: number } }\n array: {\n keyword: 'array'\n args: { items: Schema[]; min?: number; max?: number }\n }\n enum: {\n keyword: 'enum'\n args: {\n name: string\n typeName: string\n asConst: boolean\n items: Array<{\n name: string | number\n format: 'string' | 'number'\n value?: string | number\n }>\n }\n }\n and: { keyword: 'and'; args: Schema[] }\n const: {\n keyword: 'const'\n args: {\n name: string | number\n format: 'string' | 'number'\n value?: string | number\n }\n }\n union: { keyword: 'union'; args: Schema[] }\n ref: {\n keyword: 'ref'\n args: { name: string; path: KubbFile.OptionalPath; isTypeOnly?: boolean }\n }\n matches: { keyword: 'matches'; args?: string }\n boolean: { keyword: 'boolean' }\n default: { keyword: 'default'; args: string | number | boolean }\n string: { keyword: 'string' }\n integer: { keyword: 'integer' }\n number: { keyword: 'number' }\n max: { keyword: 'max'; args: number }\n min: { keyword: 'min'; args: number }\n describe: { keyword: 'describe'; args: string }\n example: { keyword: 'example'; args: string }\n deprecated: { keyword: 'deprecated' }\n optional: { keyword: 'optional' }\n undefined: { keyword: 'undefined' }\n nullish: { keyword: 'nullish' }\n nullable: { keyword: 'nullable' }\n null: { keyword: 'null' }\n any: { keyword: 'any' }\n unknown: { keyword: 'unknown' }\n blob: { keyword: 'blob' }\n schema: { keyword: 'schema'; args: { type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object'; format?: string } }\n name: { keyword: 'name'; args: string }\n catchall: { keyword: 'catchall' }\n}\n\nexport const schemaKeywords = {\n any: 'any',\n strict: 'strict',\n unknown: 'unknown',\n number: 'number',\n integer: 'integer',\n string: 'string',\n boolean: 'boolean',\n undefined: 'undefined',\n nullable: 'nullable',\n null: 'null',\n nullish: 'nullish',\n array: 'array',\n tuple: 'tuple',\n enum: 'enum',\n union: 'union',\n datetime: 'datetime',\n date: 'date',\n email: 'email',\n uuid: 'uuid',\n url: 'url',\n /* intersection */\n default: 'default',\n const: 'const',\n and: 'and',\n describe: 'describe',\n min: 'min',\n max: 'max',\n optional: 'optional',\n readOnly: 'readOnly',\n\n // custom ones\n object: 'object',\n ref: 'ref',\n matches: 'matches',\n firstName: 'firstName',\n lastName: 'lastName',\n password: 'password',\n phone: 'phone',\n blob: 'blob',\n deprecated: 'deprecated',\n example: 'example',\n schema: 'schema',\n catchall: 'catchall',\n time: 'time',\n name: 'name',\n} satisfies {\n [K in keyof SchemaKeywordMapper]: SchemaKeywordMapper[K]['keyword']\n}\n\nexport type SchemaKeyword = keyof SchemaKeywordMapper\n\nexport type SchemaMapper<T = string | null | undefined> = {\n [K in keyof SchemaKeywordMapper]: (() => T | undefined) | undefined\n}\n\nexport type SchemaKeywordBase<T> = {\n keyword: SchemaKeyword\n args: T\n}\n\nexport type Schema = { keyword: string } | SchemaKeywordMapper[keyof SchemaKeywordMapper]\n\nexport function isKeyword<T extends Schema, K extends keyof SchemaKeywordMapper>(meta: T, keyword: K): meta is Extract<T, SchemaKeywordMapper[K]> {\n return meta.keyword === keyword\n}\n","import { type FileMetaBase, Generator } from '@kubb/core'\nimport transformers, { pascalCase } from '@kubb/core/transformers'\nimport { getUniqueName } from '@kubb/core/utils'\n\nimport { isReference } from '@kubb/oas'\nimport { isDeepEqual, isNumber, uniqueWith } from 'remeda'\nimport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nimport { getSchemaFactory } from './utils/getSchemaFactory.ts'\nimport { getSchemas } from './utils/getSchemas.ts'\n\nimport type { Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from '@kubb/core'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport type { Oas, OpenAPIV3, SchemaObject, contentType } from '@kubb/oas'\nimport type { Schema, SchemaKeywordMapper } from './SchemaMapper.ts'\nimport type { OperationSchema, Override, Refs } from './types.ts'\n\nexport type GetSchemaGeneratorOptions<T extends SchemaGenerator<any, any, any>> = T extends SchemaGenerator<infer Options, any, any> ? Options : never\n\nexport type SchemaMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n include?: Array<'schemas' | 'responses' | 'requestBodies'>\n override: Array<Override<TOptions>> | undefined\n contentType?: contentType\n output?: string\n}\n\nexport type SchemaGeneratorOptions = {\n dateType: false | 'string' | 'stringOffset' | 'stringLocal' | 'date'\n unknownType: 'any' | 'unknown'\n enumType?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n enumSuffix?: string\n usedEnumNames?: Record<string, number>\n mapper?: Record<string, string>\n typed?: boolean\n transformers: {\n /**\n * Customize the names based on the type that is provided by the plugin.\n */\n name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string\n /**\n * Receive schema and name(propertName) and return FakerMeta array\n * TODO TODO add docs\n * @beta\n */\n schema?: (schemaProps: SchemaProps, defaultSchemas: Schema[]) => Schema[] | undefined\n }\n}\n\nexport type SchemaGeneratorBuildOptions = Omit<OperationSchema, 'name' | 'schema'>\n\ntype SchemaProps = {\n schema?: SchemaObject\n name?: string\n parentName?: string\n}\n\nexport abstract class SchemaGenerator<\n TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions,\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {\n // Collect the types of all referenced schemas, so we can export them later\n refs: Refs = {}\n\n // Keep track of already used type aliases\n #usedAliasNames: Record<string, number> = {}\n\n /**\n * Creates a type node from a given schema.\n * Delegates to getBaseTypeFromSchema internally and\n * optionally adds a union with null.\n */\n parse(props: SchemaProps): Schema[] {\n const options = this.#getOptions(props)\n\n const defaultSchemas = this.#parseSchemaObject(props)\n const schemas = options.transformers?.schema?.(props, defaultSchemas) || defaultSchemas || []\n\n return uniqueWith(schemas, isDeepEqual)\n }\n\n deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][] {\n return SchemaGenerator.deepSearch<T>(tree, keyword)\n }\n\n find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n return SchemaGenerator.find<T>(tree, keyword)\n }\n\n static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][] {\n const foundItems: SchemaKeywordMapper[T][] = []\n\n tree?.forEach((schema) => {\n if (schema.keyword === keyword) {\n foundItems.push(schema as SchemaKeywordMapper[T])\n }\n\n if (schema.keyword === schemaKeywords.object) {\n const subItem = schema as SchemaKeywordMapper['object']\n\n Object.values(subItem.args?.properties || {}).forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>(entrySchema, keyword))\n })\n\n Object.values(subItem.args?.additionalProperties || {}).forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.array) {\n const subItem = schema as SchemaKeywordMapper['array']\n\n subItem.args.items.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.and) {\n const subItem = schema as SchemaKeywordMapper['and']\n\n subItem.args.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.tuple) {\n const subItem = schema as SchemaKeywordMapper['tuple']\n\n subItem.args.items.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.union) {\n const subItem = schema as SchemaKeywordMapper['union']\n\n subItem.args.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n })\n\n return foundItems\n }\n\n static findInObject<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n let foundItem: SchemaKeywordMapper[T] | undefined = undefined\n\n tree?.forEach((schema) => {\n if (!foundItem && schema.keyword === keyword) {\n foundItem = schema as SchemaKeywordMapper[T]\n }\n\n if (schema.keyword === schemaKeywords.object) {\n const subItem = schema as SchemaKeywordMapper['object']\n\n Object.values(subItem.args?.properties || {}).forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>(entrySchema, keyword)\n }\n })\n\n Object.values(subItem.args?.additionalProperties || {}).forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n })\n\n return foundItem\n }\n\n static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n let foundItem: SchemaKeywordMapper[T] | undefined = undefined\n\n tree?.forEach((schema) => {\n if (!foundItem && schema.keyword === keyword) {\n foundItem = schema as SchemaKeywordMapper[T]\n }\n\n if (schema.keyword === schemaKeywords.array) {\n const subItem = schema as SchemaKeywordMapper['array']\n\n subItem.args.items.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.and) {\n const subItem = schema as SchemaKeywordMapper['and']\n\n subItem.args.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.tuple) {\n const subItem = schema as SchemaKeywordMapper['tuple']\n\n subItem.args.items.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.union) {\n const subItem = schema as SchemaKeywordMapper['union']\n\n subItem.args.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n })\n\n return foundItem\n }\n\n #getUsedEnumNames(props: SchemaProps) {\n const options = this.#getOptions(props)\n\n return options.usedEnumNames || {}\n }\n\n #getOptions({ name }: SchemaProps): Partial<TOptions> {\n const { override = [] } = this.context\n\n return {\n ...this.options,\n ...(override.find(({ pattern, type }) => {\n if (name && type === 'schemaName') {\n return !!name.match(pattern)\n }\n\n return false\n })?.options || {}),\n }\n }\n\n #getUnknownReturn(props: SchemaProps) {\n const options = this.#getOptions(props)\n\n if (options.unknownType === 'any') {\n return schemaKeywords.any\n }\n\n return schemaKeywords.unknown\n }\n\n /**\n * Recursively creates a type literal with the given props.\n */\n #parseProperties({ schema, name }: SchemaProps): Schema[] {\n const properties = schema?.properties || {}\n const additionalProperties = schema?.additionalProperties\n const required = schema?.required\n\n const propertiesSchemas = Object.keys(properties)\n .map((propertyName) => {\n const validationFunctions: Schema[] = []\n const propertySchema = properties[propertyName] as SchemaObject\n\n const isRequired = Array.isArray(required) ? required?.includes(propertyName) : !!required\n const nullable = propertySchema.nullable ?? propertySchema['x-nullable'] ?? false\n\n validationFunctions.push(...this.parse({ schema: propertySchema, name: propertyName, parentName: name }))\n\n validationFunctions.push({\n keyword: schemaKeywords.name,\n args: propertyName,\n })\n\n if (!isRequired && nullable) {\n validationFunctions.push({ keyword: schemaKeywords.nullish })\n } else if (!isRequired) {\n validationFunctions.push({ keyword: schemaKeywords.optional })\n }\n\n return {\n [propertyName]: validationFunctions,\n }\n })\n .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n let additionalPropertiesSchemas: Schema[] = []\n\n if (additionalProperties) {\n additionalPropertiesSchemas =\n additionalProperties === true\n ? [{ keyword: this.#getUnknownReturn({ schema, name }) }]\n : this.parse({ schema: additionalProperties as SchemaObject, parentName: name })\n }\n\n return [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: propertiesSchemas,\n additionalProperties: additionalPropertiesSchemas,\n },\n },\n ]\n }\n\n /**\n * Create a type alias for the schema referenced by the given ReferenceObject\n */\n #getRefAlias(obj: OpenAPIV3.ReferenceObject): Schema[] {\n const { $ref } = obj\n let ref = this.refs[$ref]\n\n const originalName = getUniqueName($ref.replace(/.+\\//, ''), this.#usedAliasNames)\n const propertyName = this.context.pluginManager.resolveName({\n name: originalName,\n pluginKey: this.context.plugin.key,\n type: 'function',\n })\n\n if (ref) {\n return [\n {\n keyword: schemaKeywords.ref,\n args: { name: ref.propertyName, path: ref.path },\n },\n ]\n }\n\n const fileName = this.context.pluginManager.resolveName({\n name: originalName,\n pluginKey: this.context.plugin.key,\n type: 'file',\n })\n const file = this.context.pluginManager.getFile({\n name: fileName,\n pluginKey: this.context.plugin.key,\n extName: '.ts',\n })\n\n ref = this.refs[$ref] = {\n propertyName,\n originalName,\n path: file.path,\n }\n\n return [\n {\n keyword: schemaKeywords.ref,\n args: { name: ref.propertyName, path: ref?.path, isTypeOnly: false },\n },\n ]\n }\n\n #getParsedSchemaObject(schema?: SchemaObject) {\n const parsedSchema = getSchemaFactory(this.context.oas)(schema)\n return parsedSchema\n }\n\n /**\n * This is the very core of the OpenAPI to TS conversion - it takes a\n * schema and returns the appropriate type.\n */\n #parseSchemaObject({ schema: _schema, name, parentName }: SchemaProps): Schema[] {\n const options = this.#getOptions({ schema: _schema, name })\n const unknownReturn = this.#getUnknownReturn({ schema: _schema, name })\n const { schema, version } = this.#getParsedSchemaObject(_schema)\n const resolvedName = this.context.pluginManager.resolveName({\n name: `${parentName || ''} ${name}`,\n pluginKey: this.context.plugin.key,\n type: 'type',\n })\n\n if (!schema) {\n return [{ keyword: unknownReturn }]\n }\n\n const baseItems: Schema[] = [\n {\n keyword: schemaKeywords.schema,\n args: {\n type: schema.type as any,\n format: schema.format,\n },\n },\n ]\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n const nullable = schema.nullable ?? schema['x-nullable'] ?? false\n\n if (schema.default !== undefined && !Array.isArray(schema.default)) {\n if (typeof schema.default === 'string') {\n baseItems.push({\n keyword: schemaKeywords.default,\n args: transformers.stringify(schema.default),\n })\n }\n if (typeof schema.default === 'boolean') {\n baseItems.push({\n keyword: schemaKeywords.default,\n args: schema.default ?? false,\n })\n }\n }\n\n if (schema.description) {\n baseItems.push({\n keyword: schemaKeywords.describe,\n args: schema.description,\n })\n }\n\n if (schema.pattern) {\n baseItems.unshift({\n keyword: schemaKeywords.matches,\n args: schema.pattern,\n })\n }\n\n if (max !== undefined) {\n baseItems.unshift({ keyword: schemaKeywords.max, args: max })\n }\n\n if (min !== undefined) {\n baseItems.unshift({ keyword: schemaKeywords.min, args: min })\n }\n\n if (nullable) {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n\n if (schema.type && Array.isArray(schema.type)) {\n const [_schema, nullable] = schema.type\n\n if (nullable === 'null') {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n }\n\n if (schema.readOnly) {\n baseItems.push({ keyword: schemaKeywords.readOnly })\n }\n\n if (isReference(schema)) {\n return [\n ...this.#getRefAlias(schema),\n nullable && { keyword: schemaKeywords.nullable },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: schema.type as any,\n format: schema.format,\n },\n },\n ].filter(Boolean)\n }\n\n if (schema.oneOf) {\n // union\n const schemaWithoutOneOf = { ...schema, oneOf: undefined }\n\n const union: Schema = {\n keyword: schemaKeywords.union,\n args: schema.oneOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n }),\n }\n if (schemaWithoutOneOf.properties) {\n return [...this.parse({ schema: schemaWithoutOneOf, name, parentName }), union, ...baseItems]\n }\n\n return [union, ...baseItems]\n }\n\n if (schema.anyOf) {\n // union\n const schemaWithoutAnyOf = { ...schema, anyOf: undefined }\n\n const union: Schema = {\n keyword: schemaKeywords.union,\n args: schema.anyOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n })\n .map((item) => {\n if (isKeyword(item, schemaKeywords.object)) {\n return {\n ...item,\n args: {\n ...item.args,\n strict: true,\n },\n }\n }\n return item\n }),\n }\n if (schemaWithoutAnyOf.properties) {\n return [...this.parse({ schema: schemaWithoutAnyOf, name, parentName }), union, ...baseItems]\n }\n\n return [union, ...baseItems]\n }\n if (schema.allOf) {\n // intersection/add\n const schemaWithoutAllOf = { ...schema, allOf: undefined }\n\n const and: Schema = {\n keyword: schemaKeywords.and,\n args: schema.allOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n }),\n }\n\n if (schemaWithoutAllOf.properties) {\n return [\n {\n ...and,\n args: [...(and.args || []), ...this.parse({ schema: schemaWithoutAllOf, name, parentName })],\n },\n ...baseItems,\n ]\n }\n\n return [and, ...baseItems]\n }\n\n if (schema.enum) {\n const enumName = getUniqueName(pascalCase([parentName, name, options.enumSuffix].join(' ')), this.#getUsedEnumNames({ schema, name }))\n const typeName = this.context.pluginManager.resolveName({\n name: enumName,\n pluginKey: this.context.plugin.key,\n type: 'type',\n })\n\n const nullableEnum = schema.enum.includes(null)\n if (nullableEnum) {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n const filteredValues = schema.enum.filter((value) => value !== null)\n\n // x-enumNames has priority\n const extensionEnums = ['x-enumNames', 'x-enum-varnames']\n .filter((extensionKey) => extensionKey in schema)\n .map((extensionKey) => {\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name,\n typeName,\n asConst: false,\n items: [...new Set(schema[extensionKey as keyof typeof schema] as string[])].map((name: string | number, index) => ({\n name: transformers.stringify(name),\n value: schema.enum?.[index] as string | number,\n format: isNumber(schema.enum?.[index]) ? 'number' : 'string',\n })),\n },\n },\n ...baseItems.filter(\n (item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches,\n ),\n ]\n })\n\n if (schema.type === 'number' || schema.type === 'integer') {\n // we cannot use z.enum when enum type is number/integer\n const enumNames = extensionEnums[0]?.find((item) => isKeyword(item, schemaKeywords.enum)) as unknown as SchemaKeywordMapper['enum']\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: enumName,\n typeName,\n asConst: true,\n items: enumNames?.args?.items\n ? [...new Set(enumNames.args.items)].map(({ name, value }) => ({\n name,\n value,\n format: 'number',\n }))\n : [...new Set(filteredValues)].map((value: string) => {\n return {\n name: value,\n value,\n format: 'number',\n }\n }),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches),\n ]\n }\n\n if (extensionEnums.length > 0 && extensionEnums[0]) {\n return extensionEnums[0]\n }\n\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: enumName,\n typeName,\n asConst: false,\n items: [...new Set(filteredValues)].map((value: string) => ({\n name: transformers.stringify(value),\n value,\n format: isNumber(value) ? 'number' : 'string',\n })),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches),\n ]\n }\n\n if ('prefixItems' in schema) {\n const prefixItems = schema.prefixItems as SchemaObject[]\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n\n return [\n {\n keyword: schemaKeywords.tuple,\n args: {\n min,\n max,\n items: prefixItems\n .map((item) => {\n return this.parse({ schema: item, name, parentName })[0]\n })\n .filter(Boolean),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max),\n ]\n }\n\n if (version === '3.1' && 'const' in schema) {\n // const keyword takes precendence over the actual type.\n if (schema['const']) {\n return [\n {\n keyword: schemaKeywords.const,\n args: {\n name: schema['const'],\n format: typeof schema['const'] === 'number' ? 'number' : 'string',\n value: schema['const'],\n },\n },\n ...baseItems,\n ]\n }\n return [{ keyword: schemaKeywords.null }]\n }\n\n /**\n * > Structural validation alone may be insufficient to allow an application to correctly utilize certain values. The \"format\"\n * > annotation keyword is defined to allow schema authors to convey semantic information for a fixed subset of values which are\n * > accurately described by authoritative resources, be they RFCs or other external specifications.\n *\n * In other words: format is more specific than type alone, hence it should override the type value, if possible.\n *\n * see also https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7\n */\n if (schema.format) {\n switch (schema.format) {\n case 'binary':\n baseItems.push({ keyword: schemaKeywords.blob })\n return baseItems\n case 'date-time':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'date' } })\n\n return baseItems\n }\n\n if (options.dateType === 'stringOffset') {\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { offset: true } })\n return baseItems\n }\n\n if (options.dateType === 'stringLocal') {\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { local: true } })\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { offset: false } })\n\n return baseItems\n }\n break\n case 'date':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'date' } })\n\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'string' } })\n\n return baseItems\n }\n break\n case 'time':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.time, args: { type: 'date' } })\n\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.time, args: { type: 'string' } })\n\n return baseItems\n }\n break\n case 'uuid':\n baseItems.unshift({ keyword: schemaKeywords.uuid })\n break\n case 'email':\n case 'idn-email':\n baseItems.unshift({ keyword: schemaKeywords.email })\n break\n case 'uri':\n case 'ipv4':\n case 'ipv6':\n case 'uri-reference':\n case 'hostname':\n case 'idn-hostname':\n baseItems.unshift({ keyword: schemaKeywords.url })\n break\n // case 'duration':\n // case 'json-pointer':\n // case 'relative-json-pointer':\n default:\n // formats not yet implemented: ignore.\n break\n }\n }\n\n // type based logic\n if ('items' in schema || schema.type === ('array' as 'string')) {\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n const items = this.parse({ schema: 'items' in schema ? (schema.items as SchemaObject) : [], name, parentName })\n\n return [\n {\n keyword: schemaKeywords.array,\n args: {\n items,\n min,\n max,\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max),\n ]\n }\n\n if (schema.properties || schema.additionalProperties) {\n return [...this.#parseProperties({ schema, name }), ...baseItems]\n }\n\n if (schema.type) {\n if (Array.isArray(schema.type)) {\n // OPENAPI v3.1.0: https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0\n const [type] = schema.type as Array<OpenAPIV3.NonArraySchemaObjectType>\n\n return [\n ...this.parse({\n schema: {\n ...schema,\n type,\n },\n name,\n parentName,\n }),\n ...baseItems,\n ].filter(Boolean)\n }\n\n if (!['boolean', 'object', 'number', 'string', 'integer'].includes(schema.type)) {\n this.context.pluginManager.logger.emit('warning', `Schema type '${schema.type}' is not valid for schema ${parentName}.${name}`)\n }\n\n // 'string' | 'number' | 'integer' | 'boolean'\n return [{ keyword: schema.type }, ...baseItems]\n }\n\n return [{ keyword: unknownReturn }]\n }\n\n async build(): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas, contentType, include } = this.context\n\n const schemas = getSchemas({ oas, contentType, includes: include })\n\n const promises = Object.entries(schemas).reduce((acc, [name, schema]) => {\n const options = this.#getOptions({ name })\n const promiseOperation = this.schema.call(this, name, schema, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n return acc\n }, [] as SchemaMethodResult<TFileMeta>[])\n\n const files = await Promise.all(promises)\n\n // using .flat because schemaGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Schema\n */\n abstract schema(name: string, object: SchemaObject, options: TOptions): SchemaMethodResult<TFileMeta>\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/kubb/kubb/packages/plugin-oas/dist/chunk-CJXRFYEF.cjs","../src/SchemaMapper.ts","../src/SchemaGenerator.ts"],"names":["_schema","nullable","min","max"],"mappings":"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","file":"/home/runner/work/kubb/kubb/packages/plugin-oas/dist/chunk-CJXRFYEF.cjs","sourcesContent":[null,"import type * as KubbFile from '@kubb/fs/types'\n\nexport type SchemaKeywordMapper = {\n object: {\n keyword: 'object'\n args: {\n properties: { [x: string]: Schema[] }\n additionalProperties: Schema[]\n strict?: boolean\n }\n }\n strict: { keyword: 'strict' }\n url: { keyword: 'url' }\n readOnly: { keyword: 'readOnly' }\n uuid: { keyword: 'uuid' }\n email: { keyword: 'email' }\n firstName: { keyword: 'firstName' }\n lastName: { keyword: 'lastName' }\n phone: { keyword: 'phone' }\n password: { keyword: 'password' }\n date: { keyword: 'date'; args: { type?: 'date' | 'string' } }\n time: { keyword: 'time'; args: { type?: 'date' | 'string' } }\n datetime: { keyword: 'datetime'; args: { offset?: boolean; local?: boolean } }\n tuple: { keyword: 'tuple'; args: { items: Schema[]; min?: number; max?: number } }\n array: {\n keyword: 'array'\n args: { items: Schema[]; min?: number; max?: number }\n }\n enum: {\n keyword: 'enum'\n args: {\n name: string\n typeName: string\n asConst: boolean\n items: Array<{\n name: string | number\n format: 'string' | 'number'\n value?: string | number\n }>\n }\n }\n and: { keyword: 'and'; args: Schema[] }\n const: {\n keyword: 'const'\n args: {\n name: string | number\n format: 'string' | 'number'\n value?: string | number\n }\n }\n union: { keyword: 'union'; args: Schema[] }\n ref: {\n keyword: 'ref'\n args: { name: string; path: KubbFile.OptionalPath; isTypeOnly?: boolean }\n }\n matches: { keyword: 'matches'; args?: string }\n boolean: { keyword: 'boolean' }\n default: { keyword: 'default'; args: string | number | boolean }\n string: { keyword: 'string' }\n integer: { keyword: 'integer' }\n number: { keyword: 'number' }\n max: { keyword: 'max'; args: number }\n min: { keyword: 'min'; args: number }\n describe: { keyword: 'describe'; args: string }\n example: { keyword: 'example'; args: string }\n deprecated: { keyword: 'deprecated' }\n optional: { keyword: 'optional' }\n undefined: { keyword: 'undefined' }\n nullish: { keyword: 'nullish' }\n nullable: { keyword: 'nullable' }\n null: { keyword: 'null' }\n any: { keyword: 'any' }\n unknown: { keyword: 'unknown' }\n blob: { keyword: 'blob' }\n schema: { keyword: 'schema'; args: { type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object'; format?: string } }\n name: { keyword: 'name'; args: string }\n catchall: { keyword: 'catchall' }\n}\n\nexport const schemaKeywords = {\n any: 'any',\n strict: 'strict',\n unknown: 'unknown',\n number: 'number',\n integer: 'integer',\n string: 'string',\n boolean: 'boolean',\n undefined: 'undefined',\n nullable: 'nullable',\n null: 'null',\n nullish: 'nullish',\n array: 'array',\n tuple: 'tuple',\n enum: 'enum',\n union: 'union',\n datetime: 'datetime',\n date: 'date',\n email: 'email',\n uuid: 'uuid',\n url: 'url',\n /* intersection */\n default: 'default',\n const: 'const',\n and: 'and',\n describe: 'describe',\n min: 'min',\n max: 'max',\n optional: 'optional',\n readOnly: 'readOnly',\n\n // custom ones\n object: 'object',\n ref: 'ref',\n matches: 'matches',\n firstName: 'firstName',\n lastName: 'lastName',\n password: 'password',\n phone: 'phone',\n blob: 'blob',\n deprecated: 'deprecated',\n example: 'example',\n schema: 'schema',\n catchall: 'catchall',\n time: 'time',\n name: 'name',\n} satisfies {\n [K in keyof SchemaKeywordMapper]: SchemaKeywordMapper[K]['keyword']\n}\n\nexport type SchemaKeyword = keyof SchemaKeywordMapper\n\nexport type SchemaMapper<T = string | null | undefined> = {\n [K in keyof SchemaKeywordMapper]: (() => T | undefined) | undefined\n}\n\nexport type SchemaKeywordBase<T> = {\n keyword: SchemaKeyword\n args: T\n}\n\nexport type Schema = { keyword: string } | SchemaKeywordMapper[keyof SchemaKeywordMapper]\n\nexport function isKeyword<T extends Schema, K extends keyof SchemaKeywordMapper>(meta: T, keyword: K): meta is Extract<T, SchemaKeywordMapper[K]> {\n return meta.keyword === keyword\n}\n","import { type FileMetaBase, Generator } from '@kubb/core'\nimport transformers, { pascalCase } from '@kubb/core/transformers'\nimport { getUniqueName } from '@kubb/core/utils'\n\nimport { isReference } from '@kubb/oas'\nimport { isDeepEqual, isNumber, uniqueWith } from 'remeda'\nimport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nimport { getSchemaFactory } from './utils/getSchemaFactory.ts'\nimport { getSchemas } from './utils/getSchemas.ts'\n\nimport type { Plugin, PluginFactoryOptions, PluginManager, ResolveNameParams } from '@kubb/core'\nimport type * as KubbFile from '@kubb/fs/types'\n\nimport type { Oas, OpenAPIV3, SchemaObject, contentType } from '@kubb/oas'\nimport type { Schema, SchemaKeywordMapper } from './SchemaMapper.ts'\nimport type { OperationSchema, Override, Refs } from './types.ts'\n\nexport type GetSchemaGeneratorOptions<T extends SchemaGenerator<any, any, any>> = T extends SchemaGenerator<infer Options, any, any> ? Options : never\n\nexport type SchemaMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n oas: Oas\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n include?: Array<'schemas' | 'responses' | 'requestBodies'>\n override: Array<Override<TOptions>> | undefined\n contentType?: contentType\n output?: string\n}\n\nexport type SchemaGeneratorOptions = {\n dateType: false | 'string' | 'stringOffset' | 'stringLocal' | 'date'\n unknownType: 'any' | 'unknown'\n enumType?: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n enumSuffix?: string\n usedEnumNames?: Record<string, number>\n mapper?: Record<string, string>\n typed?: boolean\n transformers: {\n /**\n * Customize the names based on the type that is provided by the plugin.\n */\n name?: (name: ResolveNameParams['name'], type?: ResolveNameParams['type']) => string\n /**\n * Receive schema and name(propertName) and return FakerMeta array\n * TODO TODO add docs\n * @beta\n */\n schema?: (schemaProps: SchemaProps, defaultSchemas: Schema[]) => Schema[] | undefined\n }\n}\n\nexport type SchemaGeneratorBuildOptions = Omit<OperationSchema, 'name' | 'schema'>\n\ntype SchemaProps = {\n schema?: SchemaObject\n name?: string\n parentName?: string\n}\n\nexport abstract class SchemaGenerator<\n TOptions extends SchemaGeneratorOptions = SchemaGeneratorOptions,\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends Generator<TOptions, Context<TOptions, TPluginOptions>> {\n // Collect the types of all referenced schemas, so we can export them later\n refs: Refs = {}\n\n // Keep track of already used type aliases\n #usedAliasNames: Record<string, number> = {}\n\n /**\n * Creates a type node from a given schema.\n * Delegates to getBaseTypeFromSchema internally and\n * optionally adds a union with null.\n */\n parse(props: SchemaProps): Schema[] {\n const options = this.#getOptions(props)\n\n const defaultSchemas = this.#parseSchemaObject(props)\n const schemas = options.transformers?.schema?.(props, defaultSchemas) || defaultSchemas || []\n\n return uniqueWith(schemas, isDeepEqual)\n }\n\n deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][] {\n return SchemaGenerator.deepSearch<T>(tree, keyword)\n }\n\n find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n return SchemaGenerator.find<T>(tree, keyword)\n }\n\n static deepSearch<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T][] {\n const foundItems: SchemaKeywordMapper[T][] = []\n\n tree?.forEach((schema) => {\n if (schema.keyword === keyword) {\n foundItems.push(schema as SchemaKeywordMapper[T])\n }\n\n if (schema.keyword === schemaKeywords.object) {\n const subItem = schema as SchemaKeywordMapper['object']\n\n Object.values(subItem.args?.properties || {}).forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>(entrySchema, keyword))\n })\n\n Object.values(subItem.args?.additionalProperties || {}).forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.array) {\n const subItem = schema as SchemaKeywordMapper['array']\n\n subItem.args.items.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.and) {\n const subItem = schema as SchemaKeywordMapper['and']\n\n subItem.args.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.tuple) {\n const subItem = schema as SchemaKeywordMapper['tuple']\n\n subItem.args.items.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n\n if (schema.keyword === schemaKeywords.union) {\n const subItem = schema as SchemaKeywordMapper['union']\n\n subItem.args.forEach((entrySchema) => {\n foundItems.push(...SchemaGenerator.deepSearch<T>([entrySchema], keyword))\n })\n }\n })\n\n return foundItems\n }\n\n static findInObject<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n let foundItem: SchemaKeywordMapper[T] | undefined = undefined\n\n tree?.forEach((schema) => {\n if (!foundItem && schema.keyword === keyword) {\n foundItem = schema as SchemaKeywordMapper[T]\n }\n\n if (schema.keyword === schemaKeywords.object) {\n const subItem = schema as SchemaKeywordMapper['object']\n\n Object.values(subItem.args?.properties || {}).forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>(entrySchema, keyword)\n }\n })\n\n Object.values(subItem.args?.additionalProperties || {}).forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n })\n\n return foundItem\n }\n\n static find<T extends keyof SchemaKeywordMapper>(tree: Schema[] | undefined, keyword: T): SchemaKeywordMapper[T] | undefined {\n let foundItem: SchemaKeywordMapper[T] | undefined = undefined\n\n tree?.forEach((schema) => {\n if (!foundItem && schema.keyword === keyword) {\n foundItem = schema as SchemaKeywordMapper[T]\n }\n\n if (schema.keyword === schemaKeywords.array) {\n const subItem = schema as SchemaKeywordMapper['array']\n\n subItem.args.items.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.and) {\n const subItem = schema as SchemaKeywordMapper['and']\n\n subItem.args.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.tuple) {\n const subItem = schema as SchemaKeywordMapper['tuple']\n\n subItem.args.items.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n\n if (schema.keyword === schemaKeywords.union) {\n const subItem = schema as SchemaKeywordMapper['union']\n\n subItem.args.forEach((entrySchema) => {\n if (!foundItem) {\n foundItem = SchemaGenerator.find<T>([entrySchema], keyword)\n }\n })\n }\n })\n\n return foundItem\n }\n\n #getUsedEnumNames(props: SchemaProps) {\n const options = this.#getOptions(props)\n\n return options.usedEnumNames || {}\n }\n\n #getOptions({ name }: SchemaProps): Partial<TOptions> {\n const { override = [] } = this.context\n\n return {\n ...this.options,\n ...(override.find(({ pattern, type }) => {\n if (name && type === 'schemaName') {\n return !!name.match(pattern)\n }\n\n return false\n })?.options || {}),\n }\n }\n\n #getUnknownReturn(props: SchemaProps) {\n const options = this.#getOptions(props)\n\n if (options.unknownType === 'any') {\n return schemaKeywords.any\n }\n\n return schemaKeywords.unknown\n }\n\n /**\n * Recursively creates a type literal with the given props.\n */\n #parseProperties({ schema, name }: SchemaProps): Schema[] {\n const properties = schema?.properties || {}\n const additionalProperties = schema?.additionalProperties\n const required = schema?.required\n\n const propertiesSchemas = Object.keys(properties)\n .map((propertyName) => {\n const validationFunctions: Schema[] = []\n const propertySchema = properties[propertyName] as SchemaObject\n\n const isRequired = Array.isArray(required) ? required?.includes(propertyName) : !!required\n const nullable = propertySchema.nullable ?? propertySchema['x-nullable'] ?? false\n\n validationFunctions.push(...this.parse({ schema: propertySchema, name: propertyName, parentName: name }))\n\n validationFunctions.push({\n keyword: schemaKeywords.name,\n args: propertyName,\n })\n\n if (!isRequired && nullable) {\n validationFunctions.push({ keyword: schemaKeywords.nullish })\n } else if (!isRequired) {\n validationFunctions.push({ keyword: schemaKeywords.optional })\n }\n\n return {\n [propertyName]: validationFunctions,\n }\n })\n .reduce((acc, curr) => ({ ...acc, ...curr }), {})\n let additionalPropertiesSchemas: Schema[] = []\n\n if (additionalProperties) {\n additionalPropertiesSchemas =\n additionalProperties === true\n ? [{ keyword: this.#getUnknownReturn({ schema, name }) }]\n : this.parse({ schema: additionalProperties as SchemaObject, parentName: name })\n }\n\n return [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: propertiesSchemas,\n additionalProperties: additionalPropertiesSchemas,\n },\n },\n ]\n }\n\n /**\n * Create a type alias for the schema referenced by the given ReferenceObject\n */\n #getRefAlias(obj: OpenAPIV3.ReferenceObject): Schema[] {\n const { $ref } = obj\n let ref = this.refs[$ref]\n\n const originalName = getUniqueName($ref.replace(/.+\\//, ''), this.#usedAliasNames)\n const propertyName = this.context.pluginManager.resolveName({\n name: originalName,\n pluginKey: this.context.plugin.key,\n type: 'function',\n })\n\n if (ref) {\n return [\n {\n keyword: schemaKeywords.ref,\n args: { name: ref.propertyName, path: ref.path },\n },\n ]\n }\n\n const fileName = this.context.pluginManager.resolveName({\n name: originalName,\n pluginKey: this.context.plugin.key,\n type: 'file',\n })\n const file = this.context.pluginManager.getFile({\n name: fileName,\n pluginKey: this.context.plugin.key,\n extName: '.ts',\n })\n\n ref = this.refs[$ref] = {\n propertyName,\n originalName,\n path: file.path,\n }\n\n return [\n {\n keyword: schemaKeywords.ref,\n args: { name: ref.propertyName, path: ref?.path, isTypeOnly: false },\n },\n ]\n }\n\n #getParsedSchemaObject(schema?: SchemaObject) {\n const parsedSchema = getSchemaFactory(this.context.oas)(schema)\n return parsedSchema\n }\n\n /**\n * This is the very core of the OpenAPI to TS conversion - it takes a\n * schema and returns the appropriate type.\n */\n #parseSchemaObject({ schema: _schema, name, parentName }: SchemaProps): Schema[] {\n const options = this.#getOptions({ schema: _schema, name })\n const unknownReturn = this.#getUnknownReturn({ schema: _schema, name })\n const { schema, version } = this.#getParsedSchemaObject(_schema)\n const resolvedName = this.context.pluginManager.resolveName({\n name: `${parentName || ''} ${name}`,\n pluginKey: this.context.plugin.key,\n type: 'type',\n })\n\n if (!schema) {\n return [{ keyword: unknownReturn }]\n }\n\n const baseItems: Schema[] = [\n {\n keyword: schemaKeywords.schema,\n args: {\n type: schema.type as any,\n format: schema.format,\n },\n },\n ]\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n const nullable = schema.nullable ?? schema['x-nullable'] ?? false\n\n if (schema.default !== undefined && !Array.isArray(schema.default)) {\n if (typeof schema.default === 'string') {\n baseItems.push({\n keyword: schemaKeywords.default,\n args: transformers.stringify(schema.default),\n })\n }\n if (typeof schema.default === 'boolean') {\n baseItems.push({\n keyword: schemaKeywords.default,\n args: schema.default ?? false,\n })\n }\n }\n\n if (schema.description) {\n baseItems.push({\n keyword: schemaKeywords.describe,\n args: schema.description,\n })\n }\n\n if (schema.pattern) {\n baseItems.unshift({\n keyword: schemaKeywords.matches,\n args: schema.pattern,\n })\n }\n\n if (max !== undefined) {\n baseItems.unshift({ keyword: schemaKeywords.max, args: max })\n }\n\n if (min !== undefined) {\n baseItems.unshift({ keyword: schemaKeywords.min, args: min })\n }\n\n if (nullable) {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n\n if (schema.type && Array.isArray(schema.type)) {\n const [_schema, nullable] = schema.type\n\n if (nullable === 'null') {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n }\n\n if (schema.readOnly) {\n baseItems.push({ keyword: schemaKeywords.readOnly })\n }\n\n if (isReference(schema)) {\n return [\n ...this.#getRefAlias(schema),\n nullable && { keyword: schemaKeywords.nullable },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: schema.type as any,\n format: schema.format,\n },\n },\n ].filter(Boolean)\n }\n\n if (schema.oneOf) {\n // union\n const schemaWithoutOneOf = { ...schema, oneOf: undefined }\n\n const union: Schema = {\n keyword: schemaKeywords.union,\n args: schema.oneOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n }),\n }\n if (schemaWithoutOneOf.properties) {\n return [...this.parse({ schema: schemaWithoutOneOf, name, parentName }), union, ...baseItems]\n }\n\n return [union, ...baseItems]\n }\n\n if (schema.anyOf) {\n // union\n const schemaWithoutAnyOf = { ...schema, anyOf: undefined }\n\n const union: Schema = {\n keyword: schemaKeywords.union,\n args: schema.anyOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n })\n .map((item) => {\n if (isKeyword(item, schemaKeywords.object)) {\n return {\n ...item,\n args: {\n ...item.args,\n strict: true,\n },\n }\n }\n return item\n }),\n }\n if (schemaWithoutAnyOf.properties) {\n return [...this.parse({ schema: schemaWithoutAnyOf, name, parentName }), union, ...baseItems]\n }\n\n return [union, ...baseItems]\n }\n if (schema.allOf) {\n // intersection/add\n const schemaWithoutAllOf = { ...schema, allOf: undefined }\n\n const and: Schema = {\n keyword: schemaKeywords.and,\n args: schema.allOf\n .map((item) => {\n return item && this.parse({ schema: item as SchemaObject, name, parentName })[0]\n })\n .filter(Boolean)\n .filter((item) => {\n return item && item.keyword !== unknownReturn\n }),\n }\n\n if (schemaWithoutAllOf.properties) {\n return [\n {\n ...and,\n args: [...(and.args || []), ...this.parse({ schema: schemaWithoutAllOf, name, parentName })],\n },\n ...baseItems,\n ]\n }\n\n return [and, ...baseItems]\n }\n\n if (schema.enum) {\n const enumName = getUniqueName(pascalCase([parentName, name, options.enumSuffix].join(' ')), this.#getUsedEnumNames({ schema, name }))\n const typeName = this.context.pluginManager.resolveName({\n name: enumName,\n pluginKey: this.context.plugin.key,\n type: 'type',\n })\n\n const nullableEnum = schema.enum.includes(null)\n if (nullableEnum) {\n baseItems.push({ keyword: schemaKeywords.nullable })\n }\n const filteredValues = schema.enum.filter((value) => value !== null)\n\n // x-enumNames has priority\n const extensionEnums = ['x-enumNames', 'x-enum-varnames']\n .filter((extensionKey) => extensionKey in schema)\n .map((extensionKey) => {\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name,\n typeName,\n asConst: false,\n items: [...new Set(schema[extensionKey as keyof typeof schema] as string[])].map((name: string | number, index) => ({\n name: transformers.stringify(name),\n value: schema.enum?.[index] as string | number,\n format: isNumber(schema.enum?.[index]) ? 'number' : 'string',\n })),\n },\n },\n ...baseItems.filter(\n (item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches,\n ),\n ]\n })\n\n if (schema.type === 'number' || schema.type === 'integer') {\n // we cannot use z.enum when enum type is number/integer\n const enumNames = extensionEnums[0]?.find((item) => isKeyword(item, schemaKeywords.enum)) as unknown as SchemaKeywordMapper['enum']\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: enumName,\n typeName,\n asConst: true,\n items: enumNames?.args?.items\n ? [...new Set(enumNames.args.items)].map(({ name, value }) => ({\n name,\n value,\n format: 'number',\n }))\n : [...new Set(filteredValues)].map((value: string) => {\n return {\n name: value,\n value,\n format: 'number',\n }\n }),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches),\n ]\n }\n\n if (extensionEnums.length > 0 && extensionEnums[0]) {\n return extensionEnums[0]\n }\n\n return [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: enumName,\n typeName,\n asConst: false,\n items: [...new Set(filteredValues)].map((value: string) => ({\n name: transformers.stringify(value),\n value,\n format: isNumber(value) ? 'number' : 'string',\n })),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max && item.keyword !== schemaKeywords.matches),\n ]\n }\n\n if ('prefixItems' in schema) {\n const prefixItems = schema.prefixItems as SchemaObject[]\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n\n return [\n {\n keyword: schemaKeywords.tuple,\n args: {\n min,\n max,\n items: prefixItems\n .map((item) => {\n return this.parse({ schema: item, name, parentName })[0]\n })\n .filter(Boolean),\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max),\n ]\n }\n\n if (version === '3.1' && 'const' in schema) {\n // const keyword takes precendence over the actual type.\n if (schema['const']) {\n return [\n {\n keyword: schemaKeywords.const,\n args: {\n name: schema['const'],\n format: typeof schema['const'] === 'number' ? 'number' : 'string',\n value: schema['const'],\n },\n },\n ...baseItems,\n ]\n }\n return [{ keyword: schemaKeywords.null }]\n }\n\n /**\n * > Structural validation alone may be insufficient to allow an application to correctly utilize certain values. The \"format\"\n * > annotation keyword is defined to allow schema authors to convey semantic information for a fixed subset of values which are\n * > accurately described by authoritative resources, be they RFCs or other external specifications.\n *\n * In other words: format is more specific than type alone, hence it should override the type value, if possible.\n *\n * see also https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.7\n */\n if (schema.format) {\n switch (schema.format) {\n case 'binary':\n baseItems.push({ keyword: schemaKeywords.blob })\n return baseItems\n case 'date-time':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'date' } })\n\n return baseItems\n }\n\n if (options.dateType === 'stringOffset') {\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { offset: true } })\n return baseItems\n }\n\n if (options.dateType === 'stringLocal') {\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { local: true } })\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.datetime, args: { offset: false } })\n\n return baseItems\n }\n break\n case 'date':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'date' } })\n\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.date, args: { type: 'string' } })\n\n return baseItems\n }\n break\n case 'time':\n if (options.dateType) {\n if (options.dateType === 'date') {\n baseItems.unshift({ keyword: schemaKeywords.time, args: { type: 'date' } })\n\n return baseItems\n }\n\n baseItems.unshift({ keyword: schemaKeywords.time, args: { type: 'string' } })\n\n return baseItems\n }\n break\n case 'uuid':\n baseItems.unshift({ keyword: schemaKeywords.uuid })\n break\n case 'email':\n case 'idn-email':\n baseItems.unshift({ keyword: schemaKeywords.email })\n break\n case 'uri':\n case 'ipv4':\n case 'ipv6':\n case 'uri-reference':\n case 'hostname':\n case 'idn-hostname':\n baseItems.unshift({ keyword: schemaKeywords.url })\n break\n // case 'duration':\n // case 'json-pointer':\n // case 'relative-json-pointer':\n default:\n // formats not yet implemented: ignore.\n break\n }\n }\n\n // type based logic\n if ('items' in schema || schema.type === ('array' as 'string')) {\n const min = schema.minimum ?? schema.minLength ?? schema.minItems ?? undefined\n const max = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? undefined\n const items = this.parse({ schema: 'items' in schema ? (schema.items as SchemaObject) : [], name, parentName })\n\n return [\n {\n keyword: schemaKeywords.array,\n args: {\n items,\n min,\n max,\n },\n },\n ...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max),\n ]\n }\n\n if (schema.properties || schema.additionalProperties) {\n return [...this.#parseProperties({ schema, name }), ...baseItems]\n }\n\n if (schema.type) {\n if (Array.isArray(schema.type)) {\n // OPENAPI v3.1.0: https://www.openapis.org/blog/2021/02/16/migrating-from-openapi-3-0-to-3-1-0\n const [type] = schema.type as Array<OpenAPIV3.NonArraySchemaObjectType>\n\n return [\n ...this.parse({\n schema: {\n ...schema,\n type,\n },\n name,\n parentName,\n }),\n ...baseItems,\n ].filter(Boolean)\n }\n\n if (!['boolean', 'object', 'number', 'string', 'integer'].includes(schema.type)) {\n this.context.pluginManager.logger.emit('warning', `Schema type '${schema.type}' is not valid for schema ${parentName}.${name}`)\n }\n\n // 'string' | 'number' | 'integer' | 'boolean'\n return [{ keyword: schema.type }, ...baseItems]\n }\n\n return [{ keyword: unknownReturn }]\n }\n\n async build(): Promise<Array<KubbFile.File<TFileMeta>>> {\n const { oas, contentType, include } = this.context\n\n const schemas = getSchemas({ oas, contentType, includes: include })\n\n const promises = Object.entries(schemas).reduce((acc, [name, schema]) => {\n const options = this.#getOptions({ name })\n const promiseOperation = this.schema.call(this, name, schema, {\n ...this.options,\n ...options,\n })\n\n if (promiseOperation) {\n acc.push(promiseOperation)\n }\n\n return acc\n }, [] as SchemaMethodResult<TFileMeta>[])\n\n const files = await Promise.all(promises)\n\n // using .flat because schemaGenerator[method] can return a array of files or just one file\n return files.flat().filter(Boolean)\n }\n\n /**\n * Schema\n */\n abstract schema(name: string, object: SchemaObject, options: TOptions): SchemaMethodResult<TFileMeta>\n}\n"]}
@@ -1,18 +1,18 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
3
 
4
- var _chunkK4GEQ3C2cjs = require('./chunk-K4GEQ3C2.cjs');
4
+ var _chunkCJXRFYEFcjs = require('./chunk-CJXRFYEF.cjs');
5
5
 
6
6
 
7
7
 
8
8
 
9
- var _chunkJ7IF3KA3cjs = require('./chunk-J7IF3KA3.cjs');
9
+ var _chunkP42X362Ucjs = require('./chunk-P42X362U.cjs');
10
10
 
11
11
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
12
- var require_react_production_min = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
12
+ var require_react_production_min = _chunkP42X362Ucjs.__commonJS.call(void 0, {
13
13
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js"(exports) {
14
14
  "use strict";
15
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
15
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
16
16
  var l = Symbol.for("react.element");
17
17
  var n = Symbol.for("react.portal");
18
18
  var p = Symbol.for("react.fragment");
@@ -283,10 +283,10 @@ var require_react_production_min = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
283
283
  });
284
284
 
285
285
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js
286
- var require_react_development = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
286
+ var require_react_development = _chunkP42X362Ucjs.__commonJS.call(void 0, {
287
287
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js"(exports, module) {
288
288
  "use strict";
289
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
289
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
290
290
  if (process.env.NODE_ENV !== "production") {
291
291
  (function() {
292
292
  "use strict";
@@ -2158,10 +2158,10 @@ var require_react_development = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
2158
2158
  });
2159
2159
 
2160
2160
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js
2161
- var require_react = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
2161
+ var require_react = _chunkP42X362Ucjs.__commonJS.call(void 0, {
2162
2162
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js"(exports, module) {
2163
2163
  "use strict";
2164
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
2164
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
2165
2165
  if (process.env.NODE_ENV === "production") {
2166
2166
  module.exports = require_react_production_min();
2167
2167
  } else {
@@ -2171,10 +2171,10 @@ var require_react = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
2171
2171
  });
2172
2172
 
2173
2173
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js
2174
- var require_react_jsx_runtime_production_min = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
2174
+ var require_react_jsx_runtime_production_min = _chunkP42X362Ucjs.__commonJS.call(void 0, {
2175
2175
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js"(exports) {
2176
2176
  "use strict";
2177
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
2177
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
2178
2178
  var f = require_react();
2179
2179
  var k = Symbol.for("react.element");
2180
2180
  var l = Symbol.for("react.fragment");
@@ -2197,10 +2197,10 @@ var require_react_jsx_runtime_production_min = _chunkJ7IF3KA3cjs.__commonJS.call
2197
2197
  });
2198
2198
 
2199
2199
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js
2200
- var require_react_jsx_runtime_development = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
2200
+ var require_react_jsx_runtime_development = _chunkP42X362Ucjs.__commonJS.call(void 0, {
2201
2201
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js"(exports) {
2202
2202
  "use strict";
2203
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
2203
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
2204
2204
  if (process.env.NODE_ENV !== "production") {
2205
2205
  (function() {
2206
2206
  "use strict";
@@ -3091,10 +3091,10 @@ var require_react_jsx_runtime_development = _chunkJ7IF3KA3cjs.__commonJS.call(vo
3091
3091
  });
3092
3092
 
3093
3093
  // ../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js
3094
- var require_jsx_runtime = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
3094
+ var require_jsx_runtime = _chunkP42X362Ucjs.__commonJS.call(void 0, {
3095
3095
  "../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js"(exports, module) {
3096
3096
  "use strict";
3097
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
3097
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
3098
3098
  if (process.env.NODE_ENV === "production") {
3099
3099
  module.exports = require_react_jsx_runtime_production_min();
3100
3100
  } else {
@@ -3104,8 +3104,8 @@ var require_jsx_runtime = _chunkJ7IF3KA3cjs.__commonJS.call(void 0, {
3104
3104
  });
3105
3105
 
3106
3106
  // src/components/Operation.tsx
3107
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
3108
- var import_jsx_runtime = _chunkJ7IF3KA3cjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3107
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
3108
+ var import_jsx_runtime = _chunkP42X362Ucjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3109
3109
  var _react = require('@kubb/react');
3110
3110
  var OperationContext = _react.createContext.call(void 0, {});
3111
3111
  function Operation({ operation, children }) {
@@ -3114,13 +3114,13 @@ function Operation({ operation, children }) {
3114
3114
  Operation.Context = OperationContext;
3115
3115
 
3116
3116
  // src/hooks/useSchema.ts
3117
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
3117
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
3118
3118
 
3119
3119
 
3120
3120
  // src/components/Schema.tsx
3121
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
3121
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
3122
3122
 
3123
- var import_jsx_runtime2 = _chunkJ7IF3KA3cjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3123
+ var import_jsx_runtime2 = _chunkP42X362Ucjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3124
3124
  var SchemaContext = _react.createContext.call(void 0, {
3125
3125
  name: "unknown",
3126
3126
  tree: []
@@ -3182,7 +3182,7 @@ Schema.File = function({ output, isTypeOnly, children }) {
3182
3182
  Schema.Imports = ({ isTypeOnly, extName }) => {
3183
3183
  const { tree } = useSchema();
3184
3184
  const { path: root } = _react.useFile.call(void 0, );
3185
- const refs = _chunkK4GEQ3C2cjs.SchemaGenerator.deepSearch(tree, _chunkK4GEQ3C2cjs.schemaKeywords.ref);
3185
+ const refs = _chunkCJXRFYEFcjs.SchemaGenerator.deepSearch(tree, _chunkCJXRFYEFcjs.schemaKeywords.ref);
3186
3186
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: _optionalChain([refs, 'optionalAccess', _ => _.map, 'call', _2 => _2((item, i) => {
3187
3187
  if (!item.args.path) {
3188
3188
  return void 0;
@@ -3199,9 +3199,9 @@ function useSchema() {
3199
3199
  }
3200
3200
 
3201
3201
  // src/components/Oas.tsx
3202
- _chunkJ7IF3KA3cjs.init_cjs_shims.call(void 0, );
3202
+ _chunkP42X362Ucjs.init_cjs_shims.call(void 0, );
3203
3203
 
3204
- var import_jsx_runtime3 = _chunkJ7IF3KA3cjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3204
+ var import_jsx_runtime3 = _chunkP42X362Ucjs.__toESM.call(void 0, require_jsx_runtime(), 1);
3205
3205
  var OasContext = _react.createContext.call(void 0, {});
3206
3206
  function Oas({ oas, children, operations, generator }) {
3207
3207
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OasContext.Provider, { value: { oas, generator, operations }, children });
@@ -3262,4 +3262,4 @@ react/cjs/react-jsx-runtime.development.js:
3262
3262
  * LICENSE file in the root directory of this source tree.
3263
3263
  *)
3264
3264
  */
3265
- //# sourceMappingURL=chunk-UKUEVTRB.cjs.map
3265
+ //# sourceMappingURL=chunk-DRLYORTT.cjs.map