@kubb/plugin-ts 5.0.0-alpha.20 → 5.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Type-B6fo0gSk.js +120 -0
- package/dist/Type-B6fo0gSk.js.map +1 -0
- package/dist/Type-oFwUfkZv.cjs +131 -0
- package/dist/Type-oFwUfkZv.cjs.map +1 -0
- package/dist/builderTs-Cd3juc2G.cjs +120 -0
- package/dist/builderTs-Cd3juc2G.cjs.map +1 -0
- package/dist/builderTs-DausqHpc.js +116 -0
- package/dist/builderTs-DausqHpc.js.map +1 -0
- package/dist/builders.cjs +3 -0
- package/dist/builders.d.ts +8 -0
- package/dist/builders.js +2 -0
- package/dist/{casing-Cp-jbC_k.js → casing-BJHFg-zZ.js} +1 -1
- package/dist/{casing-Cp-jbC_k.js.map → casing-BJHFg-zZ.js.map} +1 -1
- package/dist/{casing-D2uQKLWS.cjs → casing-DHfdqpLi.cjs} +2 -39
- package/dist/{casing-D2uQKLWS.cjs.map → casing-DHfdqpLi.cjs.map} +1 -1
- package/dist/chunk-ByKO4r7w.cjs +38 -0
- package/dist/components.cjs +1 -1
- package/dist/components.d.ts +1 -2
- package/dist/components.js +1 -1
- package/dist/generators-ByK18qUn.js +551 -0
- package/dist/generators-ByK18qUn.js.map +1 -0
- package/dist/{generators-xHWQCNd9.cjs → generators-aSsiTfUO.cjs} +296 -293
- package/dist/generators-aSsiTfUO.cjs.map +1 -0
- package/dist/generators.cjs +2 -1
- package/dist/generators.d.ts +5 -2
- package/dist/generators.js +2 -2
- package/dist/index.cjs +38 -36
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +36 -35
- package/dist/index.js.map +1 -1
- package/dist/{Type-CMC7L-38.js → printerTs-BgZucv4T.js} +18 -130
- package/dist/printerTs-BgZucv4T.js.map +1 -0
- package/dist/{Type-B70QnSzH.cjs → printerTs-CFXc_LpP.cjs} +40 -133
- package/dist/printerTs-CFXc_LpP.cjs.map +1 -0
- package/dist/printers.cjs +3 -0
- package/dist/printers.d.ts +75 -0
- package/dist/printers.js +2 -0
- package/dist/{resolvers-DsKabI0F.js → resolverTsLegacy-DLl854-P.js} +8 -7
- package/dist/resolverTsLegacy-DLl854-P.js.map +1 -0
- package/dist/{resolvers-YIpeP5YD.cjs → resolverTsLegacy-sJ16Iqrl.cjs} +9 -7
- package/dist/resolverTsLegacy-sJ16Iqrl.cjs.map +1 -0
- package/dist/resolvers.cjs +3 -3
- package/dist/resolvers.d.ts +1 -1
- package/dist/resolvers.js +1 -1
- package/dist/{types-zqLMbIqZ.d.ts → types-BcyuFDn9.d.ts} +26 -22
- package/package.json +17 -5
- package/src/builders/builderTs.ts +92 -0
- package/src/builders/index.ts +1 -0
- package/src/components/Type.tsx +4 -6
- package/src/factory.ts +0 -32
- package/src/generators/index.ts +1 -0
- package/src/generators/typeGenerator.tsx +49 -140
- package/src/generators/typeGeneratorLegacy.tsx +345 -0
- package/src/index.ts +1 -1
- package/src/plugin.ts +15 -44
- package/src/presets.ts +10 -7
- package/src/printers/index.ts +1 -0
- package/src/{printer.ts → printers/printerTs.ts} +20 -16
- package/src/resolvers/resolverTs.ts +7 -4
- package/src/resolvers/resolverTsLegacy.ts +1 -1
- package/src/types.ts +39 -21
- package/dist/Type-B70QnSzH.cjs.map +0 -1
- package/dist/Type-CMC7L-38.js.map +0 -1
- package/dist/generators-BFkr7ecU.js +0 -556
- package/dist/generators-BFkr7ecU.js.map +0 -1
- package/dist/generators-xHWQCNd9.cjs.map +0 -1
- package/dist/resolvers-DsKabI0F.js.map +0 -1
- package/dist/resolvers-YIpeP5YD.cjs.map +0 -1
- package/src/generators/utils.ts +0 -308
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators-aSsiTfUO.cjs","names":["path","File","Type","builderTs","schemaTypes","ENUM_TYPES_WITH_KEY_SUFFIX","pascalCase","path","File","Type","resolverTsLegacy","schemaTypes","ENUM_TYPES_WITH_KEY_SUFFIX"],"sources":["../src/generators/typeGenerator.tsx","../src/generators/typeGeneratorLegacy.tsx"],"sourcesContent":["import path from 'node:path'\nimport { caseParams, composeTransformers, narrowSchema, schemaTypes, transform } from '@kubb/ast'\nimport type { SchemaNode } from '@kubb/ast/types'\nimport { defineGenerator, getMode } from '@kubb/core'\nimport { File } from '@kubb/react-fabric'\nimport { builderTs } from '../builders/builderTs.ts'\nimport { Type } from '../components/Type.tsx'\nimport { ENUM_TYPES_WITH_KEY_SUFFIX } from '../constants.ts'\nimport type { PluginTs } from '../types'\n\nexport const typeGenerator = defineGenerator<PluginTs>({\n name: 'typescript',\n type: 'react',\n Operation({ node, adapter, options, config }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, resolver, transformers = [] } = options\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n const file = resolver.resolveFile({ name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path }, { root, output, group })\n\n const params = caseParams(node.parameters, paramsCasing)\n\n function renderSchemaType({\n node: schemaNode,\n name,\n typedName,\n description,\n keysToOmit,\n }: {\n node: SchemaNode | null\n name: string\n typedName: string\n description?: string\n keysToOmit?: Array<string>\n }) {\n if (!schemaNode) {\n return null\n }\n\n const transformedNode = transform(schemaNode, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n <Type\n name={name}\n typedName={typedName}\n node={transformedNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n keysToOmit={keysToOmit}\n />\n </>\n )\n }\n\n const paramTypes = params.map((param) =>\n renderSchemaType({\n node: param.schema,\n name: resolver.resolveParamName(node, param),\n typedName: resolver.resolveParamTypedName(node, param),\n }),\n )\n\n const requestType = node.requestBody?.schema\n ? renderSchemaType({\n node: node.requestBody.schema,\n name: resolver.resolveDataName(node),\n typedName: resolver.resolveDataTypedName(node),\n description: node.requestBody.description ?? node.requestBody.schema.description,\n keysToOmit: node.requestBody.keysToOmit,\n })\n : null\n\n const responseTypes = node.responses.map((res) =>\n renderSchemaType({\n node: res.schema,\n name: resolver.resolveResponseStatusName(node, res.statusCode),\n typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n description: res.description,\n keysToOmit: res.keysToOmit,\n }),\n )\n\n const dataType = renderSchemaType({\n node: builderTs.buildData({ node: { ...node, parameters: params }, resolver }),\n name: resolver.resolveRequestConfigName(node),\n typedName: resolver.resolveRequestConfigTypedName(node),\n })\n\n const responsesType = renderSchemaType({\n node: builderTs.buildResponses({ node, resolver }),\n name: resolver.resolveResponsesName(node),\n typedName: resolver.resolveResponsesTypedName(node),\n })\n\n const responseType = renderSchemaType({\n node: builderTs.buildResponseUnion({ node, resolver }),\n name: resolver.resolveResponseName(node),\n typedName: resolver.resolveResponseTypedName(node),\n description: 'Union of all possible responses',\n })\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={resolver.resolveBanner(adapter.rootNode, { output, config })}\n footer={resolver.resolveFooter(adapter.rootNode, { output, config })}\n >\n {paramTypes}\n {responseTypes}\n {requestType}\n {dataType}\n {responsesType}\n {responseType}\n </File>\n )\n },\n Schema({ node, adapter, options, config }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, resolver, transformers = [] } = options\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n if (!node.name) {\n return\n }\n\n const transformedNode = transform(node, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,\n }))\n\n const isEnumSchema = !!narrowSchema(node, schemaTypes.enum)\n\n const typedName = ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyTypedName(node) : resolver.resolveTypedName(node.name)\n\n const type = {\n name: resolver.resolveName(node.name),\n typedName,\n file: resolver.resolveFile({ name: node.name, extname: '.ts' }, { root, output, group }),\n } as const\n\n return (\n <File\n baseName={type.file.baseName}\n path={type.file.path}\n meta={type.file.meta}\n banner={resolver.resolveBanner(adapter.rootNode, { output, config })}\n footer={resolver.resolveFooter(adapter.rootNode, { output, config })}\n >\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n node={transformedNode}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n />\n </File>\n )\n },\n})\n","import path from 'node:path'\nimport { pascalCase } from '@internals/utils'\nimport { caseParams, composeTransformers, createProperty, createSchema, narrowSchema, schemaTypes, transform } from '@kubb/ast'\nimport type { OperationNode, ParameterNode, SchemaNode } from '@kubb/ast/types'\nimport { defineGenerator, getMode } from '@kubb/core'\nimport { File } from '@kubb/react-fabric'\nimport { Type } from '../components/Type.tsx'\nimport { ENUM_TYPES_WITH_KEY_SUFFIX } from '../constants.ts'\nimport { resolverTsLegacy } from '../resolvers/resolverTsLegacy.ts'\nimport type { PluginTs, ResolverTs } from '../types'\n\ntype BuildGroupedParamsSchemaOptions = {\n params: Array<ParameterNode>\n parentName?: string\n}\n\nfunction buildGroupedParamsSchema({ params, parentName }: BuildGroupedParamsSchemaOptions): SchemaNode {\n return createSchema({\n type: 'object',\n properties: params.map((param) => {\n let schema = param.schema\n if (narrowSchema(schema, 'enum') && !schema.name && parentName) {\n schema = { ...schema, name: pascalCase([parentName, param.name, 'enum'].join(' ')) }\n }\n return createProperty({\n name: param.name,\n required: param.required,\n schema,\n })\n }),\n })\n}\n\ntype BuildOperationSchemaOptions = {\n node: OperationNode\n resolver: ResolverTs\n}\n\nfunction buildLegacyResponsesSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode | null {\n const isGet = node.method.toLowerCase() === 'get'\n const successResponses = node.responses.filter((res) => {\n const code = Number(res.statusCode)\n return !Number.isNaN(code) && code >= 200 && code < 300\n })\n const errorResponses = node.responses.filter((res) => res.statusCode === 'default' || Number(res.statusCode) >= 400)\n\n const responseSchema =\n successResponses.length > 0\n ? successResponses.length === 1\n ? createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, successResponses[0]!.statusCode) })\n : createSchema({\n type: 'union',\n members: successResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n : createSchema({ type: 'any' })\n\n const errorsSchema =\n errorResponses.length > 0\n ? errorResponses.length === 1\n ? createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, errorResponses[0]!.statusCode) })\n : createSchema({\n type: 'union',\n members: errorResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n : createSchema({ type: 'any' })\n\n const properties = [createProperty({ name: 'Response', required: true, schema: responseSchema })]\n\n if (!isGet && node.requestBody?.schema) {\n properties.push(\n createProperty({\n name: 'Request',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveDataTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'query') && resolver.resolveQueryParamsTypedName) {\n properties.push(\n createProperty({\n name: 'QueryParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveQueryParamsTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'path') && resolver.resolvePathParamsTypedName) {\n properties.push(\n createProperty({\n name: 'PathParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolvePathParamsTypedName(node) }),\n }),\n )\n }\n\n if (node.parameters.some((p) => p.in === 'header') && resolver.resolveHeaderParamsTypedName) {\n properties.push(\n createProperty({\n name: 'HeaderParams',\n required: true,\n schema: createSchema({ type: 'ref', name: resolver.resolveHeaderParamsTypedName(node) }),\n }),\n )\n }\n\n properties.push(createProperty({ name: 'Errors', required: true, schema: errorsSchema }))\n\n return createSchema({ type: 'object', properties })\n}\n\nfunction buildLegacyResponseUnionSchemaNode({ node, resolver }: BuildOperationSchemaOptions): SchemaNode {\n const successResponses = node.responses.filter((res) => {\n const code = Number(res.statusCode)\n return !Number.isNaN(code) && code >= 200 && code < 300\n })\n\n if (successResponses.length === 0) {\n return createSchema({ type: 'any' })\n }\n\n if (successResponses.length === 1) {\n return createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, successResponses[0]!.statusCode) })\n }\n\n return createSchema({\n type: 'union',\n members: successResponses.map((res) => createSchema({ type: 'ref', name: resolver.resolveResponseStatusTypedName(node, res.statusCode) })),\n })\n}\n\nfunction nameUnnamedEnums(node: SchemaNode, parentName: string): SchemaNode {\n return transform(node, {\n schema(n) {\n const enumNode = narrowSchema(n, 'enum')\n if (enumNode && !enumNode.name) {\n return { ...enumNode, name: pascalCase([parentName, 'enum'].join(' ')) }\n }\n return undefined\n },\n property(p) {\n const enumNode = narrowSchema(p.schema, 'enum')\n if (enumNode && !enumNode.name) {\n return {\n ...p,\n schema: { ...enumNode, name: pascalCase([parentName, p.name, 'enum'].join(' ')) },\n }\n }\n return undefined\n },\n })\n}\n\nexport const typeGeneratorLegacy = defineGenerator<PluginTs>({\n name: 'typescript-legacy',\n type: 'react',\n Operation({ node, adapter, options, config }) {\n const { enumType, enumKeyCasing, optionalType, arrayType, syntaxType, paramsCasing, group, output, resolver, transformers = [] } = options\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n const file = resolver.resolveFile({ name: node.operationId, extname: '.ts', tag: node.tags[0] ?? 'default', path: node.path }, { root, output, group })\n const params = caseParams(node.parameters, paramsCasing)\n\n function renderSchemaType({\n node: schemaNode,\n name,\n typedName,\n description,\n keysToOmit,\n }: {\n node: SchemaNode | null\n name: string\n typedName: string\n description?: string\n keysToOmit?: Array<string>\n }) {\n if (!schemaNode) {\n return null\n }\n\n const transformedNode = transform(schemaNode, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,\n }))\n\n return (\n <>\n {mode === 'split' &&\n imports.map((imp) => <File.Import key={[name, imp.path, imp.isTypeOnly].join('-')} root={file.path} path={imp.path} name={imp.name} isTypeOnly />)}\n <Type\n name={name}\n typedName={typedName}\n node={transformedNode}\n description={description}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n keysToOmit={keysToOmit}\n />\n </>\n )\n }\n\n const pathParams = params.filter((p) => p.in === 'path')\n const queryParams = params.filter((p) => p.in === 'query')\n const headerParams = params.filter((p) => p.in === 'header')\n\n const responseTypes = node.responses.map((res) => {\n const responseName = resolver.resolveResponseStatusName(node, res.statusCode)\n const baseResponseName = resolverTsLegacy.resolveResponseStatusName(node, res.statusCode)\n\n return renderSchemaType({\n node: res.schema ? nameUnnamedEnums(res.schema, baseResponseName) : res.schema,\n name: responseName,\n typedName: resolver.resolveResponseStatusTypedName(node, res.statusCode),\n description: res.description,\n keysToOmit: res.keysToOmit,\n })\n })\n\n const requestType = node.requestBody?.schema\n ? renderSchemaType({\n node: nameUnnamedEnums(node.requestBody.schema, resolverTsLegacy.resolveDataName(node)),\n name: resolver.resolveDataName(node),\n typedName: resolver.resolveDataTypedName(node),\n description: node.requestBody.description ?? node.requestBody.schema.description,\n keysToOmit: node.requestBody.keysToOmit,\n })\n : null\n\n const legacyParamTypes = [\n pathParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: pathParams, parentName: resolverTsLegacy.resolvePathParamsName!(node) }),\n name: resolver.resolvePathParamsName!(node),\n typedName: resolver.resolvePathParamsTypedName!(node),\n })\n : null,\n queryParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: queryParams, parentName: resolverTsLegacy.resolveQueryParamsName!(node) }),\n name: resolver.resolveQueryParamsName!(node),\n typedName: resolver.resolveQueryParamsTypedName!(node),\n })\n : null,\n headerParams.length > 0\n ? renderSchemaType({\n node: buildGroupedParamsSchema({ params: headerParams, parentName: resolverTsLegacy.resolveHeaderParamsName!(node) }),\n name: resolver.resolveHeaderParamsName!(node),\n typedName: resolver.resolveHeaderParamsTypedName!(node),\n })\n : null,\n ]\n\n const legacyResponsesType = renderSchemaType({\n node: buildLegacyResponsesSchemaNode({ node, resolver }),\n name: resolver.resolveResponsesName(node),\n typedName: resolver.resolveResponsesTypedName(node),\n })\n\n const legacyResponseType = renderSchemaType({\n node: buildLegacyResponseUnionSchemaNode({ node, resolver }),\n name: resolver.resolveResponseName(node),\n typedName: resolver.resolveResponseTypedName(node),\n })\n\n return (\n <File\n baseName={file.baseName}\n path={file.path}\n meta={file.meta}\n banner={resolver.resolveBanner(adapter.rootNode, { output, config })}\n footer={resolver.resolveFooter(adapter.rootNode, { output, config })}\n >\n {legacyParamTypes}\n {responseTypes}\n {requestType}\n {legacyResponseType}\n {legacyResponsesType}\n </File>\n )\n },\n Schema({ node, adapter, options, config }) {\n const { enumType, enumKeyCasing, syntaxType, optionalType, arrayType, output, group, resolver, transformers = [] } = options\n\n const root = path.resolve(config.root, config.output.path)\n const mode = getMode(path.resolve(root, output.path))\n\n if (!node.name) {\n return\n }\n\n const transformedNode = transform(node, composeTransformers(...transformers))\n\n const imports = adapter.getImports(transformedNode, (schemaName) => ({\n name: resolver.default(schemaName, 'type'),\n path: resolver.resolveFile({ name: schemaName, extname: '.ts' }, { root, output, group }).path,\n }))\n\n const isEnumSchema = !!narrowSchema(node, schemaTypes.enum)\n\n const typedName = ENUM_TYPES_WITH_KEY_SUFFIX.has(enumType) && isEnumSchema ? resolver.resolveEnumKeyTypedName(node) : resolver.resolveTypedName(node.name)\n\n const type = {\n name: resolver.resolveName(node.name),\n typedName,\n file: resolver.resolveFile({ name: node.name, extname: '.ts' }, { root, output, group }),\n } as const\n\n return (\n <File\n baseName={type.file.baseName}\n path={type.file.path}\n meta={type.file.meta}\n banner={resolver.resolveBanner(adapter.rootNode, { output, config })}\n footer={resolver.resolveFooter(adapter.rootNode, { output, config })}\n >\n {mode === 'split' &&\n imports.map((imp) => (\n <File.Import key={[node.name, imp.path, imp.isTypeOnly].join('-')} root={type.file.path} path={imp.path} name={imp.name} isTypeOnly />\n ))}\n <Type\n name={type.name}\n typedName={type.typedName}\n node={transformedNode}\n enumType={enumType}\n enumKeyCasing={enumKeyCasing}\n optionalType={optionalType}\n arrayType={arrayType}\n syntaxType={syntaxType}\n resolver={resolver}\n />\n </File>\n )\n },\n})\n"],"mappings":"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"}
|
package/dist/generators.cjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_generators = require("./generators-
|
|
2
|
+
const require_generators = require("./generators-aSsiTfUO.cjs");
|
|
3
3
|
exports.typeGenerator = require_generators.typeGenerator;
|
|
4
|
+
exports.typeGeneratorLegacy = require_generators.typeGeneratorLegacy;
|
package/dist/generators.d.ts
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { t as __name } from "./chunk--u3MIqq1.js";
|
|
2
|
-
import {
|
|
2
|
+
import { r as PluginTs } from "./types-BcyuFDn9.js";
|
|
3
3
|
import * as _kubb_core0 from "@kubb/core";
|
|
4
4
|
|
|
5
5
|
//#region src/generators/typeGenerator.d.ts
|
|
6
6
|
declare const typeGenerator: _kubb_core0.ReactGeneratorV2<PluginTs>;
|
|
7
7
|
//#endregion
|
|
8
|
-
|
|
8
|
+
//#region src/generators/typeGeneratorLegacy.d.ts
|
|
9
|
+
declare const typeGeneratorLegacy: _kubb_core0.ReactGeneratorV2<PluginTs>;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { typeGenerator, typeGeneratorLegacy };
|
|
9
12
|
//# sourceMappingURL=generators.d.ts.map
|
package/dist/generators.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { typeGenerator };
|
|
1
|
+
import { n as typeGenerator, t as typeGeneratorLegacy } from "./generators-ByK18qUn.js";
|
|
2
|
+
export { typeGenerator, typeGeneratorLegacy };
|
package/dist/index.cjs
CHANGED
|
@@ -1,22 +1,29 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
const require_generators = require("./generators-
|
|
4
|
-
const
|
|
2
|
+
const require_chunk = require("./chunk-ByKO4r7w.cjs");
|
|
3
|
+
const require_generators = require("./generators-aSsiTfUO.cjs");
|
|
4
|
+
const require_resolverTsLegacy = require("./resolverTsLegacy-sJ16Iqrl.cjs");
|
|
5
5
|
let node_path = require("node:path");
|
|
6
|
-
node_path =
|
|
6
|
+
node_path = require_chunk.__toESM(node_path);
|
|
7
7
|
let _kubb_ast = require("@kubb/ast");
|
|
8
8
|
let _kubb_core = require("@kubb/core");
|
|
9
9
|
//#region src/presets.ts
|
|
10
10
|
const presets = (0, _kubb_core.definePresets)({
|
|
11
|
-
default: (0, _kubb_core.definePreset)("default", {
|
|
12
|
-
|
|
11
|
+
default: (0, _kubb_core.definePreset)("default", {
|
|
12
|
+
resolvers: [require_resolverTsLegacy.resolverTs],
|
|
13
|
+
generators: [require_generators.typeGenerator]
|
|
14
|
+
}),
|
|
15
|
+
kubbV4: (0, _kubb_core.definePreset)("kubbV4", {
|
|
16
|
+
resolvers: [require_resolverTsLegacy.resolverTsLegacy],
|
|
17
|
+
generators: [require_generators.typeGeneratorLegacy]
|
|
18
|
+
})
|
|
13
19
|
});
|
|
14
|
-
function getPreset(preset, { resolvers, transformers
|
|
20
|
+
function getPreset(preset, { resolvers, transformers, generators }) {
|
|
15
21
|
return (0, _kubb_core.getPreset)({
|
|
16
22
|
preset,
|
|
17
23
|
presets,
|
|
18
|
-
resolvers: [
|
|
19
|
-
transformers
|
|
24
|
+
resolvers: [require_resolverTsLegacy.resolverTs, ...resolvers ?? []],
|
|
25
|
+
transformers,
|
|
26
|
+
generators
|
|
20
27
|
});
|
|
21
28
|
}
|
|
22
29
|
//#endregion
|
|
@@ -26,49 +33,47 @@ const pluginTs = (0, _kubb_core.createPlugin)((options) => {
|
|
|
26
33
|
const { output = {
|
|
27
34
|
path: "types",
|
|
28
35
|
barrelType: "named"
|
|
29
|
-
}, group, exclude = [], include, override = [], enumType = "asConst", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing,
|
|
30
|
-
const {
|
|
36
|
+
}, group, exclude = [], include, override = [], enumType = "asConst", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing, compatibilityPreset = "default", resolvers: userResolvers = [], transformers: userTransformers = [], generators: userGenerators = [] } = options;
|
|
37
|
+
const { resolver, transformers, generators } = getPreset(compatibilityPreset, {
|
|
31
38
|
resolvers: userResolvers,
|
|
32
|
-
transformers: userTransformers
|
|
39
|
+
transformers: userTransformers,
|
|
40
|
+
generators: userGenerators
|
|
33
41
|
});
|
|
34
42
|
let resolveNameWarning = false;
|
|
43
|
+
let resolvePathWarning = false;
|
|
35
44
|
return {
|
|
36
45
|
name: pluginTsName,
|
|
37
46
|
options: {
|
|
38
47
|
output,
|
|
39
48
|
optionalType,
|
|
49
|
+
group,
|
|
40
50
|
arrayType,
|
|
41
51
|
enumType,
|
|
42
52
|
enumKeyCasing,
|
|
43
53
|
syntaxType,
|
|
44
|
-
group,
|
|
45
|
-
override,
|
|
46
54
|
paramsCasing,
|
|
47
|
-
compatibilityPreset,
|
|
48
|
-
baseResolver,
|
|
49
55
|
resolver,
|
|
50
56
|
transformers
|
|
51
57
|
},
|
|
52
58
|
resolvePath(baseName, pathMode, options) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
* when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
|
|
57
|
-
* Other plugins then need to call addOrAppend instead of just add from the fileManager class
|
|
58
|
-
*/
|
|
59
|
-
return node_path.default.resolve(root, output.path);
|
|
60
|
-
if (group && (options?.group?.path || options?.group?.tag)) {
|
|
61
|
-
const groupName = group?.name ? group.name : (ctx) => {
|
|
62
|
-
if (group?.type === "path") return `${ctx.group.split("/")[1]}`;
|
|
63
|
-
return `${require_casing.camelCase(ctx.group)}Controller`;
|
|
64
|
-
};
|
|
65
|
-
return node_path.default.resolve(root, output.path, groupName({ group: group.type === "path" ? options.group.path : options.group.tag }), baseName);
|
|
59
|
+
if (!resolvePathWarning) {
|
|
60
|
+
this.driver.events.emit("warn", "Do not use resolvePath for pluginTs, use resolverTs.resolvePath instead");
|
|
61
|
+
resolvePathWarning = true;
|
|
66
62
|
}
|
|
67
|
-
return
|
|
63
|
+
return resolver.resolvePath({
|
|
64
|
+
baseName,
|
|
65
|
+
pathMode,
|
|
66
|
+
tag: options?.group?.tag,
|
|
67
|
+
path: options?.group?.path
|
|
68
|
+
}, {
|
|
69
|
+
root: node_path.default.resolve(this.config.root, this.config.output.path),
|
|
70
|
+
output,
|
|
71
|
+
group
|
|
72
|
+
});
|
|
68
73
|
},
|
|
69
74
|
resolveName(name, type) {
|
|
70
75
|
if (!resolveNameWarning) {
|
|
71
|
-
this.driver.events.emit("warn", "Do not use resolveName for pluginTs, use resolverTs instead");
|
|
76
|
+
this.driver.events.emit("warn", "Do not use resolveName for pluginTs, use resolverTs.default instead");
|
|
72
77
|
resolveNameWarning = true;
|
|
73
78
|
}
|
|
74
79
|
return resolver.default(name, type);
|
|
@@ -76,7 +81,6 @@ const pluginTs = (0, _kubb_core.createPlugin)((options) => {
|
|
|
76
81
|
async install() {
|
|
77
82
|
const { config, fabric, plugin, adapter, rootNode, driver, openInStudio } = this;
|
|
78
83
|
const root = node_path.default.resolve(config.root, config.output.path);
|
|
79
|
-
const mode = (0, _kubb_core.getMode)(node_path.default.resolve(root, output.path));
|
|
80
84
|
if (!adapter) throw new Error("Plugin cannot work without adapter being set");
|
|
81
85
|
await openInStudio({ ast: true });
|
|
82
86
|
await (0, _kubb_ast.walk)(rootNode, {
|
|
@@ -98,8 +102,7 @@ const pluginTs = (0, _kubb_core.createPlugin)((options) => {
|
|
|
98
102
|
fabric,
|
|
99
103
|
Component: generator.Schema,
|
|
100
104
|
plugin,
|
|
101
|
-
driver
|
|
102
|
-
mode
|
|
105
|
+
driver
|
|
103
106
|
});
|
|
104
107
|
}
|
|
105
108
|
});
|
|
@@ -122,8 +125,7 @@ const pluginTs = (0, _kubb_core.createPlugin)((options) => {
|
|
|
122
125
|
fabric,
|
|
123
126
|
Component: generator.Operation,
|
|
124
127
|
plugin,
|
|
125
|
-
driver
|
|
126
|
-
mode
|
|
128
|
+
driver
|
|
127
129
|
});
|
|
128
130
|
}
|
|
129
131
|
});
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["resolverTs","
|
|
1
|
+
{"version":3,"file":"index.cjs","names":["resolverTs","typeGenerator","resolverTsLegacy","typeGeneratorLegacy","path"],"sources":["../src/presets.ts","../src/plugin.ts"],"sourcesContent":["import type { Visitor } from '@kubb/ast/types'\nimport { type CompatibilityPreset, definePreset, definePresets, type Generator, getPreset as getCorePreset } from '@kubb/core'\nimport { typeGenerator, typeGeneratorLegacy } from './generators/index.ts'\nimport { resolverTs, resolverTsLegacy } from './resolvers/index.ts'\nimport type { PluginTs, ResolverTs } from './types.ts'\n\nexport const presets = definePresets<ResolverTs>({\n default: definePreset('default', { resolvers: [resolverTs], generators: [typeGenerator] }),\n kubbV4: definePreset('kubbV4', { resolvers: [resolverTsLegacy], generators: [typeGeneratorLegacy] }),\n})\n\ntype GetPresetOptions = {\n resolvers: Array<ResolverTs>\n transformers: Array<Visitor>\n generators: Array<Generator<PluginTs>>\n}\n\nexport function getPreset(preset: CompatibilityPreset, { resolvers, transformers, generators }: GetPresetOptions) {\n return getCorePreset({\n preset,\n presets,\n resolvers: [resolverTs, ...(resolvers ?? [])],\n transformers,\n generators,\n })\n}\n","import path from 'node:path'\nimport { walk } from '@kubb/ast'\nimport { createPlugin, getBarrelFiles, renderOperation, renderSchema } from '@kubb/core'\nimport { getPreset } from './presets.ts'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumKeyCasing = 'none',\n optionalType = 'questionToken',\n arrayType = 'array',\n syntaxType = 'type',\n paramsCasing,\n compatibilityPreset = 'default',\n resolvers: userResolvers = [],\n transformers: userTransformers = [],\n generators: userGenerators = [],\n } = options\n\n const { resolver, transformers, generators } = getPreset(compatibilityPreset, {\n resolvers: userResolvers,\n transformers: userTransformers,\n generators: userGenerators,\n })\n\n let resolveNameWarning = false\n let resolvePathWarning = false\n\n return {\n name: pluginTsName,\n options: {\n output,\n optionalType,\n group,\n arrayType,\n enumType,\n enumKeyCasing,\n syntaxType,\n paramsCasing,\n resolver,\n transformers,\n },\n resolvePath(baseName, pathMode, options) {\n if (!resolvePathWarning) {\n this.driver.events.emit('warn', 'Do not use resolvePath for pluginTs, use resolverTs.resolvePath instead')\n resolvePathWarning = true\n }\n\n return resolver.resolvePath(\n { baseName, pathMode, tag: options?.group?.tag, path: options?.group?.path },\n { root: path.resolve(this.config.root, this.config.output.path), output, group },\n )\n },\n resolveName(name, type) {\n if (!resolveNameWarning) {\n this.driver.events.emit('warn', 'Do not use resolveName for pluginTs, use resolverTs.default instead')\n resolveNameWarning = true\n }\n\n return resolver.default(name, type)\n },\n async install() {\n const { config, fabric, plugin, adapter, rootNode, driver, openInStudio } = this\n\n const root = path.resolve(config.root, config.output.path)\n\n if (!adapter) {\n throw new Error('Plugin cannot work without adapter being set')\n }\n\n await openInStudio({ ast: true })\n\n await walk(rootNode, {\n depth: 'shallow',\n async schema(schemaNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolver.resolveOptions(schemaNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await renderSchema(schemaNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Schema,\n plugin,\n driver,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n async operation(operationNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolver.resolveOptions(operationNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await renderOperation(operationNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Operation,\n plugin,\n driver,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n })\n\n const barrelFiles = await getBarrelFiles(this.fabric.files, {\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginName: this.plugin.name,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as __name } from "./chunk--u3MIqq1.js";
|
|
2
|
-
import { n as
|
|
2
|
+
import { n as Options, r as PluginTs } from "./types-BcyuFDn9.js";
|
|
3
3
|
import * as _kubb_core0 from "@kubb/core";
|
|
4
4
|
|
|
5
5
|
//#region src/plugin.d.ts
|
|
6
6
|
declare const pluginTsName = "plugin-ts";
|
|
7
7
|
declare const pluginTs: (options?: Options | undefined) => _kubb_core0.UserPluginWithLifeCycle<PluginTs>;
|
|
8
8
|
//#endregion
|
|
9
|
-
export { type PluginTs,
|
|
9
|
+
export { type PluginTs, pluginTs, pluginTsName };
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,27 @@
|
|
|
1
1
|
import { t as __name } from "./chunk--u3MIqq1.js";
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as
|
|
4
|
-
import { n as resolverTs, t as resolverTsLegacy } from "./resolvers-DsKabI0F.js";
|
|
2
|
+
import { n as typeGenerator, t as typeGeneratorLegacy } from "./generators-ByK18qUn.js";
|
|
3
|
+
import { n as resolverTs, t as resolverTsLegacy } from "./resolverTsLegacy-DLl854-P.js";
|
|
5
4
|
import path from "node:path";
|
|
6
5
|
import { walk } from "@kubb/ast";
|
|
7
|
-
import { createPlugin, definePreset, definePresets, getBarrelFiles,
|
|
6
|
+
import { createPlugin, definePreset, definePresets, getBarrelFiles, getPreset, renderOperation, renderSchema } from "@kubb/core";
|
|
8
7
|
//#region src/presets.ts
|
|
9
8
|
const presets = definePresets({
|
|
10
|
-
default: definePreset("default", {
|
|
11
|
-
|
|
9
|
+
default: definePreset("default", {
|
|
10
|
+
resolvers: [resolverTs],
|
|
11
|
+
generators: [typeGenerator]
|
|
12
|
+
}),
|
|
13
|
+
kubbV4: definePreset("kubbV4", {
|
|
14
|
+
resolvers: [resolverTsLegacy],
|
|
15
|
+
generators: [typeGeneratorLegacy]
|
|
16
|
+
})
|
|
12
17
|
});
|
|
13
|
-
function getPreset$1(preset, { resolvers, transformers
|
|
18
|
+
function getPreset$1(preset, { resolvers, transformers, generators }) {
|
|
14
19
|
return getPreset({
|
|
15
20
|
preset,
|
|
16
21
|
presets,
|
|
17
22
|
resolvers: [resolverTs, ...resolvers ?? []],
|
|
18
|
-
transformers
|
|
23
|
+
transformers,
|
|
24
|
+
generators
|
|
19
25
|
});
|
|
20
26
|
}
|
|
21
27
|
__name(getPreset$1, "getPreset");
|
|
@@ -26,49 +32,47 @@ const pluginTs = createPlugin((options) => {
|
|
|
26
32
|
const { output = {
|
|
27
33
|
path: "types",
|
|
28
34
|
barrelType: "named"
|
|
29
|
-
}, group, exclude = [], include, override = [], enumType = "asConst", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing,
|
|
30
|
-
const {
|
|
35
|
+
}, group, exclude = [], include, override = [], enumType = "asConst", enumKeyCasing = "none", optionalType = "questionToken", arrayType = "array", syntaxType = "type", paramsCasing, compatibilityPreset = "default", resolvers: userResolvers = [], transformers: userTransformers = [], generators: userGenerators = [] } = options;
|
|
36
|
+
const { resolver, transformers, generators } = getPreset$1(compatibilityPreset, {
|
|
31
37
|
resolvers: userResolvers,
|
|
32
|
-
transformers: userTransformers
|
|
38
|
+
transformers: userTransformers,
|
|
39
|
+
generators: userGenerators
|
|
33
40
|
});
|
|
34
41
|
let resolveNameWarning = false;
|
|
42
|
+
let resolvePathWarning = false;
|
|
35
43
|
return {
|
|
36
44
|
name: pluginTsName,
|
|
37
45
|
options: {
|
|
38
46
|
output,
|
|
39
47
|
optionalType,
|
|
48
|
+
group,
|
|
40
49
|
arrayType,
|
|
41
50
|
enumType,
|
|
42
51
|
enumKeyCasing,
|
|
43
52
|
syntaxType,
|
|
44
|
-
group,
|
|
45
|
-
override,
|
|
46
53
|
paramsCasing,
|
|
47
|
-
compatibilityPreset,
|
|
48
|
-
baseResolver,
|
|
49
54
|
resolver,
|
|
50
55
|
transformers
|
|
51
56
|
},
|
|
52
57
|
resolvePath(baseName, pathMode, options) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
* when output is a file then we will always append to the same file(output file), see fileManager.addOrAppend
|
|
57
|
-
* Other plugins then need to call addOrAppend instead of just add from the fileManager class
|
|
58
|
-
*/
|
|
59
|
-
return path.resolve(root, output.path);
|
|
60
|
-
if (group && (options?.group?.path || options?.group?.tag)) {
|
|
61
|
-
const groupName = group?.name ? group.name : (ctx) => {
|
|
62
|
-
if (group?.type === "path") return `${ctx.group.split("/")[1]}`;
|
|
63
|
-
return `${camelCase(ctx.group)}Controller`;
|
|
64
|
-
};
|
|
65
|
-
return path.resolve(root, output.path, groupName({ group: group.type === "path" ? options.group.path : options.group.tag }), baseName);
|
|
58
|
+
if (!resolvePathWarning) {
|
|
59
|
+
this.driver.events.emit("warn", "Do not use resolvePath for pluginTs, use resolverTs.resolvePath instead");
|
|
60
|
+
resolvePathWarning = true;
|
|
66
61
|
}
|
|
67
|
-
return
|
|
62
|
+
return resolver.resolvePath({
|
|
63
|
+
baseName,
|
|
64
|
+
pathMode,
|
|
65
|
+
tag: options?.group?.tag,
|
|
66
|
+
path: options?.group?.path
|
|
67
|
+
}, {
|
|
68
|
+
root: path.resolve(this.config.root, this.config.output.path),
|
|
69
|
+
output,
|
|
70
|
+
group
|
|
71
|
+
});
|
|
68
72
|
},
|
|
69
73
|
resolveName(name, type) {
|
|
70
74
|
if (!resolveNameWarning) {
|
|
71
|
-
this.driver.events.emit("warn", "Do not use resolveName for pluginTs, use resolverTs instead");
|
|
75
|
+
this.driver.events.emit("warn", "Do not use resolveName for pluginTs, use resolverTs.default instead");
|
|
72
76
|
resolveNameWarning = true;
|
|
73
77
|
}
|
|
74
78
|
return resolver.default(name, type);
|
|
@@ -76,7 +80,6 @@ const pluginTs = createPlugin((options) => {
|
|
|
76
80
|
async install() {
|
|
77
81
|
const { config, fabric, plugin, adapter, rootNode, driver, openInStudio } = this;
|
|
78
82
|
const root = path.resolve(config.root, config.output.path);
|
|
79
|
-
const mode = getMode(path.resolve(root, output.path));
|
|
80
83
|
if (!adapter) throw new Error("Plugin cannot work without adapter being set");
|
|
81
84
|
await openInStudio({ ast: true });
|
|
82
85
|
await walk(rootNode, {
|
|
@@ -98,8 +101,7 @@ const pluginTs = createPlugin((options) => {
|
|
|
98
101
|
fabric,
|
|
99
102
|
Component: generator.Schema,
|
|
100
103
|
plugin,
|
|
101
|
-
driver
|
|
102
|
-
mode
|
|
104
|
+
driver
|
|
103
105
|
});
|
|
104
106
|
}
|
|
105
107
|
});
|
|
@@ -122,8 +124,7 @@ const pluginTs = createPlugin((options) => {
|
|
|
122
124
|
fabric,
|
|
123
125
|
Component: generator.Operation,
|
|
124
126
|
plugin,
|
|
125
|
-
driver
|
|
126
|
-
mode
|
|
127
|
+
driver
|
|
127
128
|
});
|
|
128
129
|
}
|
|
129
130
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["getPreset","getCorePreset","getPreset"],"sources":["../src/presets.ts","../src/plugin.ts"],"sourcesContent":["import type { Visitor } from '@kubb/ast/types'\nimport { type CompatibilityPreset, definePreset, definePresets, getPreset as getCorePreset } from '@kubb/core'\nimport { resolverTs, resolverTsLegacy } from './resolvers/index.ts'\nimport type { ResolverTs } from './types.ts'\n\nexport const presets = definePresets<ResolverTs>({\n default: definePreset('default', { resolvers: [resolverTs] }),\n kubbV4: definePreset('kubbV4', { resolvers: [resolverTsLegacy] }),\n})\n\ntype GetPresetOptions = {\n resolvers
|
|
1
|
+
{"version":3,"file":"index.js","names":["getPreset","getCorePreset","getPreset"],"sources":["../src/presets.ts","../src/plugin.ts"],"sourcesContent":["import type { Visitor } from '@kubb/ast/types'\nimport { type CompatibilityPreset, definePreset, definePresets, type Generator, getPreset as getCorePreset } from '@kubb/core'\nimport { typeGenerator, typeGeneratorLegacy } from './generators/index.ts'\nimport { resolverTs, resolverTsLegacy } from './resolvers/index.ts'\nimport type { PluginTs, ResolverTs } from './types.ts'\n\nexport const presets = definePresets<ResolverTs>({\n default: definePreset('default', { resolvers: [resolverTs], generators: [typeGenerator] }),\n kubbV4: definePreset('kubbV4', { resolvers: [resolverTsLegacy], generators: [typeGeneratorLegacy] }),\n})\n\ntype GetPresetOptions = {\n resolvers: Array<ResolverTs>\n transformers: Array<Visitor>\n generators: Array<Generator<PluginTs>>\n}\n\nexport function getPreset(preset: CompatibilityPreset, { resolvers, transformers, generators }: GetPresetOptions) {\n return getCorePreset({\n preset,\n presets,\n resolvers: [resolverTs, ...(resolvers ?? [])],\n transformers,\n generators,\n })\n}\n","import path from 'node:path'\nimport { walk } from '@kubb/ast'\nimport { createPlugin, getBarrelFiles, renderOperation, renderSchema } from '@kubb/core'\nimport { getPreset } from './presets.ts'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types', barrelType: 'named' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumKeyCasing = 'none',\n optionalType = 'questionToken',\n arrayType = 'array',\n syntaxType = 'type',\n paramsCasing,\n compatibilityPreset = 'default',\n resolvers: userResolvers = [],\n transformers: userTransformers = [],\n generators: userGenerators = [],\n } = options\n\n const { resolver, transformers, generators } = getPreset(compatibilityPreset, {\n resolvers: userResolvers,\n transformers: userTransformers,\n generators: userGenerators,\n })\n\n let resolveNameWarning = false\n let resolvePathWarning = false\n\n return {\n name: pluginTsName,\n options: {\n output,\n optionalType,\n group,\n arrayType,\n enumType,\n enumKeyCasing,\n syntaxType,\n paramsCasing,\n resolver,\n transformers,\n },\n resolvePath(baseName, pathMode, options) {\n if (!resolvePathWarning) {\n this.driver.events.emit('warn', 'Do not use resolvePath for pluginTs, use resolverTs.resolvePath instead')\n resolvePathWarning = true\n }\n\n return resolver.resolvePath(\n { baseName, pathMode, tag: options?.group?.tag, path: options?.group?.path },\n { root: path.resolve(this.config.root, this.config.output.path), output, group },\n )\n },\n resolveName(name, type) {\n if (!resolveNameWarning) {\n this.driver.events.emit('warn', 'Do not use resolveName for pluginTs, use resolverTs.default instead')\n resolveNameWarning = true\n }\n\n return resolver.default(name, type)\n },\n async install() {\n const { config, fabric, plugin, adapter, rootNode, driver, openInStudio } = this\n\n const root = path.resolve(config.root, config.output.path)\n\n if (!adapter) {\n throw new Error('Plugin cannot work without adapter being set')\n }\n\n await openInStudio({ ast: true })\n\n await walk(rootNode, {\n depth: 'shallow',\n async schema(schemaNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolver.resolveOptions(schemaNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await renderSchema(schemaNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Schema,\n plugin,\n driver,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n async operation(operationNode) {\n const writeTasks = generators.map(async (generator) => {\n if (generator.type === 'react' && generator.version === '2') {\n const options = resolver.resolveOptions(operationNode, { options: plugin.options, exclude, include, override })\n\n if (options === null) {\n return\n }\n\n await renderOperation(operationNode, {\n options,\n adapter,\n config,\n fabric,\n Component: generator.Operation,\n plugin,\n driver,\n })\n }\n })\n\n await Promise.all(writeTasks)\n },\n })\n\n const barrelFiles = await getBarrelFiles(this.fabric.files, {\n type: output.barrelType ?? 'named',\n root,\n output,\n meta: {\n pluginName: this.plugin.name,\n },\n })\n\n await this.upsertFile(...barrelFiles)\n },\n }\n})\n"],"mappings":"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"}
|