@kubb/plugin-oas 2.19.1 → 2.19.3
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/{Schema-ByMOp8RL.d.ts → Schema-D41ItX9C.d.ts} +1 -1
- package/dist/{Schema-C9Wxng-Q.d.cts → Schema-FGI5VPqc.d.cts} +1 -1
- package/dist/{SchemaMapper-DRlWYDvv.d.cts → SchemaMapper-CsBQ6eEx.d.cts} +5 -1
- package/dist/{SchemaMapper-DRlWYDvv.d.ts → SchemaMapper-CsBQ6eEx.d.ts} +5 -1
- package/dist/{chunk-BQKBWVDS.js → chunk-3NSBUDVM.js} +14 -8
- package/dist/chunk-3NSBUDVM.js.map +1 -0
- package/dist/{chunk-NY2RUVI5.js → chunk-CBVKDLCJ.js} +3 -3
- package/dist/{chunk-L6JC24QP.js → chunk-FDLHRTTS.js} +2 -2
- package/dist/{chunk-Y2SDFI4S.cjs → chunk-I5KLDP43.cjs} +23 -23
- package/dist/{chunk-2ET4YKQY.js → chunk-SXUTBEJ7.js} +3 -3
- package/dist/{chunk-2ET4YKQY.js.map → chunk-SXUTBEJ7.js.map} +1 -1
- package/dist/{chunk-KZAW64ZQ.cjs → chunk-USWJ3LIC.cjs} +39 -33
- package/dist/chunk-USWJ3LIC.cjs.map +1 -0
- package/dist/{chunk-ILFKN72Y.cjs → chunk-WEZ6CODU.cjs} +3 -3
- package/dist/{chunk-W34TDAOS.cjs → chunk-YS56QITS.cjs} +3 -3
- package/dist/{chunk-W34TDAOS.cjs.map → chunk-YS56QITS.cjs.map} +1 -1
- package/dist/components.cjs +5 -5
- package/dist/components.d.cts +2 -2
- package/dist/components.d.ts +2 -2
- package/dist/components.js +3 -3
- package/dist/hooks.cjs +13 -13
- package/dist/hooks.d.cts +2 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +3 -3
- package/dist/index.cjs +23 -23
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +3 -3
- package/dist/utils.cjs +8 -8
- package/dist/utils.js +2 -2
- package/package.json +10 -10
- package/src/SchemaGenerator.ts +14 -8
- package/src/SchemaMapper.ts +1 -1
- package/dist/chunk-BQKBWVDS.js.map +0 -1
- package/dist/chunk-KZAW64ZQ.cjs.map +0 -1
- /package/dist/{chunk-NY2RUVI5.js.map → chunk-CBVKDLCJ.js.map} +0 -0
- /package/dist/{chunk-L6JC24QP.js.map → chunk-FDLHRTTS.js.map} +0 -0
- /package/dist/{chunk-Y2SDFI4S.cjs.map → chunk-I5KLDP43.cjs.map} +0 -0
- /package/dist/{chunk-ILFKN72Y.cjs.map → chunk-WEZ6CODU.cjs.map} +0 -0
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { SchemaObject } from '@kubb/oas';
|
|
4
4
|
import { KubbNode } from '@kubb/react';
|
|
5
|
-
import { S as Schema$1 } from './SchemaMapper-
|
|
5
|
+
import { S as Schema$1 } from './SchemaMapper-CsBQ6eEx.js';
|
|
6
6
|
|
|
7
7
|
type SchemaContextProps = {
|
|
8
8
|
name: string;
|
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { SchemaObject } from '@kubb/oas';
|
|
4
4
|
import { KubbNode } from '@kubb/react';
|
|
5
|
-
import { S as Schema$1 } from './SchemaMapper-
|
|
5
|
+
import { S as Schema$1 } from './SchemaMapper-CsBQ6eEx.cjs';
|
|
6
6
|
|
|
7
7
|
type SchemaContextProps = {
|
|
8
8
|
name: string;
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getSchemaFactory,
|
|
6
6
|
getSchemas,
|
|
7
7
|
init_esm_shims
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SXUTBEJ7.js";
|
|
9
9
|
|
|
10
10
|
// src/SchemaMapper.ts
|
|
11
11
|
init_esm_shims();
|
|
@@ -138,7 +138,7 @@ var _SchemaGenerator = class _SchemaGenerator extends Generator {
|
|
|
138
138
|
}
|
|
139
139
|
if (schema.keyword === schemaKeywords.tuple) {
|
|
140
140
|
const subItem = schema;
|
|
141
|
-
subItem.args.forEach((entrySchema) => {
|
|
141
|
+
subItem.args.items.forEach((entrySchema) => {
|
|
142
142
|
foundItems.push(..._SchemaGenerator.deepSearch([entrySchema], keyword));
|
|
143
143
|
});
|
|
144
144
|
}
|
|
@@ -197,7 +197,7 @@ var _SchemaGenerator = class _SchemaGenerator extends Generator {
|
|
|
197
197
|
}
|
|
198
198
|
if (schema.keyword === schemaKeywords.tuple) {
|
|
199
199
|
const subItem = schema;
|
|
200
|
-
subItem.args.forEach((entrySchema) => {
|
|
200
|
+
subItem.args.items.forEach((entrySchema) => {
|
|
201
201
|
if (!foundItem) {
|
|
202
202
|
foundItem = _SchemaGenerator.find([entrySchema], keyword);
|
|
203
203
|
}
|
|
@@ -560,14 +560,20 @@ parseSchemaObject_fn = function({ schema: _schema, name, parentName }) {
|
|
|
560
560
|
}
|
|
561
561
|
if ("prefixItems" in schema) {
|
|
562
562
|
const prefixItems = schema.prefixItems;
|
|
563
|
+
const min2 = schema.minimum ?? schema.minLength ?? schema.minItems ?? void 0;
|
|
564
|
+
const max2 = schema.maximum ?? schema.maxLength ?? schema.maxItems ?? void 0;
|
|
563
565
|
return [
|
|
564
566
|
{
|
|
565
567
|
keyword: schemaKeywords.tuple,
|
|
566
|
-
args:
|
|
567
|
-
|
|
568
|
-
|
|
568
|
+
args: {
|
|
569
|
+
min: min2,
|
|
570
|
+
max: max2,
|
|
571
|
+
items: prefixItems.map((item) => {
|
|
572
|
+
return this.parse({ schema: item, name, parentName })[0];
|
|
573
|
+
}).filter(Boolean)
|
|
574
|
+
}
|
|
569
575
|
},
|
|
570
|
-
...baseItems
|
|
576
|
+
...baseItems.filter((item) => item.keyword !== schemaKeywords.min && item.keyword !== schemaKeywords.max)
|
|
571
577
|
];
|
|
572
578
|
}
|
|
573
579
|
if (version === "3.1" && "const" in schema) {
|
|
@@ -693,4 +699,4 @@ export {
|
|
|
693
699
|
isKeyword,
|
|
694
700
|
SchemaGenerator
|
|
695
701
|
};
|
|
696
|
-
//# sourceMappingURL=chunk-
|
|
702
|
+
//# sourceMappingURL=chunk-3NSBUDVM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/SchemaMapper.ts","../src/SchemaGenerator.ts"],"sourcesContent":["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<Schema>(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 // 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 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(schema.enum)].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(schema.enum)].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 // '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"],"mappings":"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","names":["_schema","nullable","name","min","max"]}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SchemaGenerator,
|
|
3
3
|
schemaKeywords
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3NSBUDVM.js";
|
|
5
5
|
import {
|
|
6
6
|
__commonJS,
|
|
7
7
|
__toESM,
|
|
8
8
|
init_esm_shims
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-SXUTBEJ7.js";
|
|
10
10
|
|
|
11
11
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
|
|
12
12
|
var require_react_production_min = __commonJS({
|
|
@@ -3291,4 +3291,4 @@ react/cjs/react-jsx-runtime.development.js:
|
|
|
3291
3291
|
* LICENSE file in the root directory of this source tree.
|
|
3292
3292
|
*)
|
|
3293
3293
|
*/
|
|
3294
|
-
//# sourceMappingURL=chunk-
|
|
3294
|
+
//# sourceMappingURL=chunk-CBVKDLCJ.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_esm_shims
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-SXUTBEJ7.js";
|
|
4
4
|
|
|
5
5
|
// src/utils/parseFromConfig.ts
|
|
6
6
|
init_esm_shims();
|
|
@@ -31,4 +31,4 @@ function parseFromConfig(config, options = {}) {
|
|
|
31
31
|
export {
|
|
32
32
|
parseFromConfig
|
|
33
33
|
};
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
34
|
+
//# sourceMappingURL=chunk-FDLHRTTS.js.map
|
|
@@ -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
|
|
4
|
+
var _chunkUSWJ3LICcjs = require('./chunk-USWJ3LIC.cjs');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkYS56QITScjs = require('./chunk-YS56QITS.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 =
|
|
12
|
+
var require_react_production_min = _chunkYS56QITScjs.__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
|
-
|
|
15
|
+
_chunkYS56QITScjs.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");
|
|
@@ -309,10 +309,10 @@ var require_react_production_min = _chunkW34TDAOScjs.__commonJS.call(void 0, {
|
|
|
309
309
|
});
|
|
310
310
|
|
|
311
311
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js
|
|
312
|
-
var require_react_development =
|
|
312
|
+
var require_react_development = _chunkYS56QITScjs.__commonJS.call(void 0, {
|
|
313
313
|
"../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.development.js"(exports, module) {
|
|
314
314
|
"use strict";
|
|
315
|
-
|
|
315
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
316
316
|
if (process.env.NODE_ENV !== "production") {
|
|
317
317
|
(function() {
|
|
318
318
|
"use strict";
|
|
@@ -2184,10 +2184,10 @@ var require_react_development = _chunkW34TDAOScjs.__commonJS.call(void 0, {
|
|
|
2184
2184
|
});
|
|
2185
2185
|
|
|
2186
2186
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js
|
|
2187
|
-
var require_react =
|
|
2187
|
+
var require_react = _chunkYS56QITScjs.__commonJS.call(void 0, {
|
|
2188
2188
|
"../../node_modules/.pnpm/react@18.3.1/node_modules/react/index.js"(exports, module) {
|
|
2189
2189
|
"use strict";
|
|
2190
|
-
|
|
2190
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
2191
2191
|
if (process.env.NODE_ENV === "production") {
|
|
2192
2192
|
module.exports = require_react_production_min();
|
|
2193
2193
|
} else {
|
|
@@ -2197,10 +2197,10 @@ var require_react = _chunkW34TDAOScjs.__commonJS.call(void 0, {
|
|
|
2197
2197
|
});
|
|
2198
2198
|
|
|
2199
2199
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js
|
|
2200
|
-
var require_react_jsx_runtime_production_min =
|
|
2200
|
+
var require_react_jsx_runtime_production_min = _chunkYS56QITScjs.__commonJS.call(void 0, {
|
|
2201
2201
|
"../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.production.min.js"(exports) {
|
|
2202
2202
|
"use strict";
|
|
2203
|
-
|
|
2203
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
2204
2204
|
var f = require_react();
|
|
2205
2205
|
var k = Symbol.for("react.element");
|
|
2206
2206
|
var l = Symbol.for("react.fragment");
|
|
@@ -2226,10 +2226,10 @@ var require_react_jsx_runtime_production_min = _chunkW34TDAOScjs.__commonJS.call
|
|
|
2226
2226
|
});
|
|
2227
2227
|
|
|
2228
2228
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js
|
|
2229
|
-
var require_react_jsx_runtime_development =
|
|
2229
|
+
var require_react_jsx_runtime_development = _chunkYS56QITScjs.__commonJS.call(void 0, {
|
|
2230
2230
|
"../../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react-jsx-runtime.development.js"(exports) {
|
|
2231
2231
|
"use strict";
|
|
2232
|
-
|
|
2232
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
2233
2233
|
if (process.env.NODE_ENV !== "production") {
|
|
2234
2234
|
(function() {
|
|
2235
2235
|
"use strict";
|
|
@@ -3120,10 +3120,10 @@ var require_react_jsx_runtime_development = _chunkW34TDAOScjs.__commonJS.call(vo
|
|
|
3120
3120
|
});
|
|
3121
3121
|
|
|
3122
3122
|
// ../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js
|
|
3123
|
-
var require_jsx_runtime =
|
|
3123
|
+
var require_jsx_runtime = _chunkYS56QITScjs.__commonJS.call(void 0, {
|
|
3124
3124
|
"../../node_modules/.pnpm/react@18.3.1/node_modules/react/jsx-runtime.js"(exports, module) {
|
|
3125
3125
|
"use strict";
|
|
3126
|
-
|
|
3126
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
3127
3127
|
if (process.env.NODE_ENV === "production") {
|
|
3128
3128
|
module.exports = require_react_jsx_runtime_production_min();
|
|
3129
3129
|
} else {
|
|
@@ -3133,8 +3133,8 @@ var require_jsx_runtime = _chunkW34TDAOScjs.__commonJS.call(void 0, {
|
|
|
3133
3133
|
});
|
|
3134
3134
|
|
|
3135
3135
|
// src/components/Operation.tsx
|
|
3136
|
-
|
|
3137
|
-
var import_jsx_runtime =
|
|
3136
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
3137
|
+
var import_jsx_runtime = _chunkYS56QITScjs.__toESM.call(void 0, require_jsx_runtime(), 1);
|
|
3138
3138
|
var _react = require('@kubb/react');
|
|
3139
3139
|
var OperationContext = _react.createContext.call(void 0, {});
|
|
3140
3140
|
function Operation({ operation, children }) {
|
|
@@ -3143,13 +3143,13 @@ function Operation({ operation, children }) {
|
|
|
3143
3143
|
Operation.Context = OperationContext;
|
|
3144
3144
|
|
|
3145
3145
|
// src/hooks/useSchema.ts
|
|
3146
|
-
|
|
3146
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
3147
3147
|
|
|
3148
3148
|
|
|
3149
3149
|
// src/components/Schema.tsx
|
|
3150
|
-
|
|
3150
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
3151
3151
|
|
|
3152
|
-
var import_jsx_runtime2 =
|
|
3152
|
+
var import_jsx_runtime2 = _chunkYS56QITScjs.__toESM.call(void 0, require_jsx_runtime(), 1);
|
|
3153
3153
|
var SchemaContext = _react.createContext.call(void 0, {
|
|
3154
3154
|
name: "unknown",
|
|
3155
3155
|
tree: []
|
|
@@ -3211,7 +3211,7 @@ Schema.File = function({ output, isTypeOnly, children }) {
|
|
|
3211
3211
|
Schema.Imports = ({ isTypeOnly }) => {
|
|
3212
3212
|
const { tree } = useSchema();
|
|
3213
3213
|
const { path: root } = _react.useFile.call(void 0, );
|
|
3214
|
-
const refs =
|
|
3214
|
+
const refs = _chunkUSWJ3LICcjs.SchemaGenerator.deepSearch(tree, _chunkUSWJ3LICcjs.schemaKeywords.ref);
|
|
3215
3215
|
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_jsx_runtime2.Fragment, { children: _optionalChain([refs, 'optionalAccess', _ => _.map, 'call', _2 => _2((item, i) => {
|
|
3216
3216
|
if (!item.args.path) {
|
|
3217
3217
|
return void 0;
|
|
@@ -3228,9 +3228,9 @@ function useSchema() {
|
|
|
3228
3228
|
}
|
|
3229
3229
|
|
|
3230
3230
|
// src/components/Oas.tsx
|
|
3231
|
-
|
|
3231
|
+
_chunkYS56QITScjs.init_cjs_shims.call(void 0, );
|
|
3232
3232
|
|
|
3233
|
-
var import_jsx_runtime3 =
|
|
3233
|
+
var import_jsx_runtime3 = _chunkYS56QITScjs.__toESM.call(void 0, require_jsx_runtime(), 1);
|
|
3234
3234
|
var OasContext = _react.createContext.call(void 0, {});
|
|
3235
3235
|
function Oas({ oas, children, operations, generator }) {
|
|
3236
3236
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OasContext.Provider, { value: { oas, generator, operations }, children });
|
|
@@ -3291,4 +3291,4 @@ react/cjs/react-jsx-runtime.development.js:
|
|
|
3291
3291
|
* LICENSE file in the root directory of this source tree.
|
|
3292
3292
|
*)
|
|
3293
3293
|
*/
|
|
3294
|
-
//# sourceMappingURL=chunk-
|
|
3294
|
+
//# sourceMappingURL=chunk-I5KLDP43.cjs.map
|
|
@@ -49,9 +49,9 @@ var __privateMethod = (obj, member, method) => {
|
|
|
49
49
|
return method;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
|
-
// ../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.
|
|
52
|
+
// ../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.46.2_@types+node@20.12.13__postcss@8.4.38_ts-node@10.9._pcjwttywpnsqromjde6xcpwgs4/node_modules/tsup/assets/esm_shims.js
|
|
53
53
|
var init_esm_shims = __esm({
|
|
54
|
-
"../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.
|
|
54
|
+
"../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.46.2_@types+node@20.12.13__postcss@8.4.38_ts-node@10.9._pcjwttywpnsqromjde6xcpwgs4/node_modules/tsup/assets/esm_shims.js"() {
|
|
55
55
|
"use strict";
|
|
56
56
|
}
|
|
57
57
|
});
|
|
@@ -112,4 +112,4 @@ export {
|
|
|
112
112
|
getSchemas,
|
|
113
113
|
getSchemaFactory
|
|
114
114
|
};
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
115
|
+
//# sourceMappingURL=chunk-SXUTBEJ7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/tsup@8.0.2_@microsoft+api-extractor@7.46.2_@types+node@20.12.13__postcss@8.4.38_ts-node@10.9._pcjwttywpnsqromjde6xcpwgs4/node_modules/tsup/assets/esm_shims.js","../src/utils/getSchemas.ts","../src/utils/getSchemaFactory.ts"],"sourcesContent":["// Shim globals in esm bundle\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst getFilename = () => fileURLToPath(import.meta.url)\nconst getDirname = () => path.dirname(getFilename())\n\nexport const __dirname = /* @__PURE__ */ getDirname()\nexport const __filename = /* @__PURE__ */ getFilename()\n","import type { Oas, OasTypes, contentType } from '@kubb/oas'\n\ntype Mode = 'schemas' | 'responses' | 'requestBodies'\n\nexport type GetSchemasProps = {\n oas: Oas\n contentType?: contentType\n includes?: Mode[]\n}\n\nexport function getSchemas({ oas, contentType, includes = ['schemas', 'requestBodies', 'responses'] }: GetSchemasProps): Record<string, OasTypes.SchemaObject> {\n const components = oas.getDefinition().components\n\n let schemas: Record<string, OasTypes.SchemaObject> = {}\n\n if (includes.includes('schemas')) {\n schemas = {\n ...schemas,\n ...((components?.schemas as Record<string, OasTypes.SchemaObject>) || {}),\n }\n }\n\n const requestBodies = components?.requestBodies || {}\n if (includes.includes('responses')) {\n const responses = components?.responses || {}\n\n Object.entries(responses).forEach(([name, response]: [string, OasTypes.ResponseObject]) => {\n if (response.content && !schemas[name]) {\n const firstContentType = Object.keys(response.content)[0] || 'application/json'\n schemas[name] = response.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n if (includes.includes('requestBodies')) {\n Object.entries(requestBodies).forEach(([name, request]: [string, OasTypes.RequestBodyObject]) => {\n if (request.content && !schemas[name]) {\n const firstContentType = Object.keys(request.content)[0] || 'application/json'\n schemas[name] = request.content?.[contentType || firstContentType]?.schema as OasTypes.SchemaObject\n }\n })\n }\n\n return schemas\n}\n","import { isOpenApiV3_1Document } from '@kubb/oas'\n\nimport type { Oas, OpenAPIV3, OpenAPIV3_1, SchemaObject } from '@kubb/oas'\n\n/**\n * Make it possible to narrow down the schema based on a specific version(3 or 3.1)\n */\ntype SchemaResult<TWithRef extends boolean = false> =\n | {\n schema?: (TWithRef extends true ? OpenAPIV3.SchemaObject | OpenAPIV3.ReferenceObject : OpenAPIV3.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.0'\n }\n | {\n schema?: (TWithRef extends true ? OpenAPIV3_1.SchemaObject | OpenAPIV3_1.ReferenceObject : OpenAPIV3_1.SchemaObject) & {\n nullable?: boolean\n 'x-nullable'?: boolean\n }\n version: '3.1'\n }\n\nexport function getSchemaFactory<TWithRef extends boolean = false>(oas: Oas): (schema?: SchemaObject) => SchemaResult<TWithRef> {\n return (schema?: SchemaObject) => {\n const version = isOpenApiV3_1Document(oas.api) ? '3.1' : '3.0'\n\n return {\n schema,\n version,\n } as SchemaResult<TWithRef>\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAUO,SAAS,WAAW,EAAE,KAAK,aAAa,WAAW,CAAC,WAAW,iBAAiB,WAAW,EAAE,GAA2D;AAC7J,QAAM,aAAa,IAAI,cAAc,EAAE;AAEvC,MAAI,UAAiD,CAAC;AAEtD,MAAI,SAAS,SAAS,SAAS,GAAG;AAChC,cAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAK,YAAY,WAAqD,CAAC;AAAA,IACzE;AAAA,EACF;AAEA,QAAM,gBAAgB,YAAY,iBAAiB,CAAC;AACpD,MAAI,SAAS,SAAS,WAAW,GAAG;AAClC,UAAM,YAAY,YAAY,aAAa,CAAC;AAE5C,WAAO,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,MAAyC;AACzF,UAAI,SAAS,WAAW,CAAC,QAAQ,IAAI,GAAG;AACtC,cAAM,mBAAmB,OAAO,KAAK,SAAS,OAAO,EAAE,CAAC,KAAK;AAC7D,gBAAQ,IAAI,IAAI,SAAS,UAAU,eAAe,gBAAgB,GAAG;AAAA,MACvE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,SAAS,SAAS,eAAe,GAAG;AACtC,WAAO,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAA4C;AAC/F,UAAI,QAAQ,WAAW,CAAC,QAAQ,IAAI,GAAG;AACrC,cAAM,mBAAmB,OAAO,KAAK,QAAQ,OAAO,EAAE,CAAC,KAAK;AAC5D,gBAAQ,IAAI,IAAI,QAAQ,UAAU,eAAe,gBAAgB,GAAG;AAAA,MACtE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC5CA;AAAA,SAAS,6BAA6B;AAuB/B,SAAS,iBAAmD,KAA6D;AAC9H,SAAO,CAAC,WAA0B;AAChC,UAAM,UAAU,sBAAsB,IAAI,GAAG,IAAI,QAAQ;AAEzD,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|