@kubb/plugin-oas 4.11.0 → 4.11.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 (35) hide show
  1. package/dist/{SchemaGenerator-BEyE5yFD.cjs → SchemaGenerator-BpPB5lqA.cjs} +12 -3
  2. package/dist/SchemaGenerator-BpPB5lqA.cjs.map +1 -0
  3. package/dist/{SchemaGenerator-Bzj3I5Yv.js → SchemaGenerator-HVn_098D.js} +12 -3
  4. package/dist/SchemaGenerator-HVn_098D.js.map +1 -0
  5. package/dist/{SchemaMapper-BSeOSE-y.d.ts → SchemaMapper-CIK5L5DN.d.ts} +60 -29
  6. package/dist/{SchemaMapper-DOSP3wgJ.d.cts → SchemaMapper-Dfz9lGho.d.cts} +60 -29
  7. package/dist/{createGenerator-ChN9hQ6p.d.cts → createGenerator-5Mu_DEco.d.cts} +4 -2
  8. package/dist/{createGenerator-CD_IVg6x.d.ts → createGenerator-CQWDp6sV.d.ts} +4 -2
  9. package/dist/generators.d.cts +2 -2
  10. package/dist/generators.d.ts +2 -2
  11. package/dist/hooks.cjs +1 -1
  12. package/dist/hooks.d.cts +2 -2
  13. package/dist/hooks.d.ts +2 -2
  14. package/dist/hooks.js +1 -1
  15. package/dist/index.cjs +8 -1
  16. package/dist/index.cjs.map +1 -1
  17. package/dist/index.d.cts +2 -2
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.js +8 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/mocks.cjs +36 -3
  22. package/dist/mocks.cjs.map +1 -1
  23. package/dist/mocks.d.cts +1 -1
  24. package/dist/mocks.d.ts +1 -1
  25. package/dist/mocks.js +36 -3
  26. package/dist/mocks.js.map +1 -1
  27. package/dist/utils.d.cts +2 -2
  28. package/dist/utils.d.ts +2 -2
  29. package/package.json +3 -3
  30. package/src/OperationGenerator.ts +8 -0
  31. package/src/SchemaGenerator.ts +13 -2
  32. package/src/mocks/schemas.ts +53 -3
  33. package/src/plugin.ts +2 -0
  34. package/dist/SchemaGenerator-BEyE5yFD.cjs.map +0 -1
  35. package/dist/SchemaGenerator-Bzj3I5Yv.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["context: HandlerContext<TOutput, TOptions>","SchemaGenerator","schemaKeywords","BaseGenerator","transformers","path","#isExcluded","#isIncluded","pLimit","#getOptions","buildOperation","buildOperations","jsonGenerator","oas: Oas","oas","path","options","groupName: Group['name']","SchemaGenerator","_createGenerator","_createReactGenerator"],"sources":["../src/createParser.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper, SchemaTree } from './SchemaMapper.ts'\nimport { schemaKeywords } from './SchemaMapper.ts'\n\n/**\n * Handler context with parse method available via `this`\n */\nexport type HandlerContext<TOutput, TOptions> = {\n parse: (tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n}\n\n/**\n * Handler function type for custom keyword processing\n * Handlers can access the parse function via `this.parse`\n */\nexport type KeywordHandler<TOutput, TOptions> = (this: HandlerContext<TOutput, TOptions>, tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n\n/**\n * Configuration for createParser\n */\nexport type CreateParserConfig<TOutput, TOptions> = {\n /**\n * The keyword mapper that maps schema keywords to output generators\n */\n mapper: SchemaMapper<TOutput>\n\n /**\n * Custom handlers for specific schema keywords\n * These provide the implementation for complex types that need special processing\n *\n * Use function syntax (not arrow functions) to enable use of `this` keyword:\n * ```typescript\n * handlers: {\n * enum(tree, options, parse) {\n * // Implementation\n * }\n * }\n * ```\n *\n * Common keywords that typically need handlers:\n * - union: Combine multiple schemas into a union\n * - and: Combine multiple schemas into an intersection\n * - array: Handle array types with items\n * - object: Handle object types with properties\n * - enum: Handle enum types\n * - tuple: Handle tuple types\n * - const: Handle literal/const types\n * - ref: Handle references to other schemas\n * - string/number/integer: Handle primitives with constraints (min/max)\n * - matches: Handle regex patterns\n * - default/describe/optional/nullable: Handle modifiers\n */\n handlers: Partial<{\n [K in keyof SchemaKeywordMapper]: KeywordHandler<TOutput, TOptions>\n }>\n}\n\n/**\n * Creates a parser function that converts schema trees to output using the provided mapper and handlers\n *\n * This function provides a framework for building parsers by:\n * 1. Checking for custom handlers for each keyword\n * 2. Falling back to the mapper for simple keywords\n * 3. Providing utilities for common operations (finding siblings, etc.)\n *\n * The generated parser is recursive and can handle nested schemas.\n *\n * @template TOutput - The output type (e.g., string for Zod/Faker, ts.TypeNode for TypeScript)\n * @template TOptions - The parser options type\n * @param config - Configuration object containing mapper and handlers\n * @returns A parse function that converts SchemaTree to TOutput\n *\n * @example\n * ```ts\n * // Create a simple string-based parser\n * const parse = createParser({\n * mapper: zodKeywordMapper,\n * handlers: {\n * union(tree, options) {\n * const items = tree.current.args\n * .map(it => this.parse({ ...tree, current: it }, options))\n * .filter(Boolean)\n * return `z.union([${items.join(', ')}])`\n * },\n * string(tree, options) {\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * }\n * }\n * })\n * ```\n */\nexport function createParser<TOutput, TOptions extends Record<string, any>>(\n config: CreateParserConfig<TOutput, TOptions>,\n): (tree: SchemaTree, options: TOptions) => TOutput | null | undefined {\n const { mapper, handlers } = config\n\n function parse(tree: SchemaTree, options: TOptions): TOutput | null | undefined {\n const { current } = tree\n\n // Check if there's a custom handler for this keyword\n const handler = handlers[current.keyword as keyof SchemaKeywordMapper]\n if (handler) {\n // Create context object with parse method accessible via `this`\n const context: HandlerContext<TOutput, TOptions> = { parse }\n return handler.call(context, tree, options)\n }\n\n // Fall back to simple mapper lookup\n const value = mapper[current.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n // For simple keywords without args, call the mapper directly\n if (current.keyword in mapper) {\n return value()\n }\n\n return undefined\n }\n\n return parse\n}\n\n/**\n * Helper to find a schema keyword in siblings\n * Useful in handlers when you need to find related schemas (e.g., min/max for string)\n *\n * @example\n * ```ts\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * ```\n */\nexport function findSchemaKeyword<K extends keyof SchemaKeywordMapper>(siblings: Schema[], keyword: K): SchemaKeywordMapper[K] | undefined {\n return SchemaGenerator.find(siblings, schemaKeywords[keyword]) as SchemaKeywordMapper[K] | undefined\n}\n","import type { Plugin, PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { contentType, HttpMethod, Oas, OasTypes, Operation, SchemaObject } from '@kubb/oas'\nimport type { Fabric } from '@kubb/react-fabric'\nimport pLimit from 'p-limit'\nimport type { Generator } from './generators/types.ts'\nimport type { Exclude, Include, OperationSchemas, Override } from './types.ts'\nimport { buildOperation, buildOperations } from './utils.tsx'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n fabric: Fabric\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return (\n override.find(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return exclude.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return include.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const operationId = operation.getOperationId({ friendlyCase: true })\n const method = operation.method\n const operationName = transformers.pascalCase(operationId)\n\n const resolveKeys = (schema?: SchemaObject) => (schema?.properties ? Object.keys(schema.properties) : undefined)\n\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n const name = statusCode === 'default' ? 'error' : statusCode\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n const keys = resolveKeys(schema)\n\n return {\n name: resolveName(transformers.pascalCase(`${operationId} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName,\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys,\n keysToOmit: keys?.filter((key) => (schema?.properties?.[key] as OasTypes.SchemaObject)?.writeOnly),\n }\n })\n\n const successful = statusCodes.filter((item) => item.statusCode?.toString().startsWith('2'))\n const errors = statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} PathParams`)),\n operation,\n operationName,\n schema: pathParamsSchema,\n keys: resolveKeys(pathParamsSchema),\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} QueryParams`)),\n operation,\n operationName,\n schema: queryParamsSchema,\n keys: resolveKeys(queryParamsSchema) || [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} HeaderParams`)),\n operation,\n operationName,\n schema: headerParamsSchema,\n keys: resolveKeys(headerParamsSchema),\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName,\n schema: requestSchema,\n keys: resolveKeys(requestSchema),\n keysToOmit: resolveKeys(requestSchema)?.filter((key) => (requestSchema.properties?.[key] as OasTypes.SchemaObject)?.readOnly),\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n operation,\n operationName,\n schema: {\n oneOf: successful.map((item) => ({ ...item.schema, $ref: item.name })) || undefined,\n } as SchemaObject,\n },\n responses: successful,\n errors,\n statusCodes,\n }\n }\n\n async getOperations(): Promise<Array<{ path: string; method: HttpMethod; operation: Operation }>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n\n return Object.entries(paths).flatMap(([path, methods]) =>\n Object.entries(methods)\n .map((values) => {\n const [method, operation] = values as [HttpMethod, Operation]\n if (this.#isExcluded(operation, method)) {\n return null\n }\n\n if (this.context.include && !this.#isIncluded(operation, method)) {\n return null\n }\n\n return operation ? { path, method: method as HttpMethod, operation } : null\n })\n .filter(Boolean),\n )\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const operations = await this.getOperations()\n\n const generatorLimit = pLimit(1)\n const operationLimit = pLimit(10)\n\n const writeTasks = generators.map((generator) =>\n generatorLimit(async () => {\n const operationTasks = operations.map(({ operation, method }) =>\n operationLimit(async () => {\n const options = this.#getOptions(operation, method)\n\n if (generator.type === 'react') {\n await buildOperation(operation, {\n config: this.context.pluginManager.config,\n fabric: this.context.fabric,\n Component: generator.Operation,\n generator: this,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return []\n }\n\n const result = await generator.operation?.({\n generator: this,\n config: this.context.pluginManager.config,\n operation,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return result ?? []\n }),\n )\n\n const operationResults = await Promise.all(operationTasks)\n const opResultsFlat = operationResults.flat()\n\n if (generator.type === 'react') {\n await buildOperations(\n operations.map((op) => op.operation),\n {\n fabric: this.context.fabric,\n config: this.context.pluginManager.config,\n Component: generator.Operations,\n generator: this,\n plugin: this.context.plugin,\n },\n )\n\n return []\n }\n\n const operationsResult = await generator.operations?.({\n generator: this,\n config: this.context.pluginManager.config,\n operations: operations.map((op) => op.operation),\n plugin: this.context.plugin,\n })\n\n return [...opResultsFlat, ...(operationsResult ?? [])] as unknown as KubbFile.File<TFileMeta>\n }),\n )\n\n const nestedResults = await Promise.all(writeTasks)\n\n return nestedResults.flat()\n }\n}\n","import path from 'node:path'\nimport { type Config, definePlugin, type Group, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { parseFromConfig } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = definePlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n\n const getOas = async ({ config }: { config: Config }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n console.warn(error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n inject() {\n const config = this.config\n let oas: Oas\n\n return {\n async getOas() {\n if (!oas) {\n oas = await getOas({ config })\n }\n\n return oas\n },\n async getBaseURL() {\n const oas = await getOas({ config })\n if (serverIndex !== undefined) {\n return oas.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async install() {\n if (!output) {\n return\n }\n\n const oas = await this.getOas()\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n emptySchemaType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.upsertFile(...operationFiles)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport { createGenerator as _createGenerator } from './generators/createGenerator.ts'\nimport { createReactGenerator as _createReactGenerator } from './generators/createReactGenerator.ts'\nimport type { Generator as _Generator } from './generators/types.ts'\n\nexport type { CreateParserConfig, KeywordHandler } from './createParser.ts'\nexport { createParser, findSchemaKeyword } from './createParser.ts'\nexport type { OperationMethodResult } from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n SchemaMethodResult,\n} from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n SchemaTree,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { buildOperation, buildOperations, buildSchema } from './utils.tsx'\n\n/**\n * @deprecated use `import { createGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createGenerator = _createGenerator\n\n/**\n * @deprecated use `import { createReactGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createReactGenerator = _createReactGenerator\n\n/**\n * @deprecated use `import { Generator } from '@kubb/plugin-oas/generators'`\n */\nexport type Generator<TOptions extends PluginFactoryOptions> = _Generator<TOptions>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FA,SAAgB,aACd,QACqE;CACrE,MAAM,EAAE,QAAQ,aAAa;CAE7B,SAAS,MAAM,MAAkB,SAA+C;EAC9E,MAAM,EAAE,YAAY;EAGpB,MAAM,UAAU,SAAS,QAAQ;AACjC,MAAI,SAAS;GAEX,MAAMA,UAA6C,EAAE,OAAO;AAC5D,UAAO,QAAQ,KAAK,SAAS,MAAM,QAAQ;;EAI7C,MAAM,QAAQ,OAAO,QAAQ;AAE7B,MAAI,CAAC,MACH;AAIF,MAAI,QAAQ,WAAW,OACrB,QAAO,OAAO;;AAMlB,QAAO;;;;;;;;;;;;;AAcT,SAAgB,kBAAuD,UAAoB,SAAgD;AACzI,QAAOC,wCAAgB,KAAK,UAAUC,oCAAe,SAAS;;;;;AC/GhE,IAAa,qBAAb,cAGUC,0BAA6G;CACrH,YAAY,WAAsB,QAAgE;EAChG,MAAM,EAAE,WAAW,EAAE,KAAK,KAAK;EAC/B,MAAM,cAAc,UAAU,eAAe,EAAE,cAAc,MAAM,CAAC;EACpE,MAAM,cAAc,UAAU,gBAAgB;AAE9C,SACE,SAAS,MAAM,EAAE,SAAS,WAAW;AACnC,WAAQ,MAAR;IACE,KAAK,MACH,QAAO,UAAU,SAAS,CAAC,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,CAAC;IACnE,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,KAAK,OACH,QAAO,CAAC,CAAC,UAAU,KAAK,MAAM,QAAQ;IACxC,KAAK,SACH,QAAO,CAAC,CAAC,OAAO,MAAM,QAAQ;IAChC,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,QACE,QAAO;;IAEX,EAAE,WAAW,EAAE;;CAIrB,YAAY,WAAsB,QAA6B;EAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK;EAC9B,MAAM,cAAc,UAAU,eAAe,EAAE,cAAc,MAAM,CAAC;EACpE,MAAM,cAAc,UAAU,gBAAgB;AAE9C,SAAO,QAAQ,MAAM,EAAE,SAAS,WAAW;AACzC,WAAQ,MAAR;IACE,KAAK,MACH,QAAO,UAAU,SAAS,CAAC,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,CAAC;IACnE,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,KAAK,OACH,QAAO,CAAC,CAAC,UAAU,KAAK,MAAM,QAAQ;IACxC,KAAK,SACH,QAAO,CAAC,CAAC,OAAO,MAAM,QAAQ;IAChC,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,QACE,QAAO;;IAEX;;CAGJ,YAAY,WAAsB,QAA6B;EAC7D,MAAM,EAAE,UAAU,EAAE,KAAK,KAAK;EAC9B,MAAM,cAAc,UAAU,eAAe,EAAE,cAAc,MAAM,CAAC;EACpE,MAAM,cAAc,UAAU,gBAAgB;AAE9C,SAAO,QAAQ,MAAM,EAAE,SAAS,WAAW;AACzC,WAAQ,MAAR;IACE,KAAK,MACH,QAAO,UAAU,SAAS,CAAC,MAAM,QAAQ,IAAI,KAAK,MAAM,QAAQ,CAAC;IACnE,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,KAAK,OACH,QAAO,CAAC,CAAC,UAAU,KAAK,MAAM,QAAQ;IACxC,KAAK,SACH,QAAO,CAAC,CAAC,OAAO,MAAM,QAAQ;IAChC,KAAK,cACH,QAAO,CAAC,CAAC,YAAY,MAAM,QAAQ;IACrC,QACE,QAAO;;IAEX;;CAGJ,WACE,WACA,EACE,eAAe,SAAS,SAGtB,EAAE,EACY;EAClB,MAAM,cAAc,UAAU,eAAe,EAAE,cAAc,MAAM,CAAC;EACpE,MAAM,SAAS,UAAU;EACzB,MAAM,gBAAgBC,iCAAa,WAAW,YAAY;EAE1D,MAAM,eAAe,WAA2B,QAAQ,aAAa,OAAO,KAAK,OAAO,WAAW,GAAG;EAEtG,MAAM,mBAAmB,KAAK,QAAQ,IAAI,oBAAoB,WAAW,OAAO;EAChF,MAAM,oBAAoB,KAAK,QAAQ,IAAI,oBAAoB,WAAW,QAAQ;EAClF,MAAM,qBAAqB,KAAK,QAAQ,IAAI,oBAAoB,WAAW,SAAS;EACpF,MAAM,gBAAgB,KAAK,QAAQ,IAAI,iBAAiB,UAAU;EAClE,MAAM,cAAc,UAAU,wBAAwB,CAAC,KAAK,eAAe;GACzE,MAAM,OAAO,eAAe,YAAY,UAAU;GAClD,MAAM,SAAS,KAAK,QAAQ,IAAI,kBAAkB,WAAW,WAAW;GACxE,MAAM,OAAO,YAAY,OAAO;AAEhC,UAAO;IACL,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,GAAG,OAAO,CAAC;IACpE,aAAc,UAAU,wBAAwB,WAAW,EAA8B;IACzF;IACA;IACA;IACA,YAAY,SAAS,UAAU,SAAY,OAAO,WAAW;IAC7D;IACA,YAAY,MAAM,QAAQ,SAAS,QAAQ,aAAa,OAAgC,UAAU;IACnG;IACD;EAEF,MAAM,aAAa,YAAY,QAAQ,SAAS,KAAK,YAAY,UAAU,CAAC,WAAW,IAAI,CAAC;EAC5F,MAAM,SAAS,YAAY,QAAQ,SAAS,KAAK,YAAY,UAAU,CAAC,WAAW,IAAI,IAAI,KAAK,YAAY,UAAU,CAAC,WAAW,IAAI,CAAC;AAEvI,SAAO;GACL,YAAY,mBACR;IACE,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,aAAa,CAAC;IACvE;IACA;IACA,QAAQ;IACR,MAAM,YAAY,iBAAiB;IACpC,GACD;GACJ,aAAa,oBACT;IACE,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,cAAc,CAAC;IACxE;IACA;IACA,QAAQ;IACR,MAAM,YAAY,kBAAkB,IAAI,EAAE;IAC3C,GACD;GACJ,cAAc,qBACV;IACE,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,eAAe,CAAC;IACzE;IACA;IACA,QAAQ;IACR,MAAM,YAAY,mBAAmB;IACtC,GACD;GACJ,SAAS,gBACL;IACE,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,GAAG,WAAW,QAAQ,iBAAiB,oBAAoB,CAAC;IACrH,aAAc,UAAU,OAAO,aAA4C;IAC3E;IACA;IACA,QAAQ;IACR,MAAM,YAAY,cAAc;IAChC,YAAY,YAAY,cAAc,EAAE,QAAQ,SAAS,cAAc,aAAa,OAAgC,SAAS;IAC9H,GACD;GACJ,UAAU;IACR,MAAM,YAAYA,iCAAa,WAAW,GAAG,YAAY,GAAG,WAAW,QAAQ,kBAAkB,qBAAqB,CAAC;IACvH;IACA;IACA,QAAQ,EACN,OAAO,WAAW,KAAK,UAAU;KAAE,GAAG,KAAK;KAAQ,MAAM,KAAK;KAAM,EAAE,IAAI,QAC3E;IACF;GACD,WAAW;GACX;GACA;GACD;;CAGH,MAAM,gBAA4F;EAChG,MAAM,EAAE,QAAQ,KAAK;EAErB,MAAM,QAAQ,IAAI,UAAU;AAE5B,SAAO,OAAO,QAAQ,MAAM,CAAC,SAAS,CAACC,QAAM,aAC3C,OAAO,QAAQ,QAAQ,CACpB,KAAK,WAAW;GACf,MAAM,CAAC,QAAQ,aAAa;AAC5B,OAAI,MAAKC,WAAY,WAAW,OAAO,CACrC,QAAO;AAGT,OAAI,KAAK,QAAQ,WAAW,CAAC,MAAKC,WAAY,WAAW,OAAO,CAC9D,QAAO;AAGT,UAAO,YAAY;IAAE;IAAc;IAAsB;IAAW,GAAG;IACvE,CACD,OAAO,QAAQ,CACnB;;CAGH,MAAM,MAAM,GAAG,YAAwF;EACrG,MAAM,aAAa,MAAM,KAAK,eAAe;EAE7C,MAAM,iBAAiBC,+BAAO,EAAE;EAChC,MAAM,iBAAiBA,+BAAO,GAAG;EAEjC,MAAM,aAAa,WAAW,KAAK,cACjC,eAAe,YAAY;GACzB,MAAM,iBAAiB,WAAW,KAAK,EAAE,WAAW,aAClD,eAAe,YAAY;IACzB,MAAM,UAAU,MAAKC,WAAY,WAAW,OAAO;AAEnD,QAAI,UAAU,SAAS,SAAS;AAC9B,WAAMC,uCAAe,WAAW;MAC9B,QAAQ,KAAK,QAAQ,cAAc;MACnC,QAAQ,KAAK,QAAQ;MACrB,WAAW,UAAU;MACrB,WAAW;MACX,QAAQ;OACN,GAAG,KAAK,QAAQ;OAChB,SAAS;QACP,GAAG,KAAK;QACR,GAAG;QACJ;OACF;MACF,CAAC;AAEF,YAAO,EAAE;;AAgBX,WAbe,MAAM,UAAU,YAAY;KACzC,WAAW;KACX,QAAQ,KAAK,QAAQ,cAAc;KACnC;KACA,QAAQ;MACN,GAAG,KAAK,QAAQ;MAChB,SAAS;OACP,GAAG,KAAK;OACR,GAAG;OACJ;MACF;KACF,CAAC,IAEe,EAAE;KACnB,CACH;GAGD,MAAM,iBADmB,MAAM,QAAQ,IAAI,eAAe,EACnB,MAAM;AAE7C,OAAI,UAAU,SAAS,SAAS;AAC9B,UAAMC,wCACJ,WAAW,KAAK,OAAO,GAAG,UAAU,EACpC;KACE,QAAQ,KAAK,QAAQ;KACrB,QAAQ,KAAK,QAAQ,cAAc;KACnC,WAAW,UAAU;KACrB,WAAW;KACX,QAAQ,KAAK,QAAQ;KACtB,CACF;AAED,WAAO,EAAE;;GAGX,MAAM,mBAAmB,MAAM,UAAU,aAAa;IACpD,WAAW;IACX,QAAQ,KAAK,QAAQ,cAAc;IACnC,YAAY,WAAW,KAAK,OAAO,GAAG,UAAU;IAChD,QAAQ,KAAK,QAAQ;IACtB,CAAC;AAEF,UAAO,CAAC,GAAG,eAAe,GAAI,oBAAoB,EAAE,CAAE;IACtD,CACH;AAID,UAFsB,MAAM,QAAQ,IAAI,WAAW,EAE9B,MAAM;;;;;;AC7R/B,MAAa,gBAAgB;AAE7B,MAAa,2CAAqC,YAAY;CAC5D,MAAM,EACJ,SAAS,EACP,MAAM,WACP,EACD,OACA,WAAW,MACX,aAAa,CAACC,iCAAc,EAC5B,aACA,aACA,UACA,gBAAgB,aACd;CAEJ,MAAM,SAAS,OAAO,EAAE,aAA+C;EAErE,MAAM,MAAM,sCAAsB,QAAQ,SAAS;AAEnD,MAAI,WAAW;GACb;GACA;GACD,CAAC;AAEF,MAAI;AACF,OAAI,SACF,OAAM,IAAI,UAAU;WAEf,GAAG;GACV,MAAM,QAAQ;AAEd,WAAQ,KAAK,OAAO,QAAQ;;AAG9B,SAAO;;AAGT,QAAO;EACL,MAAM;EACN,SAAS;GACP;GACA;GACA;GACA,GAAG;GACJ;EACD,SAAS;GACP,MAAM,SAAS,KAAK;GACpB,IAAIC;AAEJ,UAAO;IACL,MAAM,SAAS;AACb,SAAI,CAAC,IACH,OAAM,MAAM,OAAO,EAAE,QAAQ,CAAC;AAGhC,YAAO;;IAET,MAAM,aAAa;KACjB,MAAMC,QAAM,MAAM,OAAO,EAAE,QAAQ,CAAC;AACpC,SAAI,gBAAgB,OAClB,QAAOA,MAAI,IAAI,SAAS,GAAG,YAAY,EAAE;;IAK9C;;EAEH,YAAY,UAAU,UAAU,WAAS;GACvC,MAAM,OAAOC,kBAAK,QAAQ,KAAK,OAAO,MAAM,KAAK,OAAO,OAAO,KAAK;AAGpE,QAFa,qCAAoBA,kBAAK,QAAQ,MAAM,OAAO,KAAK,CAAC,MAEpD;;;;;AAKX,UAAOA,kBAAK,QAAQ,MAAM,OAAO,KAAK;AAGxC,OAAI,UAAUC,WAAS,OAAO,QAAQA,WAAS,OAAO,MAAM;IAC1D,MAAMC,YAA2B,OAAO,OACpC,MAAM,QACL,QAAQ;AACP,SAAI,OAAO,SAAS,OAClB,QAAO,GAAG,IAAI,MAAM,MAAM,IAAI,CAAC;AAEjC,YAAO,2CAAa,IAAI,MAAM,CAAC;;AAGrC,WAAOF,kBAAK,QACV,MACA,OAAO,MACP,UAAU,EACR,OAAO,MAAM,SAAS,SAASC,UAAQ,MAAM,OAAQA,UAAQ,MAAM,KACpE,CAAC,EACF,SACD;;AAGH,UAAOD,kBAAK,QAAQ,MAAM,OAAO,MAAM,SAAS;;EAElD,MAAM,UAAU;AACd,OAAI,CAAC,OACH;GAGF,MAAM,MAAM,MAAM,KAAK,QAAQ;AAC/B,SAAM,IAAI,aAAa;GAuBvB,MAAM,cAAc,MArBI,IAAIG,wCAC1B;IACE,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,cAAc,EAAE;IAChB,GAAG,KAAK,OAAO;IAChB,EACD;IACE,QAAQ,KAAK;IACb;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA,SAAS;IACT,UAAU;IACV,MAAM;IACN,QAAQ,OAAO;IAChB,CACF,CAEyC,MAAM,GAAG,WAAW;AAC9D,SAAM,KAAK,WAAW,GAAG,YAAY;GAcrC,MAAM,iBAAiB,MAZI,IAAI,mBAAmB,KAAK,OAAO,SAAS;IACrE,QAAQ,KAAK;IACb;IACA,eAAe,KAAK;IACpB,QAAQ,KAAK;IACb;IACA,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACP,CAAC,CAE8C,MAAM,GAAG,WAAW;AAEpE,SAAM,KAAK,WAAW,GAAG,eAAe;;EAE3C;EACD;;;;;;;ACjIF,MAAa,kBAAkBC;;;;AAK/B,MAAa,uBAAuBC"}
1
+ {"version":3,"file":"index.cjs","names":["context: HandlerContext<TOutput, TOptions>","SchemaGenerator","schemaKeywords","BaseGenerator","transformers","path","#isExcluded","#isIncluded","pLimit","#getOptions","buildOperation","buildOperations","jsonGenerator","oas: Oas","oas","path","options","groupName: Group['name']","SchemaGenerator","_createGenerator","_createReactGenerator"],"sources":["../src/createParser.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper, SchemaTree } from './SchemaMapper.ts'\nimport { schemaKeywords } from './SchemaMapper.ts'\n\n/**\n * Handler context with parse method available via `this`\n */\nexport type HandlerContext<TOutput, TOptions> = {\n parse: (tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n}\n\n/**\n * Handler function type for custom keyword processing\n * Handlers can access the parse function via `this.parse`\n */\nexport type KeywordHandler<TOutput, TOptions> = (this: HandlerContext<TOutput, TOptions>, tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n\n/**\n * Configuration for createParser\n */\nexport type CreateParserConfig<TOutput, TOptions> = {\n /**\n * The keyword mapper that maps schema keywords to output generators\n */\n mapper: SchemaMapper<TOutput>\n\n /**\n * Custom handlers for specific schema keywords\n * These provide the implementation for complex types that need special processing\n *\n * Use function syntax (not arrow functions) to enable use of `this` keyword:\n * ```typescript\n * handlers: {\n * enum(tree, options, parse) {\n * // Implementation\n * }\n * }\n * ```\n *\n * Common keywords that typically need handlers:\n * - union: Combine multiple schemas into a union\n * - and: Combine multiple schemas into an intersection\n * - array: Handle array types with items\n * - object: Handle object types with properties\n * - enum: Handle enum types\n * - tuple: Handle tuple types\n * - const: Handle literal/const types\n * - ref: Handle references to other schemas\n * - string/number/integer: Handle primitives with constraints (min/max)\n * - matches: Handle regex patterns\n * - default/describe/optional/nullable: Handle modifiers\n */\n handlers: Partial<{\n [K in keyof SchemaKeywordMapper]: KeywordHandler<TOutput, TOptions>\n }>\n}\n\n/**\n * Creates a parser function that converts schema trees to output using the provided mapper and handlers\n *\n * This function provides a framework for building parsers by:\n * 1. Checking for custom handlers for each keyword\n * 2. Falling back to the mapper for simple keywords\n * 3. Providing utilities for common operations (finding siblings, etc.)\n *\n * The generated parser is recursive and can handle nested schemas.\n *\n * @template TOutput - The output type (e.g., string for Zod/Faker, ts.TypeNode for TypeScript)\n * @template TOptions - The parser options type\n * @param config - Configuration object containing mapper and handlers\n * @returns A parse function that converts SchemaTree to TOutput\n *\n * @example\n * ```ts\n * // Create a simple string-based parser\n * const parse = createParser({\n * mapper: zodKeywordMapper,\n * handlers: {\n * union(tree, options) {\n * const items = tree.current.args\n * .map(it => this.parse({ ...tree, current: it }, options))\n * .filter(Boolean)\n * return `z.union([${items.join(', ')}])`\n * },\n * string(tree, options) {\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * }\n * }\n * })\n * ```\n */\nexport function createParser<TOutput, TOptions extends Record<string, any>>(\n config: CreateParserConfig<TOutput, TOptions>,\n): (tree: SchemaTree, options: TOptions) => TOutput | null | undefined {\n const { mapper, handlers } = config\n\n function parse(tree: SchemaTree, options: TOptions): TOutput | null | undefined {\n const { current } = tree\n\n // Check if there's a custom handler for this keyword\n const handler = handlers[current.keyword as keyof SchemaKeywordMapper]\n if (handler) {\n // Create context object with parse method accessible via `this`\n const context: HandlerContext<TOutput, TOptions> = { parse }\n return handler.call(context, tree, options)\n }\n\n // Fall back to simple mapper lookup\n const value = mapper[current.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n // For simple keywords without args, call the mapper directly\n if (current.keyword in mapper) {\n return value()\n }\n\n return undefined\n }\n\n return parse\n}\n\n/**\n * Helper to find a schema keyword in siblings\n * Useful in handlers when you need to find related schemas (e.g., min/max for string)\n *\n * @example\n * ```ts\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * ```\n */\nexport function findSchemaKeyword<K extends keyof SchemaKeywordMapper>(siblings: Schema[], keyword: K): SchemaKeywordMapper[K] | undefined {\n return SchemaGenerator.find(siblings, schemaKeywords[keyword]) as SchemaKeywordMapper[K] | undefined\n}\n","import type { Plugin, PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport transformers from '@kubb/core/transformers'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { contentType, HttpMethod, Oas, OasTypes, Operation, SchemaObject } from '@kubb/oas'\nimport type { Fabric } from '@kubb/react-fabric'\nimport pLimit from 'p-limit'\nimport type { Generator } from './generators/types.ts'\nimport type { Exclude, Include, OperationSchemas, Override } from './types.ts'\nimport { buildOperation, buildOperations } from './utils.tsx'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n fabric: Fabric\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n logger?: Logger\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return (\n override.find(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return exclude.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return include.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const operationId = operation.getOperationId({ friendlyCase: true })\n const method = operation.method\n const operationName = transformers.pascalCase(operationId)\n\n const resolveKeys = (schema?: SchemaObject) => (schema?.properties ? Object.keys(schema.properties) : undefined)\n\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n const name = statusCode === 'default' ? 'error' : statusCode\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n const keys = resolveKeys(schema)\n\n return {\n name: resolveName(transformers.pascalCase(`${operationId} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName,\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys,\n keysToOmit: keys?.filter((key) => (schema?.properties?.[key] as OasTypes.SchemaObject)?.writeOnly),\n }\n })\n\n const successful = statusCodes.filter((item) => item.statusCode?.toString().startsWith('2'))\n const errors = statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} PathParams`)),\n operation,\n operationName,\n schema: pathParamsSchema,\n keys: resolveKeys(pathParamsSchema),\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} QueryParams`)),\n operation,\n operationName,\n schema: queryParamsSchema,\n keys: resolveKeys(queryParamsSchema) || [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} HeaderParams`)),\n operation,\n operationName,\n schema: headerParamsSchema,\n keys: resolveKeys(headerParamsSchema),\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName,\n schema: requestSchema,\n keys: resolveKeys(requestSchema),\n keysToOmit: resolveKeys(requestSchema)?.filter((key) => (requestSchema.properties?.[key] as OasTypes.SchemaObject)?.readOnly),\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n operation,\n operationName,\n schema: {\n oneOf: successful.map((item) => ({ ...item.schema, $ref: item.name })) || undefined,\n } as SchemaObject,\n },\n responses: successful,\n errors,\n statusCodes,\n }\n }\n\n async getOperations(): Promise<Array<{ path: string; method: HttpMethod; operation: Operation }>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n\n return Object.entries(paths).flatMap(([path, methods]) =>\n Object.entries(methods)\n .map((values) => {\n const [method, operation] = values as [HttpMethod, Operation]\n if (this.#isExcluded(operation, method)) {\n return null\n }\n\n if (this.context.include && !this.#isIncluded(operation, method)) {\n return null\n }\n\n return operation ? { path, method: method as HttpMethod, operation } : null\n })\n .filter(Boolean),\n )\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const operations = await this.getOperations()\n\n const generatorLimit = pLimit(1)\n const operationLimit = pLimit(10)\n\n this.context.logger?.emit('debug', {\n date: new Date(),\n pluginName: this.context.plugin.name,\n logs: [`Building ${operations.length} operations`, ` • Generators: ${generators.length}`],\n })\n\n const writeTasks = generators.map((generator) =>\n generatorLimit(async () => {\n const operationTasks = operations.map(({ operation, method }) =>\n operationLimit(async () => {\n const options = this.#getOptions(operation, method)\n\n if (generator.type === 'react') {\n await buildOperation(operation, {\n config: this.context.pluginManager.config,\n fabric: this.context.fabric,\n Component: generator.Operation,\n generator: this,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return []\n }\n\n const result = await generator.operation?.({\n generator: this,\n config: this.context.pluginManager.config,\n operation,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return result ?? []\n }),\n )\n\n const operationResults = await Promise.all(operationTasks)\n const opResultsFlat = operationResults.flat()\n\n if (generator.type === 'react') {\n await buildOperations(\n operations.map((op) => op.operation),\n {\n fabric: this.context.fabric,\n config: this.context.pluginManager.config,\n Component: generator.Operations,\n generator: this,\n plugin: this.context.plugin,\n },\n )\n\n return []\n }\n\n const operationsResult = await generator.operations?.({\n generator: this,\n config: this.context.pluginManager.config,\n operations: operations.map((op) => op.operation),\n plugin: this.context.plugin,\n })\n\n return [...opResultsFlat, ...(operationsResult ?? [])] as unknown as KubbFile.File<TFileMeta>\n }),\n )\n\n const nestedResults = await Promise.all(writeTasks)\n\n return nestedResults.flat()\n }\n}\n","import path from 'node:path'\nimport { type Config, definePlugin, type Group, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { parseFromConfig } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = definePlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n\n const getOas = async ({ config }: { config: Config }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n console.warn(error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n inject() {\n const config = this.config\n let oas: Oas\n\n return {\n async getOas() {\n if (!oas) {\n oas = await getOas({ config })\n }\n\n return oas\n },\n async getBaseURL() {\n const oas = await getOas({ config })\n if (serverIndex !== undefined) {\n return oas.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async install() {\n if (!output) {\n return\n }\n\n const oas = await this.getOas()\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n emptySchemaType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n logger: this.logger,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n logger: this.logger,\n plugin: this.plugin,\n contentType,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.upsertFile(...operationFiles)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport { createGenerator as _createGenerator } from './generators/createGenerator.ts'\nimport { createReactGenerator as _createReactGenerator } from './generators/createReactGenerator.ts'\nimport type { Generator as _Generator } from './generators/types.ts'\n\nexport type { CreateParserConfig, KeywordHandler } from './createParser.ts'\nexport { createParser, findSchemaKeyword } from './createParser.ts'\nexport type { OperationMethodResult } from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n SchemaMethodResult,\n} from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n SchemaTree,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { buildOperation, buildOperations, buildSchema } from './utils.tsx'\n\n/**\n * @deprecated use `import { createGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createGenerator = _createGenerator\n\n/**\n * @deprecated use `import { createReactGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createReactGenerator = _createReactGenerator\n\n/**\n * @deprecated use `import { Generator } from '@kubb/plugin-oas/generators'`\n */\nexport type Generator<TOptions extends PluginFactoryOptions> = _Generator<TOptions>\n"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as Plugin, E as UserPluginWithLifeCycle, a as SchemaMapper, b as Config, c as schemaKeywords, g as SchemaObject, h as Operation, i as SchemaKeywordMapper, n as SchemaKeyword, o as SchemaTree, r as SchemaKeywordBase, s as isKeyword, t as Schema, w as PluginFactoryOptions } from "./SchemaMapper-DOSP3wgJ.cjs";
2
- import { C as Resolver, S as ResolvePathOptions, _ as Options, a as createReactGenerator$1, b as Ref, c as SchemaGeneratorBuildOptions, d as OperationGenerator, f as OperationMethodResult, g as OperationSchemas, h as OperationSchema, i as ReactGenerator, l as SchemaGeneratorOptions, m as Include, n as createGenerator$1, o as GetSchemaGeneratorOptions, p as Exclude, r as Generator$1, s as SchemaGenerator, u as SchemaMethodResult, v as Override, x as Refs, y as PluginOas } from "./createGenerator-ChN9hQ6p.cjs";
1
+ import { C as Plugin, E as UserPluginWithLifeCycle, a as SchemaMapper, b as Config, c as schemaKeywords, g as SchemaObject, h as Operation, i as SchemaKeywordMapper, n as SchemaKeyword, o as SchemaTree, r as SchemaKeywordBase, s as isKeyword, t as Schema, w as PluginFactoryOptions } from "./SchemaMapper-Dfz9lGho.cjs";
2
+ import { C as Resolver, S as ResolvePathOptions, _ as Options, a as createReactGenerator$1, b as Ref, c as SchemaGeneratorBuildOptions, d as OperationGenerator, f as OperationMethodResult, g as OperationSchemas, h as OperationSchema, i as ReactGenerator, l as SchemaGeneratorOptions, m as Include, n as createGenerator$1, o as GetSchemaGeneratorOptions, p as Exclude, r as Generator$1, s as SchemaGenerator, u as SchemaMethodResult, v as Override, x as Refs, y as PluginOas } from "./createGenerator-5Mu_DEco.cjs";
3
3
  import { Fabric } from "@kubb/react-fabric";
4
4
 
5
5
  //#region src/createParser.d.ts
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { C as Plugin, E as UserPluginWithLifeCycle, a as SchemaMapper, b as Config, c as schemaKeywords, g as SchemaObject, h as Operation, i as SchemaKeywordMapper, n as SchemaKeyword, o as SchemaTree, r as SchemaKeywordBase, s as isKeyword, t as Schema, w as PluginFactoryOptions } from "./SchemaMapper-BSeOSE-y.js";
2
- import { C as Resolver, S as ResolvePathOptions, _ as Options, a as createReactGenerator$1, b as Ref, c as SchemaGeneratorBuildOptions, d as OperationGenerator, f as OperationMethodResult, g as OperationSchemas, h as OperationSchema, i as ReactGenerator, l as SchemaGeneratorOptions, m as Include, n as createGenerator$1, o as GetSchemaGeneratorOptions, p as Exclude, r as Generator$1, s as SchemaGenerator, u as SchemaMethodResult, v as Override, x as Refs, y as PluginOas } from "./createGenerator-CD_IVg6x.js";
1
+ import { C as Plugin, E as UserPluginWithLifeCycle, a as SchemaMapper, b as Config, c as schemaKeywords, g as SchemaObject, h as Operation, i as SchemaKeywordMapper, n as SchemaKeyword, o as SchemaTree, r as SchemaKeywordBase, s as isKeyword, t as Schema, w as PluginFactoryOptions } from "./SchemaMapper-CIK5L5DN.js";
2
+ import { C as Resolver, S as ResolvePathOptions, _ as Options, a as createReactGenerator$1, b as Ref, c as SchemaGeneratorBuildOptions, d as OperationGenerator, f as OperationMethodResult, g as OperationSchemas, h as OperationSchema, i as ReactGenerator, l as SchemaGeneratorOptions, m as Include, n as createGenerator$1, o as GetSchemaGeneratorOptions, p as Exclude, r as Generator$1, s as SchemaGenerator, u as SchemaMethodResult, v as Override, x as Refs, y as PluginOas } from "./createGenerator-CQWDp6sV.js";
3
3
  import { Fabric } from "@kubb/react-fabric";
4
4
 
5
5
  //#region src/createParser.d.ts
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { n as createReactGenerator$1, r as createGenerator$1, t as jsonGenerator } from "./generators-Cw71XBIe.js";
2
- import { a as pLimit, i as buildSchema, n as buildOperation, r as buildOperations, t as SchemaGenerator } from "./SchemaGenerator-Bzj3I5Yv.js";
2
+ import { a as pLimit, i as buildSchema, n as buildOperation, r as buildOperations, t as SchemaGenerator } from "./SchemaGenerator-HVn_098D.js";
3
3
  import { n as schemaKeywords, t as isKeyword } from "./SchemaMapper-eCHsqfmg.js";
4
4
  import { BaseGenerator, definePlugin, getMode } from "@kubb/core";
5
5
  import transformers, { camelCase } from "@kubb/core/transformers";
@@ -210,6 +210,11 @@ var OperationGenerator = class extends BaseGenerator {
210
210
  const operations = await this.getOperations();
211
211
  const generatorLimit = pLimit(1);
212
212
  const operationLimit = pLimit(10);
213
+ this.context.logger?.emit("debug", {
214
+ date: /* @__PURE__ */ new Date(),
215
+ pluginName: this.context.plugin.name,
216
+ logs: [`Building ${operations.length} operations`, ` • Generators: ${generators.length}`]
217
+ });
213
218
  const writeTasks = generators.map((generator) => generatorLimit(async () => {
214
219
  const operationTasks = operations.map(({ operation, method }) => operationLimit(async () => {
215
220
  const options = this.#getOptions(operation, method);
@@ -337,6 +342,7 @@ const pluginOas = definePlugin((options) => {
337
342
  fabric: this.fabric,
338
343
  oas,
339
344
  pluginManager: this.pluginManager,
345
+ logger: this.logger,
340
346
  plugin: this.plugin,
341
347
  contentType,
342
348
  include: void 0,
@@ -349,6 +355,7 @@ const pluginOas = definePlugin((options) => {
349
355
  fabric: this.fabric,
350
356
  oas,
351
357
  pluginManager: this.pluginManager,
358
+ logger: this.logger,
352
359
  plugin: this.plugin,
353
360
  contentType,
354
361
  exclude: void 0,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["context: HandlerContext<TOutput, TOptions>","path","#isExcluded","#isIncluded","#getOptions","oas: Oas","oas","options","groupName: Group['name']","_createGenerator","_createReactGenerator"],"sources":["../src/createParser.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper, SchemaTree } from './SchemaMapper.ts'\nimport { schemaKeywords } from './SchemaMapper.ts'\n\n/**\n * Handler context with parse method available via `this`\n */\nexport type HandlerContext<TOutput, TOptions> = {\n parse: (tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n}\n\n/**\n * Handler function type for custom keyword processing\n * Handlers can access the parse function via `this.parse`\n */\nexport type KeywordHandler<TOutput, TOptions> = (this: HandlerContext<TOutput, TOptions>, tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n\n/**\n * Configuration for createParser\n */\nexport type CreateParserConfig<TOutput, TOptions> = {\n /**\n * The keyword mapper that maps schema keywords to output generators\n */\n mapper: SchemaMapper<TOutput>\n\n /**\n * Custom handlers for specific schema keywords\n * These provide the implementation for complex types that need special processing\n *\n * Use function syntax (not arrow functions) to enable use of `this` keyword:\n * ```typescript\n * handlers: {\n * enum(tree, options, parse) {\n * // Implementation\n * }\n * }\n * ```\n *\n * Common keywords that typically need handlers:\n * - union: Combine multiple schemas into a union\n * - and: Combine multiple schemas into an intersection\n * - array: Handle array types with items\n * - object: Handle object types with properties\n * - enum: Handle enum types\n * - tuple: Handle tuple types\n * - const: Handle literal/const types\n * - ref: Handle references to other schemas\n * - string/number/integer: Handle primitives with constraints (min/max)\n * - matches: Handle regex patterns\n * - default/describe/optional/nullable: Handle modifiers\n */\n handlers: Partial<{\n [K in keyof SchemaKeywordMapper]: KeywordHandler<TOutput, TOptions>\n }>\n}\n\n/**\n * Creates a parser function that converts schema trees to output using the provided mapper and handlers\n *\n * This function provides a framework for building parsers by:\n * 1. Checking for custom handlers for each keyword\n * 2. Falling back to the mapper for simple keywords\n * 3. Providing utilities for common operations (finding siblings, etc.)\n *\n * The generated parser is recursive and can handle nested schemas.\n *\n * @template TOutput - The output type (e.g., string for Zod/Faker, ts.TypeNode for TypeScript)\n * @template TOptions - The parser options type\n * @param config - Configuration object containing mapper and handlers\n * @returns A parse function that converts SchemaTree to TOutput\n *\n * @example\n * ```ts\n * // Create a simple string-based parser\n * const parse = createParser({\n * mapper: zodKeywordMapper,\n * handlers: {\n * union(tree, options) {\n * const items = tree.current.args\n * .map(it => this.parse({ ...tree, current: it }, options))\n * .filter(Boolean)\n * return `z.union([${items.join(', ')}])`\n * },\n * string(tree, options) {\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * }\n * }\n * })\n * ```\n */\nexport function createParser<TOutput, TOptions extends Record<string, any>>(\n config: CreateParserConfig<TOutput, TOptions>,\n): (tree: SchemaTree, options: TOptions) => TOutput | null | undefined {\n const { mapper, handlers } = config\n\n function parse(tree: SchemaTree, options: TOptions): TOutput | null | undefined {\n const { current } = tree\n\n // Check if there's a custom handler for this keyword\n const handler = handlers[current.keyword as keyof SchemaKeywordMapper]\n if (handler) {\n // Create context object with parse method accessible via `this`\n const context: HandlerContext<TOutput, TOptions> = { parse }\n return handler.call(context, tree, options)\n }\n\n // Fall back to simple mapper lookup\n const value = mapper[current.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n // For simple keywords without args, call the mapper directly\n if (current.keyword in mapper) {\n return value()\n }\n\n return undefined\n }\n\n return parse\n}\n\n/**\n * Helper to find a schema keyword in siblings\n * Useful in handlers when you need to find related schemas (e.g., min/max for string)\n *\n * @example\n * ```ts\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * ```\n */\nexport function findSchemaKeyword<K extends keyof SchemaKeywordMapper>(siblings: Schema[], keyword: K): SchemaKeywordMapper[K] | undefined {\n return SchemaGenerator.find(siblings, schemaKeywords[keyword]) as SchemaKeywordMapper[K] | undefined\n}\n","import type { Plugin, PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport transformers from '@kubb/core/transformers'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { contentType, HttpMethod, Oas, OasTypes, Operation, SchemaObject } from '@kubb/oas'\nimport type { Fabric } from '@kubb/react-fabric'\nimport pLimit from 'p-limit'\nimport type { Generator } from './generators/types.ts'\nimport type { Exclude, Include, OperationSchemas, Override } from './types.ts'\nimport { buildOperation, buildOperations } from './utils.tsx'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n fabric: Fabric\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return (\n override.find(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return exclude.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return include.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const operationId = operation.getOperationId({ friendlyCase: true })\n const method = operation.method\n const operationName = transformers.pascalCase(operationId)\n\n const resolveKeys = (schema?: SchemaObject) => (schema?.properties ? Object.keys(schema.properties) : undefined)\n\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n const name = statusCode === 'default' ? 'error' : statusCode\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n const keys = resolveKeys(schema)\n\n return {\n name: resolveName(transformers.pascalCase(`${operationId} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName,\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys,\n keysToOmit: keys?.filter((key) => (schema?.properties?.[key] as OasTypes.SchemaObject)?.writeOnly),\n }\n })\n\n const successful = statusCodes.filter((item) => item.statusCode?.toString().startsWith('2'))\n const errors = statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} PathParams`)),\n operation,\n operationName,\n schema: pathParamsSchema,\n keys: resolveKeys(pathParamsSchema),\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} QueryParams`)),\n operation,\n operationName,\n schema: queryParamsSchema,\n keys: resolveKeys(queryParamsSchema) || [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} HeaderParams`)),\n operation,\n operationName,\n schema: headerParamsSchema,\n keys: resolveKeys(headerParamsSchema),\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName,\n schema: requestSchema,\n keys: resolveKeys(requestSchema),\n keysToOmit: resolveKeys(requestSchema)?.filter((key) => (requestSchema.properties?.[key] as OasTypes.SchemaObject)?.readOnly),\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n operation,\n operationName,\n schema: {\n oneOf: successful.map((item) => ({ ...item.schema, $ref: item.name })) || undefined,\n } as SchemaObject,\n },\n responses: successful,\n errors,\n statusCodes,\n }\n }\n\n async getOperations(): Promise<Array<{ path: string; method: HttpMethod; operation: Operation }>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n\n return Object.entries(paths).flatMap(([path, methods]) =>\n Object.entries(methods)\n .map((values) => {\n const [method, operation] = values as [HttpMethod, Operation]\n if (this.#isExcluded(operation, method)) {\n return null\n }\n\n if (this.context.include && !this.#isIncluded(operation, method)) {\n return null\n }\n\n return operation ? { path, method: method as HttpMethod, operation } : null\n })\n .filter(Boolean),\n )\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const operations = await this.getOperations()\n\n const generatorLimit = pLimit(1)\n const operationLimit = pLimit(10)\n\n const writeTasks = generators.map((generator) =>\n generatorLimit(async () => {\n const operationTasks = operations.map(({ operation, method }) =>\n operationLimit(async () => {\n const options = this.#getOptions(operation, method)\n\n if (generator.type === 'react') {\n await buildOperation(operation, {\n config: this.context.pluginManager.config,\n fabric: this.context.fabric,\n Component: generator.Operation,\n generator: this,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return []\n }\n\n const result = await generator.operation?.({\n generator: this,\n config: this.context.pluginManager.config,\n operation,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return result ?? []\n }),\n )\n\n const operationResults = await Promise.all(operationTasks)\n const opResultsFlat = operationResults.flat()\n\n if (generator.type === 'react') {\n await buildOperations(\n operations.map((op) => op.operation),\n {\n fabric: this.context.fabric,\n config: this.context.pluginManager.config,\n Component: generator.Operations,\n generator: this,\n plugin: this.context.plugin,\n },\n )\n\n return []\n }\n\n const operationsResult = await generator.operations?.({\n generator: this,\n config: this.context.pluginManager.config,\n operations: operations.map((op) => op.operation),\n plugin: this.context.plugin,\n })\n\n return [...opResultsFlat, ...(operationsResult ?? [])] as unknown as KubbFile.File<TFileMeta>\n }),\n )\n\n const nestedResults = await Promise.all(writeTasks)\n\n return nestedResults.flat()\n }\n}\n","import path from 'node:path'\nimport { type Config, definePlugin, type Group, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { parseFromConfig } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = definePlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n\n const getOas = async ({ config }: { config: Config }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n console.warn(error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n inject() {\n const config = this.config\n let oas: Oas\n\n return {\n async getOas() {\n if (!oas) {\n oas = await getOas({ config })\n }\n\n return oas\n },\n async getBaseURL() {\n const oas = await getOas({ config })\n if (serverIndex !== undefined) {\n return oas.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async install() {\n if (!output) {\n return\n }\n\n const oas = await this.getOas()\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n emptySchemaType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.upsertFile(...operationFiles)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport { createGenerator as _createGenerator } from './generators/createGenerator.ts'\nimport { createReactGenerator as _createReactGenerator } from './generators/createReactGenerator.ts'\nimport type { Generator as _Generator } from './generators/types.ts'\n\nexport type { CreateParserConfig, KeywordHandler } from './createParser.ts'\nexport { createParser, findSchemaKeyword } from './createParser.ts'\nexport type { OperationMethodResult } from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n SchemaMethodResult,\n} from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n SchemaTree,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { buildOperation, buildOperations, buildSchema } from './utils.tsx'\n\n/**\n * @deprecated use `import { createGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createGenerator = _createGenerator\n\n/**\n * @deprecated use `import { createReactGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createReactGenerator = _createReactGenerator\n\n/**\n * @deprecated use `import { Generator } from '@kubb/plugin-oas/generators'`\n */\nexport type Generator<TOptions extends PluginFactoryOptions> = _Generator<TOptions>\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["context: HandlerContext<TOutput, TOptions>","path","#isExcluded","#isIncluded","#getOptions","oas: Oas","oas","options","groupName: Group['name']","_createGenerator","_createReactGenerator"],"sources":["../src/createParser.ts","../src/OperationGenerator.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["import { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper, SchemaTree } from './SchemaMapper.ts'\nimport { schemaKeywords } from './SchemaMapper.ts'\n\n/**\n * Handler context with parse method available via `this`\n */\nexport type HandlerContext<TOutput, TOptions> = {\n parse: (tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n}\n\n/**\n * Handler function type for custom keyword processing\n * Handlers can access the parse function via `this.parse`\n */\nexport type KeywordHandler<TOutput, TOptions> = (this: HandlerContext<TOutput, TOptions>, tree: SchemaTree, options: TOptions) => TOutput | null | undefined\n\n/**\n * Configuration for createParser\n */\nexport type CreateParserConfig<TOutput, TOptions> = {\n /**\n * The keyword mapper that maps schema keywords to output generators\n */\n mapper: SchemaMapper<TOutput>\n\n /**\n * Custom handlers for specific schema keywords\n * These provide the implementation for complex types that need special processing\n *\n * Use function syntax (not arrow functions) to enable use of `this` keyword:\n * ```typescript\n * handlers: {\n * enum(tree, options, parse) {\n * // Implementation\n * }\n * }\n * ```\n *\n * Common keywords that typically need handlers:\n * - union: Combine multiple schemas into a union\n * - and: Combine multiple schemas into an intersection\n * - array: Handle array types with items\n * - object: Handle object types with properties\n * - enum: Handle enum types\n * - tuple: Handle tuple types\n * - const: Handle literal/const types\n * - ref: Handle references to other schemas\n * - string/number/integer: Handle primitives with constraints (min/max)\n * - matches: Handle regex patterns\n * - default/describe/optional/nullable: Handle modifiers\n */\n handlers: Partial<{\n [K in keyof SchemaKeywordMapper]: KeywordHandler<TOutput, TOptions>\n }>\n}\n\n/**\n * Creates a parser function that converts schema trees to output using the provided mapper and handlers\n *\n * This function provides a framework for building parsers by:\n * 1. Checking for custom handlers for each keyword\n * 2. Falling back to the mapper for simple keywords\n * 3. Providing utilities for common operations (finding siblings, etc.)\n *\n * The generated parser is recursive and can handle nested schemas.\n *\n * @template TOutput - The output type (e.g., string for Zod/Faker, ts.TypeNode for TypeScript)\n * @template TOptions - The parser options type\n * @param config - Configuration object containing mapper and handlers\n * @returns A parse function that converts SchemaTree to TOutput\n *\n * @example\n * ```ts\n * // Create a simple string-based parser\n * const parse = createParser({\n * mapper: zodKeywordMapper,\n * handlers: {\n * union(tree, options) {\n * const items = tree.current.args\n * .map(it => this.parse({ ...tree, current: it }, options))\n * .filter(Boolean)\n * return `z.union([${items.join(', ')}])`\n * },\n * string(tree, options) {\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * }\n * }\n * })\n * ```\n */\nexport function createParser<TOutput, TOptions extends Record<string, any>>(\n config: CreateParserConfig<TOutput, TOptions>,\n): (tree: SchemaTree, options: TOptions) => TOutput | null | undefined {\n const { mapper, handlers } = config\n\n function parse(tree: SchemaTree, options: TOptions): TOutput | null | undefined {\n const { current } = tree\n\n // Check if there's a custom handler for this keyword\n const handler = handlers[current.keyword as keyof SchemaKeywordMapper]\n if (handler) {\n // Create context object with parse method accessible via `this`\n const context: HandlerContext<TOutput, TOptions> = { parse }\n return handler.call(context, tree, options)\n }\n\n // Fall back to simple mapper lookup\n const value = mapper[current.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n // For simple keywords without args, call the mapper directly\n if (current.keyword in mapper) {\n return value()\n }\n\n return undefined\n }\n\n return parse\n}\n\n/**\n * Helper to find a schema keyword in siblings\n * Useful in handlers when you need to find related schemas (e.g., min/max for string)\n *\n * @example\n * ```ts\n * const minSchema = findSchemaKeyword(tree.siblings, 'min')\n * const maxSchema = findSchemaKeyword(tree.siblings, 'max')\n * return zodKeywordMapper.string(false, minSchema?.args, maxSchema?.args)\n * ```\n */\nexport function findSchemaKeyword<K extends keyof SchemaKeywordMapper>(siblings: Schema[], keyword: K): SchemaKeywordMapper[K] | undefined {\n return SchemaGenerator.find(siblings, schemaKeywords[keyword]) as SchemaKeywordMapper[K] | undefined\n}\n","import type { Plugin, PluginFactoryOptions, PluginManager } from '@kubb/core'\nimport { BaseGenerator, type FileMetaBase } from '@kubb/core'\nimport type { Logger } from '@kubb/core/logger'\nimport transformers from '@kubb/core/transformers'\nimport type { KubbFile } from '@kubb/fabric-core/types'\nimport type { contentType, HttpMethod, Oas, OasTypes, Operation, SchemaObject } from '@kubb/oas'\nimport type { Fabric } from '@kubb/react-fabric'\nimport pLimit from 'p-limit'\nimport type { Generator } from './generators/types.ts'\nimport type { Exclude, Include, OperationSchemas, Override } from './types.ts'\nimport { buildOperation, buildOperations } from './utils.tsx'\n\nexport type OperationMethodResult<TFileMeta extends FileMetaBase> = Promise<KubbFile.File<TFileMeta> | Array<KubbFile.File<TFileMeta>> | null>\n\ntype Context<TOptions, TPluginOptions extends PluginFactoryOptions> = {\n fabric: Fabric\n oas: Oas\n exclude: Array<Exclude> | undefined\n include: Array<Include> | undefined\n override: Array<Override<TOptions>> | undefined\n contentType: contentType | undefined\n pluginManager: PluginManager\n logger?: Logger\n /**\n * Current plugin\n */\n plugin: Plugin<TPluginOptions>\n mode: KubbFile.Mode\n}\n\nexport class OperationGenerator<\n TPluginOptions extends PluginFactoryOptions = PluginFactoryOptions,\n TFileMeta extends FileMetaBase = FileMetaBase,\n> extends BaseGenerator<TPluginOptions['resolvedOptions'], Context<TPluginOptions['resolvedOptions'], TPluginOptions>> {\n #getOptions(operation: Operation, method: HttpMethod): Partial<TPluginOptions['resolvedOptions']> {\n const { override = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return (\n override.find(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })?.options || {}\n )\n }\n\n #isExcluded(operation: Operation, method: HttpMethod): boolean {\n const { exclude = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return exclude.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n #isIncluded(operation: Operation, method: HttpMethod): boolean {\n const { include = [] } = this.context\n const operationId = operation.getOperationId({ friendlyCase: true })\n const contentType = operation.getContentType()\n\n return include.some(({ pattern, type }) => {\n switch (type) {\n case 'tag':\n return operation.getTags().some((tag) => tag.name.match(pattern))\n case 'operationId':\n return !!operationId.match(pattern)\n case 'path':\n return !!operation.path.match(pattern)\n case 'method':\n return !!method.match(pattern)\n case 'contentType':\n return !!contentType.match(pattern)\n default:\n return false\n }\n })\n }\n\n getSchemas(\n operation: Operation,\n {\n resolveName = (name) => name,\n }: {\n resolveName?: (name: string) => string\n } = {},\n ): OperationSchemas {\n const operationId = operation.getOperationId({ friendlyCase: true })\n const method = operation.method\n const operationName = transformers.pascalCase(operationId)\n\n const resolveKeys = (schema?: SchemaObject) => (schema?.properties ? Object.keys(schema.properties) : undefined)\n\n const pathParamsSchema = this.context.oas.getParametersSchema(operation, 'path')\n const queryParamsSchema = this.context.oas.getParametersSchema(operation, 'query')\n const headerParamsSchema = this.context.oas.getParametersSchema(operation, 'header')\n const requestSchema = this.context.oas.getRequestSchema(operation)\n const statusCodes = operation.getResponseStatusCodes().map((statusCode) => {\n const name = statusCode === 'default' ? 'error' : statusCode\n const schema = this.context.oas.getResponseSchema(operation, statusCode)\n const keys = resolveKeys(schema)\n\n return {\n name: resolveName(transformers.pascalCase(`${operationId} ${name}`)),\n description: (operation.getResponseByStatusCode(statusCode) as OasTypes.ResponseObject)?.description,\n schema,\n operation,\n operationName,\n statusCode: name === 'error' ? undefined : Number(statusCode),\n keys,\n keysToOmit: keys?.filter((key) => (schema?.properties?.[key] as OasTypes.SchemaObject)?.writeOnly),\n }\n })\n\n const successful = statusCodes.filter((item) => item.statusCode?.toString().startsWith('2'))\n const errors = statusCodes.filter((item) => item.statusCode?.toString().startsWith('4') || item.statusCode?.toString().startsWith('5'))\n\n return {\n pathParams: pathParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} PathParams`)),\n operation,\n operationName,\n schema: pathParamsSchema,\n keys: resolveKeys(pathParamsSchema),\n }\n : undefined,\n queryParams: queryParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} QueryParams`)),\n operation,\n operationName,\n schema: queryParamsSchema,\n keys: resolveKeys(queryParamsSchema) || [],\n }\n : undefined,\n headerParams: headerParamsSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} HeaderParams`)),\n operation,\n operationName,\n schema: headerParamsSchema,\n keys: resolveKeys(headerParamsSchema),\n }\n : undefined,\n request: requestSchema\n ? {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryRequest' : 'mutationRequest'}`)),\n description: (operation.schema.requestBody as OasTypes.RequestBodyObject)?.description,\n operation,\n operationName,\n schema: requestSchema,\n keys: resolveKeys(requestSchema),\n keysToOmit: resolveKeys(requestSchema)?.filter((key) => (requestSchema.properties?.[key] as OasTypes.SchemaObject)?.readOnly),\n }\n : undefined,\n response: {\n name: resolveName(transformers.pascalCase(`${operationId} ${method === 'get' ? 'queryResponse' : 'mutationResponse'}`)),\n operation,\n operationName,\n schema: {\n oneOf: successful.map((item) => ({ ...item.schema, $ref: item.name })) || undefined,\n } as SchemaObject,\n },\n responses: successful,\n errors,\n statusCodes,\n }\n }\n\n async getOperations(): Promise<Array<{ path: string; method: HttpMethod; operation: Operation }>> {\n const { oas } = this.context\n\n const paths = oas.getPaths()\n\n return Object.entries(paths).flatMap(([path, methods]) =>\n Object.entries(methods)\n .map((values) => {\n const [method, operation] = values as [HttpMethod, Operation]\n if (this.#isExcluded(operation, method)) {\n return null\n }\n\n if (this.context.include && !this.#isIncluded(operation, method)) {\n return null\n }\n\n return operation ? { path, method: method as HttpMethod, operation } : null\n })\n .filter(Boolean),\n )\n }\n\n async build(...generators: Array<Generator<TPluginOptions>>): Promise<Array<KubbFile.File<TFileMeta>>> {\n const operations = await this.getOperations()\n\n const generatorLimit = pLimit(1)\n const operationLimit = pLimit(10)\n\n this.context.logger?.emit('debug', {\n date: new Date(),\n pluginName: this.context.plugin.name,\n logs: [`Building ${operations.length} operations`, ` • Generators: ${generators.length}`],\n })\n\n const writeTasks = generators.map((generator) =>\n generatorLimit(async () => {\n const operationTasks = operations.map(({ operation, method }) =>\n operationLimit(async () => {\n const options = this.#getOptions(operation, method)\n\n if (generator.type === 'react') {\n await buildOperation(operation, {\n config: this.context.pluginManager.config,\n fabric: this.context.fabric,\n Component: generator.Operation,\n generator: this,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return []\n }\n\n const result = await generator.operation?.({\n generator: this,\n config: this.context.pluginManager.config,\n operation,\n plugin: {\n ...this.context.plugin,\n options: {\n ...this.options,\n ...options,\n },\n },\n })\n\n return result ?? []\n }),\n )\n\n const operationResults = await Promise.all(operationTasks)\n const opResultsFlat = operationResults.flat()\n\n if (generator.type === 'react') {\n await buildOperations(\n operations.map((op) => op.operation),\n {\n fabric: this.context.fabric,\n config: this.context.pluginManager.config,\n Component: generator.Operations,\n generator: this,\n plugin: this.context.plugin,\n },\n )\n\n return []\n }\n\n const operationsResult = await generator.operations?.({\n generator: this,\n config: this.context.pluginManager.config,\n operations: operations.map((op) => op.operation),\n plugin: this.context.plugin,\n })\n\n return [...opResultsFlat, ...(operationsResult ?? [])] as unknown as KubbFile.File<TFileMeta>\n }),\n )\n\n const nestedResults = await Promise.all(writeTasks)\n\n return nestedResults.flat()\n }\n}\n","import path from 'node:path'\nimport { type Config, definePlugin, type Group, getMode } from '@kubb/core'\nimport { camelCase } from '@kubb/core/transformers'\nimport type { Oas } from '@kubb/oas'\nimport { parseFromConfig } from '@kubb/oas'\nimport { jsonGenerator } from './generators'\nimport { OperationGenerator } from './OperationGenerator.ts'\nimport { SchemaGenerator } from './SchemaGenerator.ts'\nimport type { PluginOas } from './types.ts'\n\nexport const pluginOasName = 'plugin-oas' satisfies PluginOas['name']\n\nexport const pluginOas = definePlugin<PluginOas>((options) => {\n const {\n output = {\n path: 'schemas',\n },\n group,\n validate = true,\n generators = [jsonGenerator],\n serverIndex,\n contentType,\n oasClass,\n discriminator = 'strict',\n } = options\n\n const getOas = async ({ config }: { config: Config }): Promise<Oas> => {\n // needs to be in a different variable or the catch here will not work(return of a promise instead)\n const oas = await parseFromConfig(config, oasClass)\n\n oas.setOptions({\n contentType,\n discriminator,\n })\n\n try {\n if (validate) {\n await oas.valdiate()\n }\n } catch (e) {\n const error = e as Error\n\n console.warn(error?.message)\n }\n\n return oas\n }\n\n return {\n name: pluginOasName,\n options: {\n output,\n validate,\n discriminator,\n ...options,\n },\n inject() {\n const config = this.config\n let oas: Oas\n\n return {\n async getOas() {\n if (!oas) {\n oas = await getOas({ config })\n }\n\n return oas\n },\n async getBaseURL() {\n const oas = await getOas({ config })\n if (serverIndex !== undefined) {\n return oas.api.servers?.at(serverIndex)?.url\n }\n\n return undefined\n },\n }\n },\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? getMode(path.resolve(root, output.path))\n\n if (mode === 'single') {\n /**\n * when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend\n * Other plugins then need to call addOrAppend instead of just add from the fileManager class\n */\n return path.resolve(root, output.path)\n }\n\n if (group && (options?.group?.path || options?.group?.tag)) {\n const groupName: Group['name'] = group?.name\n ? group.name\n : (ctx) => {\n if (group?.type === 'path') {\n return `${ctx.group.split('/')[1]}`\n }\n return `${camelCase(ctx.group)}Controller`\n }\n\n return path.resolve(\n root,\n output.path,\n groupName({\n group: group.type === 'path' ? options.group.path! : options.group.tag!,\n }),\n baseName,\n )\n }\n\n return path.resolve(root, output.path, baseName)\n },\n async install() {\n if (!output) {\n return\n }\n\n const oas = await this.getOas()\n await oas.dereference()\n\n const schemaGenerator = new SchemaGenerator(\n {\n unknownType: 'unknown',\n emptySchemaType: 'unknown',\n dateType: 'date',\n transformers: {},\n ...this.plugin.options,\n },\n {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n logger: this.logger,\n plugin: this.plugin,\n contentType,\n include: undefined,\n override: undefined,\n mode: 'split',\n output: output.path,\n },\n )\n\n const schemaFiles = await schemaGenerator.build(...generators)\n await this.upsertFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n fabric: this.fabric,\n oas,\n pluginManager: this.pluginManager,\n logger: this.logger,\n plugin: this.plugin,\n contentType,\n exclude: undefined,\n include: undefined,\n override: undefined,\n mode: 'split',\n })\n\n const operationFiles = await operationGenerator.build(...generators)\n\n await this.upsertFile(...operationFiles)\n },\n }\n})\n","import type { PluginFactoryOptions } from '@kubb/core'\nimport { createGenerator as _createGenerator } from './generators/createGenerator.ts'\nimport { createReactGenerator as _createReactGenerator } from './generators/createReactGenerator.ts'\nimport type { Generator as _Generator } from './generators/types.ts'\n\nexport type { CreateParserConfig, KeywordHandler } from './createParser.ts'\nexport { createParser, findSchemaKeyword } from './createParser.ts'\nexport type { OperationMethodResult } from './OperationGenerator.ts'\nexport { OperationGenerator } from './OperationGenerator.ts'\nexport { pluginOas, pluginOasName } from './plugin.ts'\nexport type {\n GetSchemaGeneratorOptions,\n SchemaGeneratorBuildOptions,\n SchemaGeneratorOptions,\n SchemaMethodResult,\n} from './SchemaGenerator.ts'\nexport { SchemaGenerator } from './SchemaGenerator.ts'\nexport type {\n Schema,\n SchemaKeyword,\n SchemaKeywordBase,\n SchemaKeywordMapper,\n SchemaMapper,\n SchemaTree,\n} from './SchemaMapper.ts'\nexport { isKeyword, schemaKeywords } from './SchemaMapper.ts'\nexport type * from './types.ts'\nexport { buildOperation, buildOperations, buildSchema } from './utils.tsx'\n\n/**\n * @deprecated use `import { createGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createGenerator = _createGenerator\n\n/**\n * @deprecated use `import { createReactGenerator } from '@kubb/plugin-oas/generators'`\n */\nexport const createReactGenerator = _createReactGenerator\n\n/**\n * @deprecated use `import { Generator } from '@kubb/plugin-oas/generators'`\n */\nexport type Generator<TOptions extends PluginFactoryOptions> = _Generator<TOptions>\n"],"mappings":"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"}
package/dist/mocks.cjs CHANGED
@@ -297,7 +297,19 @@ const basic = [
297
297
  name: "and",
298
298
  schema: {
299
299
  keyword: require_SchemaMapper.schemaKeywords.and,
300
- args: [{ keyword: require_SchemaMapper.schemaKeywords.string }, { keyword: require_SchemaMapper.schemaKeywords.number }]
300
+ args: [{
301
+ keyword: require_SchemaMapper.schemaKeywords.object,
302
+ args: {
303
+ properties: { street: [{ keyword: require_SchemaMapper.schemaKeywords.string }] },
304
+ additionalProperties: []
305
+ }
306
+ }, {
307
+ keyword: require_SchemaMapper.schemaKeywords.object,
308
+ args: {
309
+ properties: { city: [{ keyword: require_SchemaMapper.schemaKeywords.string }] },
310
+ additionalProperties: []
311
+ }
312
+ }]
301
313
  }
302
314
  },
303
315
  {
@@ -433,7 +445,19 @@ const basic = [
433
445
  address: [
434
446
  {
435
447
  keyword: require_SchemaMapper.schemaKeywords.and,
436
- args: [{ keyword: require_SchemaMapper.schemaKeywords.string }, { keyword: require_SchemaMapper.schemaKeywords.number }]
448
+ args: [{
449
+ keyword: require_SchemaMapper.schemaKeywords.object,
450
+ args: {
451
+ properties: { street: [{ keyword: require_SchemaMapper.schemaKeywords.string }] },
452
+ additionalProperties: []
453
+ }
454
+ }, {
455
+ keyword: require_SchemaMapper.schemaKeywords.object,
456
+ args: {
457
+ properties: { city: [{ keyword: require_SchemaMapper.schemaKeywords.string }] },
458
+ additionalProperties: []
459
+ }
460
+ }]
437
461
  },
438
462
  { keyword: require_SchemaMapper.schemaKeywords.nullable },
439
463
  {
@@ -705,7 +729,16 @@ const full = [
705
729
  address: [
706
730
  {
707
731
  keyword: require_SchemaMapper.schemaKeywords.and,
708
- args: [{ keyword: require_SchemaMapper.schemaKeywords.string }, { keyword: require_SchemaMapper.schemaKeywords.number }]
732
+ args: [{ keyword: require_SchemaMapper.schemaKeywords.string }, {
733
+ keyword: require_SchemaMapper.schemaKeywords.object,
734
+ args: {
735
+ properties: {
736
+ street: [{ keyword: require_SchemaMapper.schemaKeywords.string }],
737
+ city: [{ keyword: require_SchemaMapper.schemaKeywords.string }]
738
+ },
739
+ additionalProperties: []
740
+ }
741
+ }]
709
742
  },
710
743
  { keyword: require_SchemaMapper.schemaKeywords.nullable },
711
744
  {
@@ -1 +1 @@
1
- {"version":3,"file":"mocks.cjs","names":["basic: Array<{ name: string; schema: Schema }>","schemaKeywords","full: Array<{ name: string; schema: Schema[] }>"],"sources":["../src/mocks/schemas.ts"],"sourcesContent":["import { type Schema, schemaKeywords } from '../SchemaMapper'\n\nconst basic: Array<{ name: string; schema: Schema }> = [\n {\n name: 'any',\n schema: {\n keyword: schemaKeywords.any,\n },\n },\n {\n name: 'unknown',\n schema: {\n keyword: schemaKeywords.unknown,\n },\n },\n {\n name: 'string',\n schema: {\n keyword: schemaKeywords.string,\n },\n },\n {\n name: 'number',\n schema: {\n keyword: schemaKeywords.number,\n },\n },\n {\n name: 'integer',\n schema: {\n keyword: schemaKeywords.integer,\n },\n },\n {\n name: 'boolean',\n schema: {\n keyword: schemaKeywords.boolean,\n },\n },\n {\n name: 'primitiveDate',\n schema: {\n keyword: schemaKeywords.date,\n args: {\n type: 'date',\n },\n },\n },\n {\n name: 'date',\n schema: {\n keyword: schemaKeywords.date,\n args: {\n type: 'string',\n },\n },\n },\n {\n name: 'time',\n schema: {\n keyword: schemaKeywords.time,\n args: {\n type: 'string',\n },\n },\n },\n {\n name: 'stringOffset',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n offset: true,\n },\n },\n },\n {\n name: 'stringLocal',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n local: true,\n },\n },\n },\n {\n name: 'datetime',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n offset: false,\n },\n },\n },\n {\n name: 'nullable',\n schema: {\n keyword: schemaKeywords.nullable,\n },\n },\n {\n name: 'undefined',\n schema: {\n keyword: schemaKeywords.undefined,\n },\n },\n {\n name: 'min',\n schema: {\n keyword: schemaKeywords.min,\n args: 2,\n },\n },\n {\n name: 'max',\n schema: {\n keyword: schemaKeywords.max,\n args: 2,\n },\n },\n {\n name: 'matchesReg',\n schema: {\n keyword: schemaKeywords.matches,\n args: '/node_modules/', // pure regexp\n },\n },\n {\n name: 'matches',\n schema: {\n keyword: schemaKeywords.matches,\n args: '^[A-Z]{2}$',\n },\n },\n {\n name: 'const',\n schema: {\n keyword: schemaKeywords.const,\n args: {\n name: '',\n value: '',\n format: schemaKeywords.string,\n },\n },\n },\n {\n name: 'ref',\n schema: {\n keyword: schemaKeywords.ref,\n args: {\n $ref: '$ref',\n name: 'Pet',\n path: './pet.ts',\n isImportable: true,\n },\n },\n },\n {\n name: 'enum',\n schema: {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n },\n {\n name: 'enumLiteralBoolean',\n schema: {\n keyword: schemaKeywords.enum,\n args: {\n asConst: true,\n items: [\n {\n format: 'boolean',\n name: 'true',\n value: true,\n },\n {\n format: 'boolean',\n name: 'false',\n value: false,\n },\n ],\n name: 'PetEnumLiteral',\n typeName: 'PetEnumLiteral',\n },\n },\n },\n {\n name: 'tuple',\n schema: {\n keyword: schemaKeywords.tuple,\n args: {\n items: [],\n },\n },\n },\n {\n name: 'tupleMulti',\n schema: {\n keyword: schemaKeywords.tuple,\n args: {\n items: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n },\n },\n {\n name: 'array',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.number }, { keyword: schemaKeywords.string }],\n },\n ],\n },\n },\n },\n {\n name: 'arrayEmpty',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [],\n },\n },\n },\n {\n name: 'arrayRef',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.ref,\n\n args: { name: 'Pet', $ref: '#component/schema/Pet', path: './pet.ts', isImportable: true },\n },\n ],\n },\n },\n },\n {\n name: 'arrayAdvanced',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.min, args: 1 }, { keyword: schemaKeywords.max, args: 10 }, { keyword: schemaKeywords.number }],\n min: 3,\n max: 10,\n },\n },\n },\n {\n name: 'arrayRegex',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.matches, args: '^[a-zA-Z0-9]{1,13}$' }],\n min: 3,\n max: 10,\n },\n },\n },\n {\n name: 'union',\n schema: {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n },\n {\n name: 'unionOne',\n schema: {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.string }],\n },\n },\n {\n name: 'catchall',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.ref,\n args: { name: 'Pet', $ref: '#component/schema/Pet', path: './Pet.ts', isImportable: true },\n },\n ],\n },\n },\n },\n {\n name: 'and',\n schema: {\n keyword: schemaKeywords.and,\n args: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n },\n {\n name: 'object',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.min, args: 2 }],\n address: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.nullable }, { keyword: schemaKeywords.describe, args: '\"Your address\"' }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectOptional',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.optional }, { keyword: schemaKeywords.min, args: 2 }],\n address: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.nullable }, { keyword: schemaKeywords.describe, args: '\"Your address\"' }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectArray',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n ids: [\n {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.matches, args: '^[a-zA-Z0-9]{1,13}$' }],\n min: 3,\n max: 10,\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectDates',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n dateTime: [{ keyword: schemaKeywords.datetime, args: { offset: true } }],\n date: [{ keyword: schemaKeywords.date, args: { type: 'string' } }],\n time: [{ keyword: schemaKeywords.time, args: { type: 'string' } }],\n nativeDate: [{ keyword: schemaKeywords.date, args: { type: 'date' } }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectAnd',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [\n { keyword: schemaKeywords.deprecated },\n { keyword: schemaKeywords.default, args: 'test' },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.string,\n },\n ],\n age: [\n { keyword: schemaKeywords.example, args: '2' },\n { keyword: schemaKeywords.default, args: 2 },\n {\n keyword: schemaKeywords.min,\n args: 3,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n address: [\n {\n keyword: schemaKeywords.and,\n args: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectEnum',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n version: [\n {\n keyword: schemaKeywords.schema,\n args: {\n format: 'string',\n type: 'string',\n },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n {\n keyword: schemaKeywords.min,\n args: 4,\n },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectObjectEnum',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n prop1: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n prop2: [\n {\n keyword: schemaKeywords.schema,\n args: { format: 'string', type: 'string' },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectArrayObject',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n ids: [\n {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n enum: [\n {\n keyword: schemaKeywords.schema,\n args: {\n format: 'string',\n type: 'string',\n },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n min: 3,\n max: 10,\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectEmpty',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [],\n },\n },\n },\n {\n name: 'default',\n schema: {\n keyword: schemaKeywords.default,\n },\n },\n {\n name: 'default',\n schema: {\n keyword: schemaKeywords.default,\n args: 'default',\n },\n },\n {\n name: 'blob',\n schema: {\n keyword: schemaKeywords.blob,\n },\n },\n {\n name: 'nullableAdditionalProperties',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.string,\n },\n {\n args: {\n format: undefined,\n type: schemaKeywords.string,\n },\n keyword: schemaKeywords.schema,\n },\n {\n keyword: schemaKeywords.nullable,\n },\n ],\n },\n },\n },\n]\n\nconst full: Array<{ name: string; schema: Schema[] }> = [\n {\n name: 'Upload',\n schema: [\n {\n keyword: schemaKeywords.blob,\n },\n ],\n },\n {\n name: 'PageSizeNumber',\n schema: [\n {\n keyword: schemaKeywords.number,\n },\n {\n keyword: schemaKeywords.default,\n args: 10,\n },\n ],\n },\n {\n name: 'PageSizeInteger',\n schema: [\n {\n keyword: schemaKeywords.integer,\n },\n {\n keyword: schemaKeywords.default,\n args: 10,\n },\n ],\n },\n {\n name: 'Object',\n schema: [\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [\n { keyword: schemaKeywords.deprecated },\n { keyword: schemaKeywords.default, args: 'test' },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.string,\n },\n ],\n age: [\n { keyword: schemaKeywords.example, args: '2' },\n { keyword: schemaKeywords.default, args: 2 },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n address: [\n {\n keyword: schemaKeywords.and,\n args: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n {\n name: 'Order',\n schema: [\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'object',\n },\n },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n status: [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'orderStatus',\n asConst: false,\n typeName: 'OrderStatus',\n items: [\n { name: 'Placed', value: 'placed', format: 'string' },\n { name: 'Approved', value: 'approved', format: 'string' },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n {\n name: 'nullableAdditionalProperties',\n schema: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.string,\n },\n {\n args: {\n format: undefined,\n type: schemaKeywords.string,\n },\n keyword: schemaKeywords.schema,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n },\n },\n ],\n },\n {\n name: 'Record',\n schema: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.integer,\n },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'integer',\n format: 'int32',\n },\n },\n {\n keyword: schemaKeywords.optional,\n },\n ],\n },\n },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'integer',\n format: 'int32',\n },\n },\n {\n keyword: schemaKeywords.optional,\n },\n ],\n },\n]\n\nexport const schemas = {\n basic,\n full,\n}\n"],"mappings":";;;AAEA,MAAMA,QAAiD;CACrD;EACE,MAAM;EACN,QAAQ,EACN,SAASC,oCAAe,KACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,QACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,QACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,QACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,QAAQ,MACT;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,OAAO,MACR;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,QAAQ,OACT;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,UACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,WACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA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ACD;MACE,MAAM;OACJ,QAAQ;OACR,MAAMA,oCAAe;OACtB;MACD,SAASA,oCAAe;MACzB;KACD,EACE,SAASA,oCAAe,UACzB;KACF;IACF;GACF;EACF;CACF;AAED,MAAMC,OAAkD;CACtD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASD,oCAAe,MACzB,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASA,oCAAe,QACzB,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;GACP,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASA,oCAAe,SACzB,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;GACP,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,EAAE,SAASA,oCAAe,UAAU;GACpC;IAAE,SAASA,oCAAe;IAAU,MAAM;IAAgB;GAC1D;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,YAAY;MACV,WAAW;OACT,EAAE,SAASA,oCAAe,YAAY;OACtC;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAQ;OACjD;QACE,SAASA,oCAAe;QACxB,MAAM;QACP;OACD,EACE,SAASA,oCAAe,QACzB;OACF;MACD,KAAK;OACH;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAK;OAC9C;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAG;OAC5C;QACE,SAASA,oCAAe;QACxB,MAAM;QACP;OACD,EACE,SAASA,oCAAe,QACzB;OACF;MACD,SAAS;OACP;QACE,SAASA,oCAAe;QACxB,MAAM,CAAC,EAAE,SAASA,oCAAe,QAAQ,EAAE,EAAE,SAASA,oCAAe,QAAQ,CAAC;QAC/E;OACD,EAAE,SAASA,oCAAe,UAAU;OACpC;QAAE,SAASA,oCAAe;QAAU,MAAM;QAAgB;OAC3D;MACF;KACD,sBAAsB,EAAE;KACzB;IACF;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN;GACE,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EACV,QAAQ,CACN;KACE,SAASA,oCAAe;KACxB,MAAM;MACJ,MAAM;MACN,SAAS;MACT,UAAU;MACV,OAAO,CACL;OAAE,MAAM;OAAU,OAAO;OAAU,QAAQ;OAAU,EACrD;OAAE,MAAM;OAAY,OAAO;OAAY,QAAQ;OAAU,CAC1D;MACF;KACF,CACF,EACF;IACD,sBAAsB,EAAE;IACzB;GACF,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN;GACE,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EAAE;IACd,sBAAsB;KACpB,EACE,SAASA,oCAAe,QACzB;KACD;MACE,MAAM;OACJ,QAAQ;OACR,MAAMA,oCAAe;OACtB;MACD,SAASA,oCAAe;MACzB;KACD,EACE,SAASA,oCAAe,QACzB;KACF;IACF;GACF,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,YAAY,EAAE;KACd,sBAAsB;MACpB,EACE,SAASA,oCAAe,SACzB;MACD;OACE,SAASA,oCAAe;OACxB,MAAM;QACJ,MAAM;QACN,QAAQ;QACT;OACF;MACD,EACE,SAASA,oCAAe,UACzB;MACF;KACF;IACF;GACD;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,MAAM;KACN,QAAQ;KACT;IACF;GACD,EACE,SAASA,oCAAe,UACzB;GACF;EACF;CACF;AAED,MAAa,UAAU;CACrB;CACA;CACD"}
1
+ {"version":3,"file":"mocks.cjs","names":["basic: Array<{ name: string; schema: Schema }>","schemaKeywords","full: Array<{ name: string; schema: Schema[] }>"],"sources":["../src/mocks/schemas.ts"],"sourcesContent":["import { type Schema, schemaKeywords } from '../SchemaMapper'\n\nconst basic: Array<{ name: string; schema: Schema }> = [\n {\n name: 'any',\n schema: {\n keyword: schemaKeywords.any,\n },\n },\n {\n name: 'unknown',\n schema: {\n keyword: schemaKeywords.unknown,\n },\n },\n {\n name: 'string',\n schema: {\n keyword: schemaKeywords.string,\n },\n },\n {\n name: 'number',\n schema: {\n keyword: schemaKeywords.number,\n },\n },\n {\n name: 'integer',\n schema: {\n keyword: schemaKeywords.integer,\n },\n },\n {\n name: 'boolean',\n schema: {\n keyword: schemaKeywords.boolean,\n },\n },\n {\n name: 'primitiveDate',\n schema: {\n keyword: schemaKeywords.date,\n args: {\n type: 'date',\n },\n },\n },\n {\n name: 'date',\n schema: {\n keyword: schemaKeywords.date,\n args: {\n type: 'string',\n },\n },\n },\n {\n name: 'time',\n schema: {\n keyword: schemaKeywords.time,\n args: {\n type: 'string',\n },\n },\n },\n {\n name: 'stringOffset',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n offset: true,\n },\n },\n },\n {\n name: 'stringLocal',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n local: true,\n },\n },\n },\n {\n name: 'datetime',\n schema: {\n keyword: schemaKeywords.datetime,\n args: {\n offset: false,\n },\n },\n },\n {\n name: 'nullable',\n schema: {\n keyword: schemaKeywords.nullable,\n },\n },\n {\n name: 'undefined',\n schema: {\n keyword: schemaKeywords.undefined,\n },\n },\n {\n name: 'min',\n schema: {\n keyword: schemaKeywords.min,\n args: 2,\n },\n },\n {\n name: 'max',\n schema: {\n keyword: schemaKeywords.max,\n args: 2,\n },\n },\n {\n name: 'matchesReg',\n schema: {\n keyword: schemaKeywords.matches,\n args: '/node_modules/', // pure regexp\n },\n },\n {\n name: 'matches',\n schema: {\n keyword: schemaKeywords.matches,\n args: '^[A-Z]{2}$',\n },\n },\n {\n name: 'const',\n schema: {\n keyword: schemaKeywords.const,\n args: {\n name: '',\n value: '',\n format: schemaKeywords.string,\n },\n },\n },\n {\n name: 'ref',\n schema: {\n keyword: schemaKeywords.ref,\n args: {\n $ref: '$ref',\n name: 'Pet',\n path: './pet.ts',\n isImportable: true,\n },\n },\n },\n {\n name: 'enum',\n schema: {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n },\n {\n name: 'enumLiteralBoolean',\n schema: {\n keyword: schemaKeywords.enum,\n args: {\n asConst: true,\n items: [\n {\n format: 'boolean',\n name: 'true',\n value: true,\n },\n {\n format: 'boolean',\n name: 'false',\n value: false,\n },\n ],\n name: 'PetEnumLiteral',\n typeName: 'PetEnumLiteral',\n },\n },\n },\n {\n name: 'tuple',\n schema: {\n keyword: schemaKeywords.tuple,\n args: {\n items: [],\n },\n },\n },\n {\n name: 'tupleMulti',\n schema: {\n keyword: schemaKeywords.tuple,\n args: {\n items: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n },\n },\n {\n name: 'array',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.number }, { keyword: schemaKeywords.string }],\n },\n ],\n },\n },\n },\n {\n name: 'arrayEmpty',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [],\n },\n },\n },\n {\n name: 'arrayRef',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.ref,\n\n args: { name: 'Pet', $ref: '#component/schema/Pet', path: './pet.ts', isImportable: true },\n },\n ],\n },\n },\n },\n {\n name: 'arrayAdvanced',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.min, args: 1 }, { keyword: schemaKeywords.max, args: 10 }, { keyword: schemaKeywords.number }],\n min: 3,\n max: 10,\n },\n },\n },\n {\n name: 'arrayRegex',\n schema: {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.matches, args: '^[a-zA-Z0-9]{1,13}$' }],\n min: 3,\n max: 10,\n },\n },\n },\n {\n name: 'union',\n schema: {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.number }],\n },\n },\n {\n name: 'unionOne',\n schema: {\n keyword: schemaKeywords.union,\n args: [{ keyword: schemaKeywords.string }],\n },\n },\n {\n name: 'catchall',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.ref,\n args: { name: 'Pet', $ref: '#component/schema/Pet', path: './Pet.ts', isImportable: true },\n },\n ],\n },\n },\n },\n {\n name: 'and',\n schema: {\n keyword: schemaKeywords.and,\n args: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n street: [{ keyword: schemaKeywords.string }],\n },\n additionalProperties: [],\n },\n },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n city: [{ keyword: schemaKeywords.string }],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n },\n {\n name: 'object',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.min, args: 2 }],\n address: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.nullable }, { keyword: schemaKeywords.describe, args: '\"Your address\"' }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectOptional',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.optional }, { keyword: schemaKeywords.min, args: 2 }],\n address: [{ keyword: schemaKeywords.string }, { keyword: schemaKeywords.nullable }, { keyword: schemaKeywords.describe, args: '\"Your address\"' }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectArray',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n ids: [\n {\n keyword: schemaKeywords.array,\n args: {\n items: [{ keyword: schemaKeywords.matches, args: '^[a-zA-Z0-9]{1,13}$' }],\n min: 3,\n max: 10,\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectDates',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n dateTime: [{ keyword: schemaKeywords.datetime, args: { offset: true } }],\n date: [{ keyword: schemaKeywords.date, args: { type: 'string' } }],\n time: [{ keyword: schemaKeywords.time, args: { type: 'string' } }],\n nativeDate: [{ keyword: schemaKeywords.date, args: { type: 'date' } }],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectAnd',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [\n { keyword: schemaKeywords.deprecated },\n { keyword: schemaKeywords.default, args: 'test' },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.string,\n },\n ],\n age: [\n { keyword: schemaKeywords.example, args: '2' },\n { keyword: schemaKeywords.default, args: 2 },\n {\n keyword: schemaKeywords.min,\n args: 3,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n address: [\n {\n keyword: schemaKeywords.and,\n args: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n street: [{ keyword: schemaKeywords.string }],\n },\n additionalProperties: [],\n },\n },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n city: [{ keyword: schemaKeywords.string }],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectEnum',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n version: [\n {\n keyword: schemaKeywords.schema,\n args: {\n format: 'string',\n type: 'string',\n },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n {\n keyword: schemaKeywords.min,\n args: 4,\n },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectObjectEnum',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n prop1: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n prop2: [\n {\n keyword: schemaKeywords.schema,\n args: { format: 'string', type: 'string' },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectArrayObject',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n ids: [\n {\n keyword: schemaKeywords.array,\n args: {\n items: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n enum: [\n {\n keyword: schemaKeywords.schema,\n args: {\n format: 'string',\n type: 'string',\n },\n },\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'enum',\n typeName: 'Enum',\n asConst: false,\n items: [\n { name: 'A', value: 'A', format: schemaKeywords.string },\n { name: 'B', value: 'B', format: schemaKeywords.string },\n { name: 'C', value: 'C', format: schemaKeywords.string },\n { name: 2, value: 2, format: schemaKeywords.number },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n min: 3,\n max: 10,\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n },\n {\n name: 'objectEmpty',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [],\n },\n },\n },\n {\n name: 'default',\n schema: {\n keyword: schemaKeywords.default,\n },\n },\n {\n name: 'default',\n schema: {\n keyword: schemaKeywords.default,\n args: 'default',\n },\n },\n {\n name: 'blob',\n schema: {\n keyword: schemaKeywords.blob,\n },\n },\n {\n name: 'nullableAdditionalProperties',\n schema: {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.string,\n },\n {\n args: {\n format: undefined,\n type: schemaKeywords.string,\n },\n keyword: schemaKeywords.schema,\n },\n {\n keyword: schemaKeywords.nullable,\n },\n ],\n },\n },\n },\n]\n\nconst full: Array<{ name: string; schema: Schema[] }> = [\n {\n name: 'Upload',\n schema: [\n {\n keyword: schemaKeywords.blob,\n },\n ],\n },\n {\n name: 'PageSizeNumber',\n schema: [\n {\n keyword: schemaKeywords.number,\n },\n {\n keyword: schemaKeywords.default,\n args: 10,\n },\n ],\n },\n {\n name: 'PageSizeInteger',\n schema: [\n {\n keyword: schemaKeywords.integer,\n },\n {\n keyword: schemaKeywords.default,\n args: 10,\n },\n ],\n },\n {\n name: 'Object',\n schema: [\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n firstName: [\n { keyword: schemaKeywords.deprecated },\n { keyword: schemaKeywords.default, args: 'test' },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.string,\n },\n ],\n age: [\n { keyword: schemaKeywords.example, args: '2' },\n { keyword: schemaKeywords.default, args: 2 },\n {\n keyword: schemaKeywords.min,\n args: 2,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n address: [\n {\n keyword: schemaKeywords.and,\n args: [\n { keyword: schemaKeywords.string },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n street: [{ keyword: schemaKeywords.string }],\n city: [{ keyword: schemaKeywords.string }],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n { keyword: schemaKeywords.nullable },\n { keyword: schemaKeywords.describe, args: 'Your address' },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n {\n name: 'Order',\n schema: [\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'object',\n },\n },\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {\n status: [\n {\n keyword: schemaKeywords.enum,\n args: {\n name: 'orderStatus',\n asConst: false,\n typeName: 'OrderStatus',\n items: [\n { name: 'Placed', value: 'placed', format: 'string' },\n { name: 'Approved', value: 'approved', format: 'string' },\n ],\n },\n },\n ],\n },\n additionalProperties: [],\n },\n },\n ],\n },\n {\n name: 'nullableAdditionalProperties',\n schema: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.string,\n },\n {\n args: {\n format: undefined,\n type: schemaKeywords.string,\n },\n keyword: schemaKeywords.schema,\n },\n {\n keyword: schemaKeywords.number,\n },\n ],\n },\n },\n ],\n },\n {\n name: 'Record',\n schema: [\n {\n keyword: schemaKeywords.object,\n args: {\n properties: {},\n additionalProperties: [\n {\n keyword: schemaKeywords.integer,\n },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'integer',\n format: 'int32',\n },\n },\n {\n keyword: schemaKeywords.optional,\n },\n ],\n },\n },\n {\n keyword: schemaKeywords.schema,\n args: {\n type: 'integer',\n format: 'int32',\n },\n },\n {\n keyword: schemaKeywords.optional,\n },\n ],\n },\n]\n\nexport const schemas = {\n basic,\n full,\n}\n"],"mappings":";;;AAEA,MAAMA,QAAiD;CACrD;EACE,MAAM;EACN,QAAQ,EACN,SAASC,oCAAe,KACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,QACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,QACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,QACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,QAAQ,MACT;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,OAAO,MACR;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM,EACJ,QAAQ,OACT;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,UACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,WACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA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;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EAAE;IACd,sBAAsB,EAAE;IACzB;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,SACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;GACP;EACF;CACD;EACE,MAAM;EACN,QAAQ,EACN,SAASA,oCAAe,MACzB;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EAAE;IACd,sBAAsB;KACpB,EACE,SAASA,oCAAe,QACzB;KACD;MACE,MAAM;OACJ,QAAQ;OACR,MAAMA,oCAAe;OACtB;MACD,SAASA,oCAAe;MACzB;KACD,EACE,SAASA,oCAAe,UACzB;KACF;IACF;GACF;EACF;CACF;AAED,MAAMC,OAAkD;CACtD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASD,oCAAe,MACzB,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASA,oCAAe,QACzB,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;GACP,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN,EACE,SAASA,oCAAe,SACzB,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;GACP,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN,EAAE,SAASA,oCAAe,UAAU;GACpC;IAAE,SAASA,oCAAe;IAAU,MAAM;IAAgB;GAC1D;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,YAAY;MACV,WAAW;OACT,EAAE,SAASA,oCAAe,YAAY;OACtC;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAQ;OACjD;QACE,SAASA,oCAAe;QACxB,MAAM;QACP;OACD,EACE,SAASA,oCAAe,QACzB;OACF;MACD,KAAK;OACH;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAK;OAC9C;QAAE,SAASA,oCAAe;QAAS,MAAM;QAAG;OAC5C;QACE,SAASA,oCAAe;QACxB,MAAM;QACP;OACD,EACE,SAASA,oCAAe,QACzB;OACF;MACD,SAAS;OACP;QACE,SAASA,oCAAe;QACxB,MAAM,CACJ,EAAE,SAASA,oCAAe,QAAQ,EAClC;SACE,SAASA,oCAAe;SACxB,MAAM;UACJ,YAAY;WACV,QAAQ,CAAC,EAAE,SAASA,oCAAe,QAAQ,CAAC;WAC5C,MAAM,CAAC,EAAE,SAASA,oCAAe,QAAQ,CAAC;WAC3C;UACD,sBAAsB,EAAE;UACzB;SACF,CACF;QACF;OACD,EAAE,SAASA,oCAAe,UAAU;OACpC;QAAE,SAASA,oCAAe;QAAU,MAAM;QAAgB;OAC3D;MACF;KACD,sBAAsB,EAAE;KACzB;IACF;GACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN;GACE,SAASA,oCAAe;GACxB,MAAM,EACJ,MAAM,UACP;GACF,EACD;GACE,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EACV,QAAQ,CACN;KACE,SAASA,oCAAe;KACxB,MAAM;MACJ,MAAM;MACN,SAAS;MACT,UAAU;MACV,OAAO,CACL;OAAE,MAAM;OAAU,OAAO;OAAU,QAAQ;OAAU,EACrD;OAAE,MAAM;OAAY,OAAO;OAAY,QAAQ;OAAU,CAC1D;MACF;KACF,CACF,EACF;IACD,sBAAsB,EAAE;IACzB;GACF,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ,CACN;GACE,SAASA,oCAAe;GACxB,MAAM;IACJ,YAAY,EAAE;IACd,sBAAsB;KACpB,EACE,SAASA,oCAAe,QACzB;KACD;MACE,MAAM;OACJ,QAAQ;OACR,MAAMA,oCAAe;OACtB;MACD,SAASA,oCAAe;MACzB;KACD,EACE,SAASA,oCAAe,QACzB;KACF;IACF;GACF,CACF;EACF;CACD;EACE,MAAM;EACN,QAAQ;GACN;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,YAAY,EAAE;KACd,sBAAsB;MACpB,EACE,SAASA,oCAAe,SACzB;MACD;OACE,SAASA,oCAAe;OACxB,MAAM;QACJ,MAAM;QACN,QAAQ;QACT;OACF;MACD,EACE,SAASA,oCAAe,UACzB;MACF;KACF;IACF;GACD;IACE,SAASA,oCAAe;IACxB,MAAM;KACJ,MAAM;KACN,QAAQ;KACT;IACF;GACD,EACE,SAASA,oCAAe,UACzB;GACF;EACF;CACF;AAED,MAAa,UAAU;CACrB;CACA;CACD"}
package/dist/mocks.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as Schema } from "./SchemaMapper-DOSP3wgJ.cjs";
1
+ import { t as Schema } from "./SchemaMapper-Dfz9lGho.cjs";
2
2
 
3
3
  //#region src/mocks/schemas.d.ts
4
4
  declare const schemas: {
package/dist/mocks.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { t as Schema } from "./SchemaMapper-BSeOSE-y.js";
1
+ import { t as Schema } from "./SchemaMapper-CIK5L5DN.js";
2
2
 
3
3
  //#region src/mocks/schemas.d.ts
4
4
  declare const schemas: {