@kubb/swagger-ts 2.12.0 → 2.12.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.
- package/dist/{chunk-WZKUY426.cjs → chunk-BINFINBM.cjs} +56 -66
- package/dist/chunk-BINFINBM.cjs.map +1 -0
- package/dist/{chunk-ZNLTJZHN.js → chunk-BT6YU75U.js} +62 -72
- package/dist/chunk-BT6YU75U.js.map +1 -0
- package/dist/components.cjs +2 -2
- package/dist/components.d.cts +2 -5
- package/dist/components.d.ts +2 -5
- package/dist/components.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +9 -9
- package/src/OperationGenerator.tsx +16 -15
- package/src/SchemaGenerator.tsx +11 -11
- package/src/components/OasType.tsx +5 -3
- package/src/components/OperationSchema.tsx +6 -9
- package/src/plugin.ts +3 -2
- package/src/typeParser.ts +39 -51
- package/src/types.ts +1 -1
- package/dist/chunk-WZKUY426.cjs.map +0 -1
- package/dist/chunk-ZNLTJZHN.js.map +0 -1
@@ -27,8 +27,10 @@ function OasType({ name, typeName, Template: Template2 = defaultTemplates.defaul
|
|
27
27
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Template2, { name, typeName, api: oas.api });
|
28
28
|
}
|
29
29
|
OasType.File = function({ name, typeName, templates = defaultTemplates }) {
|
30
|
-
const {
|
31
|
-
|
30
|
+
const {
|
31
|
+
pluginManager,
|
32
|
+
plugin: { key: pluginKey2 }
|
33
|
+
} = _react.useApp.call(void 0, );
|
32
34
|
const file = pluginManager.getFile({ name, extName: ".ts", pluginKey: pluginKey2 });
|
33
35
|
const Template2 = templates.default;
|
34
36
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Editor, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
|
@@ -67,7 +69,6 @@ var typeKeywordMapper = {
|
|
67
69
|
}
|
68
70
|
return factory.createTypeLiteralNode(nodes);
|
69
71
|
},
|
70
|
-
lazy: void 0,
|
71
72
|
string: () => factory.keywordTypeNodes.string,
|
72
73
|
boolean: () => factory.keywordTypeNodes.boolean,
|
73
74
|
undefined: () => factory.keywordTypeNodes.undefined,
|
@@ -149,62 +150,53 @@ var typeKeywordMapper = {
|
|
149
150
|
format: void 0,
|
150
151
|
catchall: void 0
|
151
152
|
};
|
152
|
-
function parseTypeMeta(
|
153
|
-
const
|
154
|
-
const value = mapper[item.keyword];
|
153
|
+
function parseTypeMeta(parent, current, options) {
|
154
|
+
const value = typeKeywordMapper[current.keyword];
|
155
155
|
if (!value) {
|
156
156
|
return void 0;
|
157
157
|
}
|
158
|
-
if (_swagger.isKeyword.call(void 0,
|
159
|
-
|
160
|
-
return value2(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
158
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.union)) {
|
159
|
+
return typeKeywordMapper.union(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
161
160
|
}
|
162
|
-
if (_swagger.isKeyword.call(void 0,
|
163
|
-
|
164
|
-
return value2(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
161
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.and)) {
|
162
|
+
return typeKeywordMapper.and(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
165
163
|
}
|
166
|
-
if (_swagger.isKeyword.call(void 0,
|
167
|
-
|
168
|
-
return value2(item.args.items.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
164
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.array)) {
|
165
|
+
return typeKeywordMapper.array(current.args.items.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
169
166
|
}
|
170
|
-
if (_swagger.isKeyword.call(void 0,
|
171
|
-
|
172
|
-
return value2(item.args.typeName);
|
167
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.enum)) {
|
168
|
+
return typeKeywordMapper.enum(current.args.typeName);
|
173
169
|
}
|
174
|
-
if (_swagger.isKeyword.call(void 0,
|
175
|
-
|
176
|
-
return value2(item.args.name);
|
170
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.ref)) {
|
171
|
+
return typeKeywordMapper.ref(current.args.name);
|
177
172
|
}
|
178
|
-
if (_swagger.isKeyword.call(void 0,
|
173
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.blob)) {
|
179
174
|
return value();
|
180
175
|
}
|
181
|
-
if (_swagger.isKeyword.call(void 0,
|
182
|
-
|
183
|
-
return value2(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean));
|
176
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.tuple)) {
|
177
|
+
return typeKeywordMapper.tuple(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
184
178
|
}
|
185
|
-
if (_swagger.isKeyword.call(void 0,
|
186
|
-
const
|
187
|
-
return value2(item.args.name, item.args.format);
|
179
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.const)) {
|
180
|
+
return typeKeywordMapper.const(current.args.name, current.args.format);
|
188
181
|
}
|
189
|
-
if (_swagger.isKeyword.call(void 0,
|
190
|
-
const
|
191
|
-
|
192
|
-
const schemas = item2[1];
|
182
|
+
if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.object)) {
|
183
|
+
const properties = Object.entries(_optionalChain([current, 'access', _ => _.args, 'optionalAccess', _2 => _2.properties]) || {}).filter((item) => {
|
184
|
+
const schemas = item[1];
|
193
185
|
return schemas && typeof schemas.map === "function";
|
194
|
-
}).map((
|
195
|
-
const name =
|
196
|
-
const schemas =
|
197
|
-
const isNullish = schemas.some((
|
198
|
-
const isNullable = schemas.some((
|
199
|
-
const isOptional = schemas.some((
|
200
|
-
const isReadonly = schemas.some((
|
201
|
-
const describeSchema = schemas.find((
|
202
|
-
const deprecatedSchema = schemas.find((
|
203
|
-
const defaultSchema = schemas.find((
|
204
|
-
const exampleSchema = schemas.find((
|
205
|
-
const typeSchema = schemas.find((
|
206
|
-
const formatSchema = schemas.find((
|
207
|
-
let type = schemas.map((
|
186
|
+
}).map((item) => {
|
187
|
+
const name = item[0];
|
188
|
+
const schemas = item[1];
|
189
|
+
const isNullish = schemas.some((schema) => schema.keyword === _swagger.schemaKeywords.nullish);
|
190
|
+
const isNullable = schemas.some((schema) => schema.keyword === _swagger.schemaKeywords.nullable);
|
191
|
+
const isOptional = schemas.some((schema) => schema.keyword === _swagger.schemaKeywords.optional);
|
192
|
+
const isReadonly = schemas.some((schema) => schema.keyword === _swagger.schemaKeywords.readOnly);
|
193
|
+
const describeSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.describe);
|
194
|
+
const deprecatedSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.deprecated);
|
195
|
+
const defaultSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.default);
|
196
|
+
const exampleSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.example);
|
197
|
+
const typeSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.type);
|
198
|
+
const formatSchema = schemas.find((schema) => schema.keyword === _swagger.schemaKeywords.format);
|
199
|
+
let type = schemas.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean)[0];
|
208
200
|
if (isNullable) {
|
209
201
|
type = factory.createUnionDeclaration({
|
210
202
|
nodes: [type, factory.keywordTypeNodes.null]
|
@@ -237,12 +229,12 @@ function parseTypeMeta(item, options) {
|
|
237
229
|
].filter(Boolean)
|
238
230
|
});
|
239
231
|
});
|
240
|
-
const additionalProperties = _optionalChain([
|
241
|
-
|
232
|
+
const additionalProperties = _optionalChain([current, 'access', _4 => _4.args, 'optionalAccess', _5 => _5.additionalProperties, 'optionalAccess', _6 => _6.length]) ? factory.createIndexSignature(
|
233
|
+
current.args.additionalProperties.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean).at(0)
|
242
234
|
) : void 0;
|
243
|
-
return
|
235
|
+
return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean));
|
244
236
|
}
|
245
|
-
if (
|
237
|
+
if (current.keyword in typeKeywordMapper) {
|
246
238
|
return value();
|
247
239
|
}
|
248
240
|
return void 0;
|
@@ -256,7 +248,7 @@ function typeParser(schemas, options) {
|
|
256
248
|
const isNullish = schemas.some((item) => item.keyword === _swagger.schemaKeywords.nullish);
|
257
249
|
const isNullable = schemas.some((item) => item.keyword === _swagger.schemaKeywords.nullable);
|
258
250
|
const isOptional = schemas.some((item) => item.keyword === _swagger.schemaKeywords.optional);
|
259
|
-
let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
251
|
+
let type = schemas.map((schema) => parseTypeMeta(void 0, schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
260
252
|
if (isNullable) {
|
261
253
|
type = factory.createUnionDeclaration({
|
262
254
|
nodes: [type, factory.keywordTypeNodes.null]
|
@@ -317,8 +309,7 @@ var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
|
|
317
309
|
logger: pluginManager.logger
|
318
310
|
});
|
319
311
|
root.render(
|
320
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Schema, { generator: this, name, object, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.File, { isTypeOnly: true, output
|
321
|
-
{ meta: { pluginManager, plugin } }
|
312
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Schema, { generator: this, name, object, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.File, { isTypeOnly: true, output }) }) }) })
|
322
313
|
);
|
323
314
|
return root.files;
|
324
315
|
}
|
@@ -401,9 +392,8 @@ function printCombinedSchema(name, operation, schemas) {
|
|
401
392
|
function OperationSchema({}) {
|
402
393
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
|
403
394
|
}
|
404
|
-
OperationSchema.File = function({
|
405
|
-
const plugin = _react.
|
406
|
-
const pluginManager = _react.usePluginManager.call(void 0, );
|
395
|
+
OperationSchema.File = function({}) {
|
396
|
+
const { pluginManager, plugin, mode } = _react.useApp.call(void 0, );
|
407
397
|
const oas = _hooks.useOas.call(void 0, );
|
408
398
|
const { getSchemas, getFile, getName } = _hooks.useOperationManager.call(void 0, );
|
409
399
|
const operation = _hooks.useOperation.call(void 0, );
|
@@ -413,12 +403,13 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
413
403
|
const generator = new SchemaGenerator2(plugin.options, {
|
414
404
|
oas,
|
415
405
|
plugin,
|
416
|
-
pluginManager
|
406
|
+
pluginManager,
|
407
|
+
mode
|
417
408
|
});
|
418
409
|
const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean);
|
419
410
|
const mapItem = ({ name, schema: object, ...options }, i) => {
|
420
411
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _components.Oas.Schema, { generator, name, object, children: [
|
421
|
-
mode === "
|
412
|
+
mode === "split" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.Imports, { isTypeOnly: true }),
|
422
413
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.Source, { options }) })
|
423
414
|
] }, i);
|
424
415
|
};
|
@@ -432,13 +423,12 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
432
423
|
|
433
424
|
var OperationGenerator = class extends _swagger.OperationGenerator {
|
434
425
|
async all(operations) {
|
435
|
-
const { oas, pluginManager, plugin } = this.context;
|
426
|
+
const { oas, pluginManager, plugin, mode } = this.context;
|
436
427
|
const root = _react.createRoot.call(void 0, {
|
437
428
|
logger: pluginManager.logger
|
438
429
|
});
|
439
430
|
root.render(
|
440
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations, getOperationSchemas: (...props) => this.getSchemas(...props), children: plugin.options.oasType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType.File, { name: "oas", typeName: "Oas" }) })
|
441
|
-
{ meta: { pluginManager, plugin } }
|
431
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations, getOperationSchemas: (...props) => this.getSchemas(...props), children: plugin.options.oasType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType.File, { name: "oas", typeName: "Oas" }) }) })
|
442
432
|
);
|
443
433
|
return root.files;
|
444
434
|
}
|
@@ -448,8 +438,7 @@ var OperationGenerator = class extends _swagger.OperationGenerator {
|
|
448
438
|
logger: pluginManager.logger
|
449
439
|
});
|
450
440
|
root.render(
|
451
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations: [operation], getOperationSchemas: (...props) => this.getSchemas(...props), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Operation, { operation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OperationSchema.File, {
|
452
|
-
{ meta: { pluginManager, plugin: { ...plugin, options } } }
|
441
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations: [operation], getOperationSchemas: (...props) => this.getSchemas(...props), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Operation, { operation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OperationSchema.File, {}) }) }) })
|
453
442
|
);
|
454
443
|
return root.files;
|
455
444
|
}
|
@@ -506,7 +495,7 @@ var definePlugin = _core.createPlugin.call(void 0, (options) => {
|
|
506
495
|
resolvePath(baseName, pathMode, options2) {
|
507
496
|
const root = _path2.default.resolve(this.config.root, this.config.output.path);
|
508
497
|
const mode = _nullishCoalesce(pathMode, () => ( _core.FileManager.getMode(_path2.default.resolve(root, output.path))));
|
509
|
-
if (mode === "
|
498
|
+
if (mode === "single") {
|
510
499
|
return _path2.default.resolve(root, output.path);
|
511
500
|
}
|
512
501
|
if (_optionalChain([options2, 'optionalAccess', _17 => _17.tag]) && _optionalChain([group, 'optionalAccess', _18 => _18.type]) === "tag") {
|
@@ -565,7 +554,8 @@ var definePlugin = _core.createPlugin.call(void 0, (options) => {
|
|
565
554
|
await this.fileManager.addIndexes({
|
566
555
|
root,
|
567
556
|
output,
|
568
|
-
meta: { pluginKey: this.plugin.key }
|
557
|
+
meta: { pluginKey: this.plugin.key },
|
558
|
+
logger: this.logger
|
569
559
|
});
|
570
560
|
}
|
571
561
|
};
|
@@ -583,4 +573,4 @@ var src_default = definePluginDefault;
|
|
583
573
|
|
584
574
|
|
585
575
|
exports.OasType = OasType; exports.OperationSchema = OperationSchema; exports.pluginName = pluginName; exports.pluginKey = pluginKey; exports.definePlugin = definePlugin; exports.src_default = src_default;
|
586
|
-
//# sourceMappingURL=chunk-
|
576
|
+
//# sourceMappingURL=chunk-BINFINBM.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/OperationGenerator.tsx","../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/typeParser.ts","../src/index.ts"],"names":["App","createRoot","Generator","Oas","Template","pluginKey","transformers","print","factory","Editor","File","useApp","Schema","useOas","node","jsx","SchemaGenerator","Fragment","jsxs","options"],"mappings":"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","sourcesContent":["import path from 'node:path'\n\nimport { FileManager, PluginManager, createPlugin } from '@kubb/core'\nimport { camelCase, pascalCase } from '@kubb/core/transformers'\nimport { renderTemplate } from '@kubb/core/utils'\nimport { pluginName as swaggerPluginName } from '@kubb/swagger'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginOptions as SwaggerPluginOptions } from '@kubb/swagger'\nimport type { PluginOptions } from './types.ts'\nexport const pluginName = 'swagger-ts' satisfies PluginOptions['name']\nexport const pluginKey: PluginOptions['key'] = [pluginName] satisfies PluginOptions['key']\n\nexport const definePlugin = createPlugin<PluginOptions>((options) => {\n const {\n output = { path: 'types' },\n group,\n exclude = [],\n include,\n override = [],\n enumType = 'asConst',\n enumSuffix = '',\n dateType = 'string',\n unknownType = 'any',\n optionalType = 'questionToken',\n transformers = {},\n oasType = false,\n } = options\n const template = group?.output ? group.output : `${output.path}/{{tag}}Controller`\n\n return {\n name: pluginName,\n options: {\n transformers,\n dateType,\n optionalType,\n oasType,\n enumType,\n enumSuffix,\n // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)\n usedEnumNames: {},\n unknownType,\n },\n pre: [swaggerPluginName],\n resolvePath(baseName, pathMode, options) {\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = pathMode ?? FileManager.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 (options?.tag && group?.type === 'tag') {\n const tag = camelCase(options.tag)\n\n return path.resolve(root, renderTemplate(template, { tag }), baseName)\n }\n\n return path.resolve(root, output.path, baseName)\n },\n resolveName(name, type) {\n const resolvedName = pascalCase(name, { isFile: type === 'file' })\n\n if (type) {\n return transformers?.name?.(resolvedName, type) || resolvedName\n }\n\n return resolvedName\n },\n async writeFile(source, writePath) {\n if (!writePath.endsWith('.ts') || !source) {\n return\n }\n\n return this.fileManager.write(source, writePath, { sanity: false })\n },\n async buildStart() {\n const [swaggerPlugin]: [Plugin<SwaggerPluginOptions>] = PluginManager.getDependedPlugins<SwaggerPluginOptions>(this.plugins, [swaggerPluginName])\n\n const oas = await swaggerPlugin.api.getOas()\n const root = path.resolve(this.config.root, this.config.output.path)\n const mode = FileManager.getMode(path.resolve(root, output.path))\n\n const schemaGenerator = new SchemaGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n include: undefined,\n mode,\n output: output.path,\n })\n\n const schemaFiles = await schemaGenerator.build()\n await this.addFile(...schemaFiles)\n\n const operationGenerator = new OperationGenerator(this.plugin.options, {\n oas,\n pluginManager: this.pluginManager,\n plugin: this.plugin,\n contentType: swaggerPlugin.api.contentType,\n exclude,\n include,\n override,\n mode,\n })\n\n const operationFiles = await operationGenerator.build()\n await this.addFile(...operationFiles)\n },\n async buildEnd() {\n if (this.config.output.write === false) {\n return\n }\n\n const root = path.resolve(this.config.root, this.config.output.path)\n\n await this.fileManager.addIndexes({\n root,\n output,\n meta: { pluginKey: this.plugin.key },\n logger: this.logger,\n })\n },\n }\n})\n","import { App, createRoot } from '@kubb/react'\nimport { OperationGenerator as Generator } from '@kubb/swagger'\nimport { Oas } from '@kubb/swagger/components'\n\nimport { OasType } from './components/OasType.tsx'\nimport { OperationSchema } from './components/OperationSchema.tsx'\n\nimport type { OperationMethodResult } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async all(operations: Operation[]): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas} operations={operations} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async operation(operation: Operation, options: PluginOptions['resolvedOptions']): OperationMethodResult<FileMeta> {\n const { oas, pluginManager, plugin, mode } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n root.render(\n <App pluginManager={pluginManager} plugin={{ ...plugin, options }} mode={mode}>\n <Oas oas={oas} operations={[operation]} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File />\n </Oas.Operation>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n\n async get(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async post(): OperationMethodResult<FileMeta> {\n return null\n }\n\n async put(): OperationMethodResult<FileMeta> {\n return null\n }\n async patch(): OperationMethodResult<FileMeta> {\n return null\n }\n async delete(): OperationMethodResult<FileMeta> {\n return null\n }\n}\n","import { Editor, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/swagger/hooks'\n\nimport type { OasTypes } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } from '../types.ts'\n\ntype TemplateProps = {\n /**\n * Name of the function\n */\n name: string\n typeName: string\n api: OasTypes.OASDocument\n}\n\nfunction Template({ name, typeName, api }: TemplateProps): ReactNode {\n return (\n <>\n {`export const ${name} = ${JSON.stringify(api, undefined, 2)} as const`}\n <br />\n <Type name={typeName} export>\n {`Infer<typeof ${name}>`}\n </Type>\n </>\n )\n}\n\nconst defaultTemplates = { default: Template } as const\n\ntype Props = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n Template?: React.ComponentType<React.ComponentProps<typeof Template>>\n}\n\nexport function OasType({ name, typeName, Template = defaultTemplates.default }: Props): ReactNode {\n const oas = useOas()\n\n return <Template name={name} typeName={typeName} api={oas.api} />\n}\n\ntype FileProps = {\n name: string\n typeName: string\n /**\n * This will make it possible to override the default behaviour.\n */\n templates?: typeof defaultTemplates\n}\n\nOasType.File = function ({ name, typeName, templates = defaultTemplates }: FileProps): ReactNode {\n const {\n pluginManager,\n plugin: { key: pluginKey },\n } = useApp<PluginOptions>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n <File.Import name={['Infer']} path=\"@kubb/swagger-ts/oas\" isTypeOnly />\n <File.Source>\n <OasType Template={Template} name={name} typeName={typeName} />\n </File.Source>\n </File>\n </Editor>\n )\n}\n\nOasType.templates = defaultTemplates\n","/* eslint-disable no-empty-pattern */\n/* eslint-disable @typescript-eslint/ban-types */\nimport transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { Editor, File, useApp } from '@kubb/react'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { useOas, useOperation, useOperationManager } from '@kubb/swagger/hooks'\n\nimport { SchemaGenerator } from '../SchemaGenerator.tsx'\n\nimport type { KubbFile } from '@kubb/core'\nimport type { ts } from '@kubb/parser'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/swagger'\nimport type { OperationSchemas } from '@kubb/swagger'\nimport type { Operation } from '@kubb/swagger/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginOptions } from '../types.ts'\n\ntype Props = {}\n\nfunction printCombinedSchema(name: string, operation: Operation, schemas: OperationSchemas): string {\n const properties: Record<string, ts.TypeNode> = {\n response: factory.createTypeReferenceNode(factory.createIdentifier(schemas.response.name), undefined),\n }\n\n if (schemas.request) {\n properties['request'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.request.name), undefined)\n }\n\n if (schemas.pathParams) {\n properties['pathParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.pathParams.name), undefined)\n }\n\n if (schemas.queryParams) {\n properties['queryParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.queryParams.name), undefined)\n }\n\n if (schemas.headerParams) {\n properties['headerParams'] = factory.createTypeReferenceNode(factory.createIdentifier(schemas.headerParams.name), undefined)\n }\n\n if (schemas.errors) {\n properties['errors'] = factory.createUnionDeclaration({\n nodes: schemas.errors.map((error) => {\n return factory.createTypeReferenceNode(factory.createIdentifier(error.name), undefined)\n }),\n })!\n }\n\n const namespaceNode = factory.createTypeAliasDeclaration({\n name: operation.method === 'get' ? `${name}Query` : `${name}Mutation`,\n type: factory.createTypeLiteralNode(\n Object.keys(properties)\n .map((key) => {\n const type = properties[key]\n if (!type) {\n return undefined\n }\n\n return factory.createPropertySignature({\n name: transformers.pascalCase(key),\n type,\n })\n })\n .filter(Boolean),\n ),\n modifiers: [factory.modifiers.export],\n })\n\n return print(namespaceNode)\n}\n\nexport function OperationSchema({}: Props): ReactNode {\n return <></>\n}\n\ntype FileProps = {}\n\nOperationSchema.File = function ({}: FileProps): ReactNode {\n const { pluginManager, plugin, mode } = useApp<PluginOptions>()\n const oas = useOas()\n const { getSchemas, getFile, getName } = useOperationManager()\n const operation = useOperation()\n\n const file = getFile(operation)\n const schemas = getSchemas(operation)\n const factoryName = getName(operation, { type: 'type' })\n const generator = new SchemaGenerator(plugin.options, {\n oas,\n plugin,\n pluginManager,\n mode,\n })\n\n const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean)\n\n const mapItem = ({ name, schema: object, ...options }: OperationSchemaType, i: number) => {\n return (\n <Oas.Schema key={i} generator={generator} name={name} object={object}>\n {mode === 'split' && <Schema.Imports isTypeOnly />}\n <File.Source>\n <Schema.Source options={options} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Editor language=\"typescript\">\n <File<FileMeta> baseName={file.baseName} path={file.path} meta={file.meta}>\n {items.map(mapItem)}\n\n <File.Source>{printCombinedSchema(factoryName, operation, schemas)}</File.Source>\n </File>\n </Editor>\n )\n}\n","import { App, createRoot } from '@kubb/react'\nimport { SchemaGenerator as Generator } from '@kubb/swagger'\nimport { pluginKey as swaggerTypeScriptPluginKey } from '@kubb/swagger-ts'\nimport { Oas, Schema } from '@kubb/swagger/components'\n\nimport { pluginKey } from './plugin.ts'\nimport { typeParser } from './typeParser.ts'\n\nimport type { SchemaGeneratorBuildOptions, SchemaMethodResult, Schema as SchemaType } from '@kubb/swagger'\nimport type { SchemaObject } from '@kubb/swagger/oas'\nimport type { FileMeta, PluginOptions } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginOptions['resolvedOptions'], PluginOptions> {\n async schema(name: string, object: SchemaObject): SchemaMethodResult<FileMeta> {\n const { oas, pluginManager, mode, plugin, output } = this.context\n\n const root = createRoot({\n logger: pluginManager.logger,\n })\n\n root.render(\n <App pluginManager={pluginManager} plugin={plugin} mode={mode}>\n <Oas oas={oas}>\n <Oas.Schema generator={this} name={name} object={object}>\n <Schema.File isTypeOnly output={output} />\n </Oas.Schema>\n </Oas>\n </App>,\n )\n\n return root.files\n }\n // TODO convert to a react component called `Schema.Parser` with props parser as part of the SchemaContext\n getSource(name: string, schemas: SchemaType[], { keysToOmit, description }: SchemaGeneratorBuildOptions = {}): string[] {\n const texts: string[] = []\n\n const resolvedName = this.context.pluginManager.resolveName({\n name,\n pluginKey,\n type: 'function',\n })\n const resvoledTypeName = this.context.pluginManager.resolveName({\n name,\n pluginKey: swaggerTypeScriptPluginKey,\n type: 'type',\n })\n\n const typeOutput = typeParser(schemas, {\n name: resolvedName,\n typeName: resvoledTypeName,\n description,\n enumType: this.options.enumType || 'asConst',\n optionalType: this.options.optionalType,\n keysToOmit,\n })\n\n texts.push(typeOutput)\n\n return texts\n }\n /**\n * @deprecated only used for testing\n */\n\n buildSource(name: string, schema: SchemaObject, options: SchemaGeneratorBuildOptions = {}): string[] {\n const schemas = this.buildSchemas(schema, name)\n\n return this.getSource(name, schemas, options)\n }\n}\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser'\nimport * as factory from '@kubb/parser/factory'\nimport { SchemaGenerator, isKeyword, schemaKeywords } from '@kubb/swagger'\n\nimport type { ts } from '@kubb/parser'\nimport type { Schema, SchemaKeywordMapper, SchemaMapper } from '@kubb/swagger'\n\nexport const typeKeywordMapper = {\n any: () => factory.keywordTypeNodes.any,\n unknown: () => factory.keywordTypeNodes.unknown,\n number: () => factory.keywordTypeNodes.number,\n integer: () => factory.keywordTypeNodes.number,\n object: (nodes?: ts.TypeElement[]) => {\n if (!nodes) {\n return factory.keywordTypeNodes.object\n }\n\n return factory.createTypeLiteralNode(nodes)\n },\n string: () => factory.keywordTypeNodes.string,\n boolean: () => factory.keywordTypeNodes.boolean,\n undefined: () => factory.keywordTypeNodes.undefined,\n nullable: undefined,\n null: () => factory.keywordTypeNodes.null,\n nullish: undefined,\n array: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createArrayDeclaration({ nodes })\n },\n tuple: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createTupleTypeNode(nodes)\n },\n enum: (name?: string) => {\n if (!name) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(name, undefined)\n },\n union: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createUnionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n const: (name?: string | number, format?: 'string' | 'number') => {\n if (!name) {\n return undefined\n }\n\n if (format === 'number') {\n return factory.createLiteralTypeNode(factory.createNumericLiteral(name))\n }\n\n return factory.createLiteralTypeNode(factory.createStringLiteral(name.toString()))\n },\n datetime: () => factory.keywordTypeNodes.string,\n date: () => factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n uuid: undefined,\n url: undefined,\n strict: undefined,\n default: undefined,\n and: (nodes?: ts.TypeNode[]) => {\n if (!nodes) {\n return undefined\n }\n\n return factory.createIntersectionDeclaration({\n withParentheses: true,\n nodes,\n })\n },\n describe: undefined,\n min: undefined,\n max: undefined,\n optional: undefined,\n matches: undefined,\n email: undefined,\n firstName: undefined,\n lastName: undefined,\n password: undefined,\n phone: undefined,\n readOnly: undefined,\n ref: (propertyName?: string) => {\n if (!propertyName) {\n return undefined\n }\n\n return factory.createTypeReferenceNode(propertyName, undefined)\n },\n blob: () => factory.createTypeReferenceNode('Blob', []),\n deprecated: undefined,\n example: undefined,\n type: undefined,\n format: undefined,\n catchall: undefined,\n} satisfies SchemaMapper<ts.Node | null | undefined>\n\ntype ParserOptions = {\n name: string\n typeName?: string\n description?: string\n /**\n * @default `'questionToken'`\n */\n optionalType: 'questionToken' | 'undefined' | 'questionTokenAndUndefined'\n /**\n * @default `'asConst'`\n */\n enumType: 'enum' | 'asConst' | 'asPascalConst' | 'constEnum' | 'literal'\n keysToOmit?: string[]\n mapper?: SchemaMapper\n}\n\nexport function parseTypeMeta(parent: Schema | undefined, current: Schema, options: ParserOptions): ts.Node | null | undefined {\n const value = typeKeywordMapper[current.keyword as keyof typeof typeKeywordMapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(current, schemaKeywords.union)) {\n return typeKeywordMapper.union(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.and)) {\n return typeKeywordMapper.and(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.array)) {\n return typeKeywordMapper.array(current.args.items.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.enum)) {\n return typeKeywordMapper.enum(current.args.typeName)\n }\n\n if (isKeyword(current, schemaKeywords.ref)) {\n return typeKeywordMapper.ref(current.args.name)\n }\n\n if (isKeyword(current, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(current, schemaKeywords.tuple)) {\n return typeKeywordMapper.tuple(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(current, schemaKeywords.const)) {\n return typeKeywordMapper.const(current.args.name, current.args.format)\n }\n\n if (isKeyword(current, schemaKeywords.object)) {\n const properties = Object.entries(current.args?.properties || {})\n .filter((item) => {\n const schemas = item[1]\n return schemas && typeof schemas.map === 'function'\n })\n .map((item) => {\n const name = item[0]\n const schemas = item[1]\n\n const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional)\n const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const typeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined\n const formatSchema = schemas.find((schema) => schema.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined\n\n let type = schemas.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean)[0] as ts.TypeNode\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const propertySignature = factory.createPropertySignature({\n questionToken: isOptional && ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string),\n name,\n type,\n readOnly: isReadonly,\n })\n\n return factory.appendJSDocToNode({\n node: propertySignature,\n comments: [\n describeSchema ? `@description ${transformers.jsStringEscape(describeSchema.args)}` : undefined,\n deprecatedSchema ? '@deprecated' : undefined,\n defaultSchema ? `@default ${defaultSchema.args}` : undefined,\n exampleSchema ? `@example ${exampleSchema.args}` : undefined,\n typeSchema ? `@type ${typeSchema.args}${!isOptional ? '' : ' | undefined'} ${formatSchema?.args || ''}` : undefined,\n ].filter(Boolean),\n })\n })\n\n const additionalProperties = current.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n current.args.additionalProperties\n .map((schema) => parseTypeMeta(current, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean))\n }\n\n if (current.keyword in typeKeywordMapper) {\n return value()\n }\n\n return undefined\n}\n\nexport function typeParser(schemas: Schema[], options: ParserOptions): string {\n const nodes: ts.Node[] = []\n const extraNodes: ts.Node[] = []\n\n if (!schemas.length) {\n return ''\n }\n\n const isNullish = schemas.some((item) => item.keyword === schemaKeywords.nullish)\n const isNullable = schemas.some((item) => item.keyword === schemaKeywords.nullable)\n const isOptional = schemas.some((item) => item.keyword === schemaKeywords.optional)\n\n let type =\n (schemas\n .map((schema) => parseTypeMeta(undefined, schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode) || typeKeywordMapper.undefined()\n\n if (isNullable) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.null],\n }) as ts.TypeNode\n }\n\n if (isNullish && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n if (isOptional && ['undefined', 'questionTokenAndUndefined'].includes(options.optionalType as string)) {\n type = factory.createUnionDeclaration({\n nodes: [type, factory.keywordTypeNodes.undefined],\n }) as ts.TypeNode\n }\n\n const node = factory.createTypeAliasDeclaration({\n modifiers: [factory.modifiers.export],\n name: options.name,\n type: options.keysToOmit?.length\n ? factory.createOmitDeclaration({\n keys: options.keysToOmit,\n type,\n nonNullable: true,\n })\n : type,\n })\n\n const enumSchemas = SchemaGenerator.deepSearch(schemas, schemaKeywords.enum)\n if (enumSchemas) {\n enumSchemas.forEach((enumSchema) => {\n extraNodes.push(\n ...factory.createEnumDeclaration({\n name: transformers.camelCase(enumSchema.args.name),\n typeName: enumSchema.args.typeName,\n enums: enumSchema.args.items\n .map((item) => (item.value === undefined ? undefined : [transformers.trimQuotes(item.name?.toString()), item.value]))\n .filter(Boolean) as unknown as [string, string][],\n type: options.enumType,\n }),\n )\n })\n }\n\n nodes.push(\n factory.appendJSDocToNode({\n node,\n comments: [options.description ? `@description ${transformers.jsStringEscape(options.description)}` : undefined].filter(Boolean),\n }),\n )\n\n const filterdNodes = nodes.filter(\n (node: ts.Node) =>\n !extraNodes.some(\n (extraNode: ts.Node) => (extraNode as ts.TypeAliasDeclaration)?.name?.escapedText === (node as ts.TypeAliasDeclaration)?.name?.escapedText,\n ),\n )\n\n return print([...extraNodes, ...filterdNodes])\n}\n","import { definePlugin } from './plugin.ts'\n\nexport { definePlugin, pluginKey, pluginName } from './plugin.ts'\nexport type * from './types.ts'\n\n/**\n * @deprecated Use `import { definePlugin } from '@kubb/swagger-ts'`\n */\nconst definePluginDefault = definePlugin\n\nexport default definePluginDefault\n"]}
|
@@ -1,17 +1,17 @@
|
|
1
1
|
// src/plugin.ts
|
2
2
|
import path from "path";
|
3
|
-
import {
|
3
|
+
import { FileManager, PluginManager, createPlugin } from "@kubb/core";
|
4
4
|
import { camelCase, pascalCase } from "@kubb/core/transformers";
|
5
5
|
import { renderTemplate } from "@kubb/core/utils";
|
6
6
|
import { pluginName as swaggerPluginName } from "@kubb/swagger";
|
7
7
|
|
8
8
|
// src/OperationGenerator.tsx
|
9
|
-
import { createRoot as createRoot2 } from "@kubb/react";
|
9
|
+
import { App as App2, createRoot as createRoot2 } from "@kubb/react";
|
10
10
|
import { OperationGenerator as Generator2 } from "@kubb/swagger";
|
11
11
|
import { Oas as Oas3 } from "@kubb/swagger/components";
|
12
12
|
|
13
13
|
// src/components/OasType.tsx
|
14
|
-
import { Editor, File, Type,
|
14
|
+
import { Editor, File, Type, useApp } from "@kubb/react";
|
15
15
|
import { useOas } from "@kubb/swagger/hooks";
|
16
16
|
import { Fragment, jsx, jsxs } from "@kubb/react/jsx-runtime";
|
17
17
|
function Template({ name, typeName, api }) {
|
@@ -27,8 +27,10 @@ function OasType({ name, typeName, Template: Template2 = defaultTemplates.defaul
|
|
27
27
|
return /* @__PURE__ */ jsx(Template2, { name, typeName, api: oas.api });
|
28
28
|
}
|
29
29
|
OasType.File = function({ name, typeName, templates = defaultTemplates }) {
|
30
|
-
const {
|
31
|
-
|
30
|
+
const {
|
31
|
+
pluginManager,
|
32
|
+
plugin: { key: pluginKey2 }
|
33
|
+
} = useApp();
|
32
34
|
const file = pluginManager.getFile({ name, extName: ".ts", pluginKey: pluginKey2 });
|
33
35
|
const Template2 = templates.default;
|
34
36
|
return /* @__PURE__ */ jsx(Editor, { language: "typescript", children: /* @__PURE__ */ jsxs(File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
|
@@ -42,12 +44,12 @@ OasType.templates = defaultTemplates;
|
|
42
44
|
import transformers2 from "@kubb/core/transformers";
|
43
45
|
import { print as print2 } from "@kubb/parser";
|
44
46
|
import * as factory2 from "@kubb/parser/factory";
|
45
|
-
import { Editor as Editor2, File as File2,
|
47
|
+
import { Editor as Editor2, File as File2, useApp as useApp2 } from "@kubb/react";
|
46
48
|
import { Oas as Oas2, Schema as Schema2 } from "@kubb/swagger/components";
|
47
49
|
import { useOas as useOas2, useOperation, useOperationManager } from "@kubb/swagger/hooks";
|
48
50
|
|
49
51
|
// src/SchemaGenerator.tsx
|
50
|
-
import { createRoot } from "@kubb/react";
|
52
|
+
import { App, createRoot } from "@kubb/react";
|
51
53
|
import { SchemaGenerator as Generator } from "@kubb/swagger";
|
52
54
|
import { Oas, Schema } from "@kubb/swagger/components";
|
53
55
|
|
@@ -55,7 +57,7 @@ import { Oas, Schema } from "@kubb/swagger/components";
|
|
55
57
|
import transformers from "@kubb/core/transformers";
|
56
58
|
import { print } from "@kubb/parser";
|
57
59
|
import * as factory from "@kubb/parser/factory";
|
58
|
-
import {
|
60
|
+
import { SchemaGenerator, isKeyword, schemaKeywords } from "@kubb/swagger";
|
59
61
|
var typeKeywordMapper = {
|
60
62
|
any: () => factory.keywordTypeNodes.any,
|
61
63
|
unknown: () => factory.keywordTypeNodes.unknown,
|
@@ -67,7 +69,6 @@ var typeKeywordMapper = {
|
|
67
69
|
}
|
68
70
|
return factory.createTypeLiteralNode(nodes);
|
69
71
|
},
|
70
|
-
lazy: void 0,
|
71
72
|
string: () => factory.keywordTypeNodes.string,
|
72
73
|
boolean: () => factory.keywordTypeNodes.boolean,
|
73
74
|
undefined: () => factory.keywordTypeNodes.undefined,
|
@@ -149,62 +150,53 @@ var typeKeywordMapper = {
|
|
149
150
|
format: void 0,
|
150
151
|
catchall: void 0
|
151
152
|
};
|
152
|
-
function parseTypeMeta(
|
153
|
-
const
|
154
|
-
const value = mapper[item.keyword];
|
153
|
+
function parseTypeMeta(parent, current, options) {
|
154
|
+
const value = typeKeywordMapper[current.keyword];
|
155
155
|
if (!value) {
|
156
156
|
return void 0;
|
157
157
|
}
|
158
|
-
if (isKeyword(
|
159
|
-
|
160
|
-
return value2(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
158
|
+
if (isKeyword(current, schemaKeywords.union)) {
|
159
|
+
return typeKeywordMapper.union(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
161
160
|
}
|
162
|
-
if (isKeyword(
|
163
|
-
|
164
|
-
return value2(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
161
|
+
if (isKeyword(current, schemaKeywords.and)) {
|
162
|
+
return typeKeywordMapper.and(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
165
163
|
}
|
166
|
-
if (isKeyword(
|
167
|
-
|
168
|
-
return value2(item.args.items.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean));
|
164
|
+
if (isKeyword(current, schemaKeywords.array)) {
|
165
|
+
return typeKeywordMapper.array(current.args.items.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
169
166
|
}
|
170
|
-
if (isKeyword(
|
171
|
-
|
172
|
-
return value2(item.args.typeName);
|
167
|
+
if (isKeyword(current, schemaKeywords.enum)) {
|
168
|
+
return typeKeywordMapper.enum(current.args.typeName);
|
173
169
|
}
|
174
|
-
if (isKeyword(
|
175
|
-
|
176
|
-
return value2(item.args.name);
|
170
|
+
if (isKeyword(current, schemaKeywords.ref)) {
|
171
|
+
return typeKeywordMapper.ref(current.args.name);
|
177
172
|
}
|
178
|
-
if (isKeyword(
|
173
|
+
if (isKeyword(current, schemaKeywords.blob)) {
|
179
174
|
return value();
|
180
175
|
}
|
181
|
-
if (isKeyword(
|
182
|
-
|
183
|
-
return value2(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean));
|
176
|
+
if (isKeyword(current, schemaKeywords.tuple)) {
|
177
|
+
return typeKeywordMapper.tuple(current.args.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean));
|
184
178
|
}
|
185
|
-
if (isKeyword(
|
186
|
-
const
|
187
|
-
return value2(item.args.name, item.args.format);
|
179
|
+
if (isKeyword(current, schemaKeywords.const)) {
|
180
|
+
return typeKeywordMapper.const(current.args.name, current.args.format);
|
188
181
|
}
|
189
|
-
if (isKeyword(
|
190
|
-
const
|
191
|
-
|
192
|
-
const schemas = item2[1];
|
182
|
+
if (isKeyword(current, schemaKeywords.object)) {
|
183
|
+
const properties = Object.entries(current.args?.properties || {}).filter((item) => {
|
184
|
+
const schemas = item[1];
|
193
185
|
return schemas && typeof schemas.map === "function";
|
194
|
-
}).map((
|
195
|
-
const name =
|
196
|
-
const schemas =
|
197
|
-
const isNullish = schemas.some((
|
198
|
-
const isNullable = schemas.some((
|
199
|
-
const isOptional = schemas.some((
|
200
|
-
const isReadonly = schemas.some((
|
201
|
-
const describeSchema = schemas.find((
|
202
|
-
const deprecatedSchema = schemas.find((
|
203
|
-
const defaultSchema = schemas.find((
|
204
|
-
const exampleSchema = schemas.find((
|
205
|
-
const typeSchema = schemas.find((
|
206
|
-
const formatSchema = schemas.find((
|
207
|
-
let type = schemas.map((
|
186
|
+
}).map((item) => {
|
187
|
+
const name = item[0];
|
188
|
+
const schemas = item[1];
|
189
|
+
const isNullish = schemas.some((schema) => schema.keyword === schemaKeywords.nullish);
|
190
|
+
const isNullable = schemas.some((schema) => schema.keyword === schemaKeywords.nullable);
|
191
|
+
const isOptional = schemas.some((schema) => schema.keyword === schemaKeywords.optional);
|
192
|
+
const isReadonly = schemas.some((schema) => schema.keyword === schemaKeywords.readOnly);
|
193
|
+
const describeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.describe);
|
194
|
+
const deprecatedSchema = schemas.find((schema) => schema.keyword === schemaKeywords.deprecated);
|
195
|
+
const defaultSchema = schemas.find((schema) => schema.keyword === schemaKeywords.default);
|
196
|
+
const exampleSchema = schemas.find((schema) => schema.keyword === schemaKeywords.example);
|
197
|
+
const typeSchema = schemas.find((schema) => schema.keyword === schemaKeywords.type);
|
198
|
+
const formatSchema = schemas.find((schema) => schema.keyword === schemaKeywords.format);
|
199
|
+
let type = schemas.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean)[0];
|
208
200
|
if (isNullable) {
|
209
201
|
type = factory.createUnionDeclaration({
|
210
202
|
nodes: [type, factory.keywordTypeNodes.null]
|
@@ -237,12 +229,12 @@ function parseTypeMeta(item, options) {
|
|
237
229
|
].filter(Boolean)
|
238
230
|
});
|
239
231
|
});
|
240
|
-
const additionalProperties =
|
241
|
-
|
232
|
+
const additionalProperties = current.args?.additionalProperties?.length ? factory.createIndexSignature(
|
233
|
+
current.args.additionalProperties.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean).at(0)
|
242
234
|
) : void 0;
|
243
|
-
return
|
235
|
+
return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean));
|
244
236
|
}
|
245
|
-
if (
|
237
|
+
if (current.keyword in typeKeywordMapper) {
|
246
238
|
return value();
|
247
239
|
}
|
248
240
|
return void 0;
|
@@ -256,7 +248,7 @@ function typeParser(schemas, options) {
|
|
256
248
|
const isNullish = schemas.some((item) => item.keyword === schemaKeywords.nullish);
|
257
249
|
const isNullable = schemas.some((item) => item.keyword === schemaKeywords.nullable);
|
258
250
|
const isOptional = schemas.some((item) => item.keyword === schemaKeywords.optional);
|
259
|
-
let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
251
|
+
let type = schemas.map((schema) => parseTypeMeta(void 0, schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
260
252
|
if (isNullable) {
|
261
253
|
type = factory.createUnionDeclaration({
|
262
254
|
nodes: [type, factory.keywordTypeNodes.null]
|
@@ -317,8 +309,7 @@ var SchemaGenerator2 = class extends Generator {
|
|
317
309
|
logger: pluginManager.logger
|
318
310
|
});
|
319
311
|
root.render(
|
320
|
-
/* @__PURE__ */ jsx2(Oas, { oas, children: /* @__PURE__ */ jsx2(Oas.Schema, { generator: this, name, object, children: /* @__PURE__ */ jsx2(Schema.File, { isTypeOnly: true, output
|
321
|
-
{ meta: { pluginManager, plugin } }
|
312
|
+
/* @__PURE__ */ jsx2(App, { pluginManager, plugin, mode, children: /* @__PURE__ */ jsx2(Oas, { oas, children: /* @__PURE__ */ jsx2(Oas.Schema, { generator: this, name, object, children: /* @__PURE__ */ jsx2(Schema.File, { isTypeOnly: true, output }) }) }) })
|
322
313
|
);
|
323
314
|
return root.files;
|
324
315
|
}
|
@@ -401,9 +392,8 @@ function printCombinedSchema(name, operation, schemas) {
|
|
401
392
|
function OperationSchema({}) {
|
402
393
|
return /* @__PURE__ */ jsx3(Fragment2, {});
|
403
394
|
}
|
404
|
-
OperationSchema.File = function({
|
405
|
-
const plugin =
|
406
|
-
const pluginManager = usePluginManager2();
|
395
|
+
OperationSchema.File = function({}) {
|
396
|
+
const { pluginManager, plugin, mode } = useApp2();
|
407
397
|
const oas = useOas2();
|
408
398
|
const { getSchemas, getFile, getName } = useOperationManager();
|
409
399
|
const operation = useOperation();
|
@@ -413,12 +403,13 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
413
403
|
const generator = new SchemaGenerator2(plugin.options, {
|
414
404
|
oas,
|
415
405
|
plugin,
|
416
|
-
pluginManager
|
406
|
+
pluginManager,
|
407
|
+
mode
|
417
408
|
});
|
418
409
|
const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean);
|
419
410
|
const mapItem = ({ name, schema: object, ...options }, i) => {
|
420
411
|
return /* @__PURE__ */ jsxs2(Oas2.Schema, { generator, name, object, children: [
|
421
|
-
mode === "
|
412
|
+
mode === "split" && /* @__PURE__ */ jsx3(Schema2.Imports, { isTypeOnly: true }),
|
422
413
|
/* @__PURE__ */ jsx3(File2.Source, { children: /* @__PURE__ */ jsx3(Schema2.Source, { options }) })
|
423
414
|
] }, i);
|
424
415
|
};
|
@@ -432,13 +423,12 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
432
423
|
import { jsx as jsx4 } from "@kubb/react/jsx-runtime";
|
433
424
|
var OperationGenerator = class extends Generator2 {
|
434
425
|
async all(operations) {
|
435
|
-
const { oas, pluginManager, plugin } = this.context;
|
426
|
+
const { oas, pluginManager, plugin, mode } = this.context;
|
436
427
|
const root = createRoot2({
|
437
428
|
logger: pluginManager.logger
|
438
429
|
});
|
439
430
|
root.render(
|
440
|
-
/* @__PURE__ */ jsx4(Oas3, { oas, operations, getOperationSchemas: (...props) => this.getSchemas(...props), children: plugin.options.oasType && /* @__PURE__ */ jsx4(OasType.File, { name: "oas", typeName: "Oas" }) })
|
441
|
-
{ meta: { pluginManager, plugin } }
|
431
|
+
/* @__PURE__ */ jsx4(App2, { pluginManager, plugin, mode, children: /* @__PURE__ */ jsx4(Oas3, { oas, operations, getOperationSchemas: (...props) => this.getSchemas(...props), children: plugin.options.oasType && /* @__PURE__ */ jsx4(OasType.File, { name: "oas", typeName: "Oas" }) }) })
|
442
432
|
);
|
443
433
|
return root.files;
|
444
434
|
}
|
@@ -448,8 +438,7 @@ var OperationGenerator = class extends Generator2 {
|
|
448
438
|
logger: pluginManager.logger
|
449
439
|
});
|
450
440
|
root.render(
|
451
|
-
/* @__PURE__ */ jsx4(Oas3, { oas, operations: [operation], getOperationSchemas: (...props) => this.getSchemas(...props), children: /* @__PURE__ */ jsx4(Oas3.Operation, { operation, children: /* @__PURE__ */ jsx4(OperationSchema.File, {
|
452
|
-
{ meta: { pluginManager, plugin: { ...plugin, options } } }
|
441
|
+
/* @__PURE__ */ jsx4(App2, { pluginManager, plugin: { ...plugin, options }, mode, children: /* @__PURE__ */ jsx4(Oas3, { oas, operations: [operation], getOperationSchemas: (...props) => this.getSchemas(...props), children: /* @__PURE__ */ jsx4(Oas3.Operation, { operation, children: /* @__PURE__ */ jsx4(OperationSchema.File, {}) }) }) })
|
453
442
|
);
|
454
443
|
return root.files;
|
455
444
|
}
|
@@ -506,7 +495,7 @@ var definePlugin = createPlugin((options) => {
|
|
506
495
|
resolvePath(baseName, pathMode, options2) {
|
507
496
|
const root = path.resolve(this.config.root, this.config.output.path);
|
508
497
|
const mode = pathMode ?? FileManager.getMode(path.resolve(root, output.path));
|
509
|
-
if (mode === "
|
498
|
+
if (mode === "single") {
|
510
499
|
return path.resolve(root, output.path);
|
511
500
|
}
|
512
501
|
if (options2?.tag && group?.type === "tag") {
|
@@ -565,7 +554,8 @@ var definePlugin = createPlugin((options) => {
|
|
565
554
|
await this.fileManager.addIndexes({
|
566
555
|
root,
|
567
556
|
output,
|
568
|
-
meta: { pluginKey: this.plugin.key }
|
557
|
+
meta: { pluginKey: this.plugin.key },
|
558
|
+
logger: this.logger
|
569
559
|
});
|
570
560
|
}
|
571
561
|
};
|
@@ -583,4 +573,4 @@ export {
|
|
583
573
|
definePlugin,
|
584
574
|
src_default
|
585
575
|
};
|
586
|
-
//# sourceMappingURL=chunk-
|
576
|
+
//# sourceMappingURL=chunk-BT6YU75U.js.map
|