@kubb/swagger-ts 2.11.0 → 2.12.0
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-Y5R6DTFD.cjs → chunk-WZKUY426.cjs} +109 -136
- package/dist/chunk-WZKUY426.cjs.map +1 -0
- package/dist/{chunk-QIZFD754.js → chunk-ZNLTJZHN.js} +113 -140
- package/dist/chunk-ZNLTJZHN.js.map +1 -0
- package/dist/components.cjs +2 -2
- package/dist/components.d.cts +2 -2
- package/dist/components.d.ts +2 -2
- package/dist/components.js +1 -1
- package/dist/{index-BKDH3fXc.d.cts → index-_MgWTBjd.d.cts} +2 -5
- package/dist/{index-BKDH3fXc.d.ts → index-_MgWTBjd.d.ts} +2 -5
- 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/dist/oas.d.cts +1 -1
- package/dist/oas.d.ts +1 -1
- package/package.json +10 -9
- package/src/OperationGenerator.tsx +7 -6
- package/src/SchemaGenerator.tsx +14 -7
- package/src/components/OasType.tsx +7 -19
- package/src/components/OperationSchema.tsx +34 -64
- package/src/oas/infer.ts +15 -21
- package/src/oas/mappers.ts +37 -53
- package/src/oas/model.ts +11 -10
- package/src/oas/requestParams.ts +65 -97
- package/src/oas/response.ts +3 -11
- package/src/oas/security.ts +104 -102
- package/src/plugin.ts +19 -25
- package/src/typeParser.ts +79 -67
- package/dist/chunk-QIZFD754.js.map +0 -1
- package/dist/chunk-Y5R6DTFD.cjs.map +0 -1
@@ -12,14 +12,9 @@ var _components = require('@kubb/swagger/components');
|
|
12
12
|
|
13
13
|
// src/components/OasType.tsx
|
14
14
|
|
15
|
-
|
16
15
|
var _hooks = require('@kubb/swagger/hooks');
|
17
16
|
var _jsxruntime = require('@kubb/react/jsx-runtime');
|
18
|
-
function Template({
|
19
|
-
name,
|
20
|
-
typeName,
|
21
|
-
api
|
22
|
-
}) {
|
17
|
+
function Template({ name, typeName, api }) {
|
23
18
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
24
19
|
`export const ${name} = ${JSON.stringify(api, void 0, 2)} as const`,
|
25
20
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "br", {}),
|
@@ -27,30 +22,19 @@ function Template({
|
|
27
22
|
] });
|
28
23
|
}
|
29
24
|
var defaultTemplates = { default: Template };
|
30
|
-
function OasType({
|
31
|
-
name,
|
32
|
-
typeName,
|
33
|
-
Template: Template2 = defaultTemplates.default
|
34
|
-
}) {
|
25
|
+
function OasType({ name, typeName, Template: Template2 = defaultTemplates.default }) {
|
35
26
|
const oas = _hooks.useOas.call(void 0, );
|
36
27
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Template2, { name, typeName, api: oas.api });
|
37
28
|
}
|
38
29
|
OasType.File = function({ name, typeName, templates = defaultTemplates }) {
|
39
30
|
const { key: pluginKey2 } = _react.usePlugin.call(void 0, );
|
40
|
-
const
|
31
|
+
const pluginManager = _react.usePluginManager.call(void 0, );
|
32
|
+
const file = pluginManager.getFile({ name, extName: ".ts", pluginKey: pluginKey2 });
|
41
33
|
const Template2 = templates.default;
|
42
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Editor, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
43
|
-
_react.File,
|
44
|
-
{
|
45
|
-
|
46
|
-
path: file.path,
|
47
|
-
meta: file.meta,
|
48
|
-
children: [
|
49
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Import, { name: ["Infer"], path: "@kubb/swagger-ts/oas", isTypeOnly: true }),
|
50
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType, { Template: Template2, name, typeName }) })
|
51
|
-
]
|
52
|
-
}
|
53
|
-
) });
|
34
|
+
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: [
|
35
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Import, { name: ["Infer"], path: "@kubb/swagger-ts/oas", isTypeOnly: true }),
|
36
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType, { Template: Template2, name, typeName }) })
|
37
|
+
] }) });
|
54
38
|
};
|
55
39
|
OasType.templates = defaultTemplates;
|
56
40
|
|
@@ -196,9 +180,7 @@ function parseTypeMeta(item, options) {
|
|
196
180
|
}
|
197
181
|
if (_swagger.isKeyword.call(void 0, item, _swagger.schemaKeywords.tuple)) {
|
198
182
|
const value2 = mapper[item.keyword];
|
199
|
-
return value2(
|
200
|
-
item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean)
|
201
|
-
);
|
183
|
+
return value2(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean));
|
202
184
|
}
|
203
185
|
if (_swagger.isKeyword.call(void 0, item, _swagger.schemaKeywords.const)) {
|
204
186
|
const value2 = mapper[item.keyword];
|
@@ -224,13 +206,19 @@ function parseTypeMeta(item, options) {
|
|
224
206
|
const formatSchema = schemas.find((item3) => item3.keyword === _swagger.schemaKeywords.format);
|
225
207
|
let type = schemas.map((item3) => parseTypeMeta(item3, options)).filter(Boolean)[0];
|
226
208
|
if (isNullable) {
|
227
|
-
type = factory.createUnionDeclaration({
|
209
|
+
type = factory.createUnionDeclaration({
|
210
|
+
nodes: [type, factory.keywordTypeNodes.null]
|
211
|
+
});
|
228
212
|
}
|
229
213
|
if (isNullish && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
|
230
|
-
type = factory.createUnionDeclaration({
|
214
|
+
type = factory.createUnionDeclaration({
|
215
|
+
nodes: [type, factory.keywordTypeNodes.undefined]
|
216
|
+
});
|
231
217
|
}
|
232
218
|
if (isOptional && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
|
233
|
-
type = factory.createUnionDeclaration({
|
219
|
+
type = factory.createUnionDeclaration({
|
220
|
+
nodes: [type, factory.keywordTypeNodes.undefined]
|
221
|
+
});
|
234
222
|
}
|
235
223
|
const propertySignature = factory.createPropertySignature({
|
236
224
|
questionToken: isOptional && ["questionToken", "questionTokenAndUndefined"].includes(options.optionalType),
|
@@ -242,14 +230,16 @@ function parseTypeMeta(item, options) {
|
|
242
230
|
node: propertySignature,
|
243
231
|
comments: [
|
244
232
|
describeSchema ? `@description ${_transformers2.default.jsStringEscape(describeSchema.args)}` : void 0,
|
245
|
-
deprecatedSchema ?
|
233
|
+
deprecatedSchema ? "@deprecated" : void 0,
|
246
234
|
defaultSchema ? `@default ${defaultSchema.args}` : void 0,
|
247
235
|
exampleSchema ? `@example ${exampleSchema.args}` : void 0,
|
248
236
|
typeSchema ? `@type ${typeSchema.args}${!isOptional ? "" : " | undefined"} ${_optionalChain([formatSchema, 'optionalAccess', _3 => _3.args]) || ""}` : void 0
|
249
237
|
].filter(Boolean)
|
250
238
|
});
|
251
239
|
});
|
252
|
-
const additionalProperties = _optionalChain([item, 'access', _4 => _4.args, 'optionalAccess', _5 => _5.additionalProperties, 'optionalAccess', _6 => _6.length]) ? factory.createIndexSignature(
|
240
|
+
const additionalProperties = _optionalChain([item, 'access', _4 => _4.args, 'optionalAccess', _5 => _5.additionalProperties, 'optionalAccess', _6 => _6.length]) ? factory.createIndexSignature(
|
241
|
+
item.args.additionalProperties.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0)
|
242
|
+
) : void 0;
|
253
243
|
return value2([...properties, additionalProperties].filter(Boolean));
|
254
244
|
}
|
255
245
|
if (item.keyword in mapper) {
|
@@ -268,38 +258,46 @@ function typeParser(schemas, options) {
|
|
268
258
|
const isOptional = schemas.some((item) => item.keyword === _swagger.schemaKeywords.optional);
|
269
259
|
let type = schemas.map((schema) => parseTypeMeta(schema, options)).filter(Boolean).at(0) || typeKeywordMapper.undefined();
|
270
260
|
if (isNullable) {
|
271
|
-
type = factory.createUnionDeclaration({
|
261
|
+
type = factory.createUnionDeclaration({
|
262
|
+
nodes: [type, factory.keywordTypeNodes.null]
|
263
|
+
});
|
272
264
|
}
|
273
265
|
if (isNullish && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
|
274
|
-
type = factory.createUnionDeclaration({
|
266
|
+
type = factory.createUnionDeclaration({
|
267
|
+
nodes: [type, factory.keywordTypeNodes.undefined]
|
268
|
+
});
|
275
269
|
}
|
276
270
|
if (isOptional && ["undefined", "questionTokenAndUndefined"].includes(options.optionalType)) {
|
277
|
-
type = factory.createUnionDeclaration({
|
271
|
+
type = factory.createUnionDeclaration({
|
272
|
+
nodes: [type, factory.keywordTypeNodes.undefined]
|
273
|
+
});
|
278
274
|
}
|
279
275
|
const node = factory.createTypeAliasDeclaration({
|
280
276
|
modifiers: [factory.modifiers.export],
|
281
277
|
name: options.name,
|
282
|
-
type: _optionalChain([options, 'access', _7 => _7.keysToOmit, 'optionalAccess', _8 => _8.length]) ? factory.createOmitDeclaration({
|
278
|
+
type: _optionalChain([options, 'access', _7 => _7.keysToOmit, 'optionalAccess', _8 => _8.length]) ? factory.createOmitDeclaration({
|
279
|
+
keys: options.keysToOmit,
|
280
|
+
type,
|
281
|
+
nonNullable: true
|
282
|
+
}) : type
|
283
283
|
});
|
284
284
|
const enumSchemas = _swagger.SchemaGenerator.deepSearch(schemas, _swagger.schemaKeywords.enum);
|
285
285
|
if (enumSchemas) {
|
286
286
|
enumSchemas.forEach((enumSchema) => {
|
287
|
-
extraNodes.push(
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
Boolean
|
292
|
-
|
293
|
-
|
294
|
-
|
287
|
+
extraNodes.push(
|
288
|
+
...factory.createEnumDeclaration({
|
289
|
+
name: _transformers2.default.camelCase(enumSchema.args.name),
|
290
|
+
typeName: enumSchema.args.typeName,
|
291
|
+
enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [_transformers2.default.trimQuotes(_optionalChain([item, 'access', _9 => _9.name, 'optionalAccess', _10 => _10.toString, 'call', _11 => _11()])), item.value]).filter(Boolean),
|
292
|
+
type: options.enumType
|
293
|
+
})
|
294
|
+
);
|
295
295
|
});
|
296
296
|
}
|
297
297
|
nodes.push(
|
298
298
|
factory.appendJSDocToNode({
|
299
299
|
node,
|
300
|
-
comments: [
|
301
|
-
options.description ? `@description ${_transformers2.default.jsStringEscape(options.description)}` : void 0
|
302
|
-
].filter(Boolean)
|
300
|
+
comments: [options.description ? `@description ${_transformers2.default.jsStringEscape(options.description)}` : void 0].filter(Boolean)
|
303
301
|
})
|
304
302
|
);
|
305
303
|
const filterdNodes = nodes.filter(
|
@@ -315,7 +313,9 @@ function typeParser(schemas, options) {
|
|
315
313
|
var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
|
316
314
|
async schema(name, object) {
|
317
315
|
const { oas, pluginManager, mode, plugin, output } = this.context;
|
318
|
-
const root = _react.createRoot.call(void 0, {
|
316
|
+
const root = _react.createRoot.call(void 0, {
|
317
|
+
logger: pluginManager.logger
|
318
|
+
});
|
319
319
|
root.render(
|
320
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, mode }) }) }),
|
321
321
|
{ meta: { pluginManager, plugin } }
|
@@ -323,13 +323,18 @@ var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
|
|
323
323
|
return root.files;
|
324
324
|
}
|
325
325
|
// TODO convert to a react component called `Schema.Parser` with props parser as part of the SchemaContext
|
326
|
-
getSource(name, schemas, {
|
327
|
-
keysToOmit,
|
328
|
-
description
|
329
|
-
} = {}) {
|
326
|
+
getSource(name, schemas, { keysToOmit, description } = {}) {
|
330
327
|
const texts = [];
|
331
|
-
const resolvedName = this.context.pluginManager.resolveName({
|
332
|
-
|
328
|
+
const resolvedName = this.context.pluginManager.resolveName({
|
329
|
+
name,
|
330
|
+
pluginKey,
|
331
|
+
type: "function"
|
332
|
+
});
|
333
|
+
const resvoledTypeName = this.context.pluginManager.resolveName({
|
334
|
+
name,
|
335
|
+
pluginKey,
|
336
|
+
type: "type"
|
337
|
+
});
|
333
338
|
const typeOutput = typeParser(schemas, {
|
334
339
|
name: resolvedName,
|
335
340
|
typeName: resvoledTypeName,
|
@@ -354,42 +359,24 @@ var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
|
|
354
359
|
|
355
360
|
function printCombinedSchema(name, operation, schemas) {
|
356
361
|
const properties = {
|
357
|
-
|
358
|
-
factory2.createIdentifier(schemas.response.name),
|
359
|
-
void 0
|
360
|
-
)
|
362
|
+
response: factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.response.name), void 0)
|
361
363
|
};
|
362
364
|
if (schemas.request) {
|
363
|
-
properties["request"] = factory2.createTypeReferenceNode(
|
364
|
-
factory2.createIdentifier(schemas.request.name),
|
365
|
-
void 0
|
366
|
-
);
|
365
|
+
properties["request"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.request.name), void 0);
|
367
366
|
}
|
368
367
|
if (schemas.pathParams) {
|
369
|
-
properties["pathParams"] = factory2.createTypeReferenceNode(
|
370
|
-
factory2.createIdentifier(schemas.pathParams.name),
|
371
|
-
void 0
|
372
|
-
);
|
368
|
+
properties["pathParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.pathParams.name), void 0);
|
373
369
|
}
|
374
370
|
if (schemas.queryParams) {
|
375
|
-
properties["queryParams"] = factory2.createTypeReferenceNode(
|
376
|
-
factory2.createIdentifier(schemas.queryParams.name),
|
377
|
-
void 0
|
378
|
-
);
|
371
|
+
properties["queryParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.queryParams.name), void 0);
|
379
372
|
}
|
380
373
|
if (schemas.headerParams) {
|
381
|
-
properties["headerParams"] = factory2.createTypeReferenceNode(
|
382
|
-
factory2.createIdentifier(schemas.headerParams.name),
|
383
|
-
void 0
|
384
|
-
);
|
374
|
+
properties["headerParams"] = factory2.createTypeReferenceNode(factory2.createIdentifier(schemas.headerParams.name), void 0);
|
385
375
|
}
|
386
376
|
if (schemas.errors) {
|
387
377
|
properties["errors"] = factory2.createUnionDeclaration({
|
388
378
|
nodes: schemas.errors.map((error) => {
|
389
|
-
return factory2.createTypeReferenceNode(
|
390
|
-
factory2.createIdentifier(error.name),
|
391
|
-
void 0
|
392
|
-
);
|
379
|
+
return factory2.createTypeReferenceNode(factory2.createIdentifier(error.name), void 0);
|
393
380
|
})
|
394
381
|
});
|
395
382
|
}
|
@@ -401,12 +388,10 @@ function printCombinedSchema(name, operation, schemas) {
|
|
401
388
|
if (!type) {
|
402
389
|
return void 0;
|
403
390
|
}
|
404
|
-
return factory2.createPropertySignature(
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
}
|
409
|
-
);
|
391
|
+
return factory2.createPropertySignature({
|
392
|
+
name: _transformers2.default.pascalCase(key),
|
393
|
+
type
|
394
|
+
});
|
410
395
|
}).filter(Boolean)
|
411
396
|
),
|
412
397
|
modifiers: [factory2.modifiers.export]
|
@@ -420,37 +405,27 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
420
405
|
const plugin = _react.usePlugin.call(void 0, );
|
421
406
|
const pluginManager = _react.usePluginManager.call(void 0, );
|
422
407
|
const oas = _hooks.useOas.call(void 0, );
|
423
|
-
const
|
424
|
-
const file = _hooks.useGetOperationFile.call(void 0, );
|
425
|
-
const factoryName = _hooks.useOperationName.call(void 0, { type: "type" });
|
408
|
+
const { getSchemas, getFile, getName } = _hooks.useOperationManager.call(void 0, );
|
426
409
|
const operation = _hooks.useOperation.call(void 0, );
|
427
|
-
const
|
428
|
-
const
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
].flat().filter(Boolean);
|
410
|
+
const file = getFile(operation);
|
411
|
+
const schemas = getSchemas(operation);
|
412
|
+
const factoryName = getName(operation, { type: "type" });
|
413
|
+
const generator = new SchemaGenerator2(plugin.options, {
|
414
|
+
oas,
|
415
|
+
plugin,
|
416
|
+
pluginManager
|
417
|
+
});
|
418
|
+
const items = [schemas.pathParams, schemas.queryParams, schemas.headerParams, schemas.statusCodes, schemas.request, schemas.response].flat().filter(Boolean);
|
436
419
|
const mapItem = ({ name, schema: object, ...options }, i) => {
|
437
420
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _components.Oas.Schema, { generator, name, object, children: [
|
438
421
|
mode === "directory" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.Imports, { isTypeOnly: true }),
|
439
422
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Schema.Source, { options }) })
|
440
423
|
] }, i);
|
441
424
|
};
|
442
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Editor, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
443
|
-
|
444
|
-
{
|
445
|
-
|
446
|
-
path: file.path,
|
447
|
-
meta: file.meta,
|
448
|
-
children: [
|
449
|
-
items.map(mapItem),
|
450
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: printCombinedSchema(factoryName, operation, schemas) })
|
451
|
-
]
|
452
|
-
}
|
453
|
-
) });
|
425
|
+
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: [
|
426
|
+
items.map(mapItem),
|
427
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Source, { children: printCombinedSchema(factoryName, operation, schemas) })
|
428
|
+
] }) });
|
454
429
|
};
|
455
430
|
|
456
431
|
// src/OperationGenerator.tsx
|
@@ -458,7 +433,9 @@ OperationSchema.File = function({ mode = "directory" }) {
|
|
458
433
|
var OperationGenerator = class extends _swagger.OperationGenerator {
|
459
434
|
async all(operations) {
|
460
435
|
const { oas, pluginManager, plugin } = this.context;
|
461
|
-
const root = _react.createRoot.call(void 0, {
|
436
|
+
const root = _react.createRoot.call(void 0, {
|
437
|
+
logger: pluginManager.logger
|
438
|
+
});
|
462
439
|
root.render(
|
463
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" }) }),
|
464
441
|
{ meta: { pluginManager, plugin } }
|
@@ -467,7 +444,9 @@ var OperationGenerator = class extends _swagger.OperationGenerator {
|
|
467
444
|
}
|
468
445
|
async operation(operation, options) {
|
469
446
|
const { oas, pluginManager, plugin, mode } = this.context;
|
470
|
-
const root = _react.createRoot.call(void 0, {
|
447
|
+
const root = _react.createRoot.call(void 0, {
|
448
|
+
logger: pluginManager.logger
|
449
|
+
});
|
471
450
|
root.render(
|
472
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, { mode }) }) }),
|
473
452
|
{ meta: { pluginManager, plugin: { ...plugin, options } } }
|
@@ -554,33 +533,27 @@ var definePlugin = _core.createPlugin.call(void 0, (options) => {
|
|
554
533
|
const oas = await swaggerPlugin.api.getOas();
|
555
534
|
const root = _path2.default.resolve(this.config.root, this.config.output.path);
|
556
535
|
const mode = _core.FileManager.getMode(_path2.default.resolve(root, output.path));
|
557
|
-
const schemaGenerator = new SchemaGenerator2(
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
output: output.path
|
567
|
-
}
|
568
|
-
);
|
536
|
+
const schemaGenerator = new SchemaGenerator2(this.plugin.options, {
|
537
|
+
oas,
|
538
|
+
pluginManager: this.pluginManager,
|
539
|
+
plugin: this.plugin,
|
540
|
+
contentType: swaggerPlugin.api.contentType,
|
541
|
+
include: void 0,
|
542
|
+
mode,
|
543
|
+
output: output.path
|
544
|
+
});
|
569
545
|
const schemaFiles = await schemaGenerator.build();
|
570
546
|
await this.addFile(...schemaFiles);
|
571
|
-
const operationGenerator = new OperationGenerator(
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
mode
|
582
|
-
}
|
583
|
-
);
|
547
|
+
const operationGenerator = new OperationGenerator(this.plugin.options, {
|
548
|
+
oas,
|
549
|
+
pluginManager: this.pluginManager,
|
550
|
+
plugin: this.plugin,
|
551
|
+
contentType: swaggerPlugin.api.contentType,
|
552
|
+
exclude,
|
553
|
+
include,
|
554
|
+
override,
|
555
|
+
mode
|
556
|
+
});
|
584
557
|
const operationFiles = await operationGenerator.build();
|
585
558
|
await this.addFile(...operationFiles);
|
586
559
|
},
|
@@ -610,4 +583,4 @@ var src_default = definePluginDefault;
|
|
610
583
|
|
611
584
|
|
612
585
|
exports.OasType = OasType; exports.OperationSchema = OperationSchema; exports.pluginName = pluginName; exports.pluginKey = pluginKey; exports.definePlugin = definePlugin; exports.src_default = src_default;
|
613
|
-
//# sourceMappingURL=chunk-
|
586
|
+
//# sourceMappingURL=chunk-WZKUY426.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":["createRoot","Generator","Oas","Template","pluginKey","transformers","print","factory","Editor","File","usePlugin","usePluginManager","Schema","useOas","value","item","node","jsx","SchemaGenerator","Fragment","jsxs","options"],"mappings":"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","sourcesContent":["import path from 'node:path'\n\nimport { createPlugin, FileManager, PluginManager } 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 === 'file') {\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 })\n },\n }\n})\n","import { 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 { AppContextProps } from '@kubb/react'\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 } = this.context\n\n const root = createRoot<AppContextProps<PluginOptions['appMeta']>>({\n logger: pluginManager.logger,\n })\n\n root.render(\n <Oas oas={oas} operations={operations} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n {plugin.options.oasType && <OasType.File name=\"oas\" typeName=\"Oas\" />}\n </Oas>,\n { meta: { pluginManager, plugin } },\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<AppContextProps<PluginOptions['appMeta']>>({\n logger: pluginManager.logger,\n })\n root.render(\n <Oas oas={oas} operations={[operation]} getOperationSchemas={(...props) => this.getSchemas(...props)}>\n <Oas.Operation operation={operation}>\n <OperationSchema.File mode={mode} />\n </Oas.Operation>\n </Oas>,\n { meta: { pluginManager, plugin: { ...plugin, options } } },\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, usePlugin, usePluginManager } 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 { key: pluginKey } = usePlugin<PluginOptions>()\n const pluginManager = usePluginManager()\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, usePlugin, usePluginManager } 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 mode: KubbFile.Mode | undefined\n}\n\nOperationSchema.File = function ({ mode = 'directory' }: FileProps): ReactNode {\n const plugin = usePlugin<PluginOptions>()\n\n const pluginManager = usePluginManager()\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 })\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 === 'directory' && <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 { createRoot } from '@kubb/react'\nimport { SchemaGenerator as Generator } from '@kubb/swagger'\nimport { Oas, Schema } from '@kubb/swagger/components'\nimport { pluginKey as swaggerTypeScriptPluginKey } from '@kubb/swagger-ts'\n\nimport { pluginKey } from './plugin.ts'\nimport { typeParser } from './typeParser.ts'\n\nimport type { AppContextProps } from '@kubb/react'\nimport type { Schema as SchemaType, SchemaGeneratorBuildOptions, SchemaMethodResult } 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<AppContextProps<PluginOptions['appMeta']>>({\n logger: pluginManager.logger,\n })\n\n root.render(\n <Oas oas={oas}>\n <Oas.Schema generator={this} name={name} object={object}>\n <Schema.File isTypeOnly output={output} mode={mode} />\n </Oas.Schema>\n </Oas>,\n { meta: { pluginManager, plugin } },\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 { isKeyword, SchemaGenerator, 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 lazy: undefined,\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<(ctx?: any) => 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?: typeof typeKeywordMapper\n}\n\nexport function parseTypeMeta(item: Schema, options: ParserOptions): ts.Node | null | undefined {\n const mapper = options.mapper || typeKeywordMapper\n const value = mapper[item.keyword as keyof typeof mapper]\n\n if (!value) {\n return undefined\n }\n\n if (isKeyword(item, schemaKeywords.union)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['union']\n return value(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.and)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['and']\n return value(item.args.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.array)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['array']\n return value(item.args.items.map((orItem) => parseTypeMeta(orItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.enum)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['enum']\n return value(item.args.typeName)\n }\n\n if (isKeyword(item, schemaKeywords.ref)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['ref']\n return value(item.args.name)\n }\n\n if (isKeyword(item, schemaKeywords.blob)) {\n return value()\n }\n\n if (isKeyword(item, schemaKeywords.tuple)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['tuple']\n return value(item.args.map((tupleItem) => parseTypeMeta(tupleItem, options)).filter(Boolean) as ts.TypeNode[])\n }\n\n if (isKeyword(item, schemaKeywords.const)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['const']\n\n return value(item.args.name, item.args.format)\n }\n\n if (isKeyword(item, schemaKeywords.object)) {\n const value = mapper[item.keyword as keyof typeof mapper] as (typeof typeKeywordMapper)['object']\n\n const properties = Object.entries(item.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((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 const isReadonly = schemas.some((item) => item.keyword === schemaKeywords.readOnly)\n const describeSchema = schemas.find((item) => item.keyword === schemaKeywords.describe) as SchemaKeywordMapper['describe'] | undefined\n const deprecatedSchema = schemas.find((item) => item.keyword === schemaKeywords.deprecated) as SchemaKeywordMapper['deprecated'] | undefined\n const defaultSchema = schemas.find((item) => item.keyword === schemaKeywords.default) as SchemaKeywordMapper['default'] | undefined\n const exampleSchema = schemas.find((item) => item.keyword === schemaKeywords.example) as SchemaKeywordMapper['example'] | undefined\n const typeSchema = schemas.find((item) => item.keyword === schemaKeywords.type) as SchemaKeywordMapper['type'] | undefined\n const formatSchema = schemas.find((item) => item.keyword === schemaKeywords.format) as SchemaKeywordMapper['format'] | undefined\n\n let type = schemas.map((item) => parseTypeMeta(item, 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 = item.args?.additionalProperties?.length\n ? factory.createIndexSignature(\n item.args.additionalProperties\n .map((schema) => parseTypeMeta(schema, options))\n .filter(Boolean)\n .at(0) as ts.TypeNode,\n )\n : undefined\n\n return value([...properties, additionalProperties].filter(Boolean))\n }\n\n if (item.keyword in mapper) {\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(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"]}
|