@kubb/swagger-ts 2.18.0 → 2.18.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.
@@ -1,17 +1,5 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/plugin.ts
2
- var _path = require('path'); var _path2 = _interopRequireDefault(_path);
3
- var _core = require('@kubb/core');
4
- var _transformers = require('@kubb/core/transformers'); var _transformers2 = _interopRequireDefault(_transformers);
5
- var _utils = require('@kubb/core/utils');
6
- var _swagger = require('@kubb/swagger');
7
-
8
- // src/OperationGenerator.tsx
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/components/OasType.tsx
9
2
  var _react = require('@kubb/react');
10
-
11
- var _components = require('@kubb/swagger/components');
12
-
13
- // src/components/OasType.tsx
14
-
15
3
  var _hooks = require('@kubb/swagger/hooks');
16
4
  var _jsxruntime = require('@kubb/react/jsx-runtime');
17
5
  function Template({ name, typeName, api }) {
@@ -29,9 +17,9 @@ function OasType({ name, typeName, Template: Template2 = defaultTemplates.defaul
29
17
  OasType.File = function({ name, typeName, templates = defaultTemplates }) {
30
18
  const {
31
19
  pluginManager,
32
- plugin: { key: pluginKey2 }
20
+ plugin: { key: pluginKey }
33
21
  } = _react.useApp.call(void 0, );
34
- const file = pluginManager.getFile({ name, extName: ".ts", pluginKey: pluginKey2 });
22
+ const file = pluginManager.getFile({ name, extName: ".ts", pluginKey });
35
23
  const Template2 = templates.default;
36
24
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.Parser, { language: "typescript", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react.File, { baseName: file.baseName, path: file.path, meta: file.meta, children: [
37
25
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.File.Import, { name: ["Infer"], path: "@kubb/swagger-ts/oas", isTypeOnly: true }),
@@ -41,17 +29,170 @@ OasType.File = function({ name, typeName, templates = defaultTemplates }) {
41
29
  OasType.templates = defaultTemplates;
42
30
 
43
31
  // src/components/OperationSchema.tsx
32
+ var _transformers = require('@kubb/core/transformers'); var _transformers2 = _interopRequireDefault(_transformers);
33
+ var _parserts = require('@kubb/parser-ts');
34
+ var _factory = require('@kubb/parser-ts/factory'); var factory2 = _interopRequireWildcard(_factory); var factory = _interopRequireWildcard(_factory);
44
35
 
45
- var _tsparser = require('@kubb/ts-parser');
46
- var _factory = require('@kubb/ts-parser/factory'); var factory2 = _interopRequireWildcard(_factory); var factory = _interopRequireWildcard(_factory);
36
+ var _components = require('@kubb/swagger/components');
47
37
 
48
38
 
39
+ // src/SchemaGenerator.tsx
49
40
 
41
+ var _swagger = require('@kubb/swagger');
50
42
 
51
- // src/SchemaGenerator.tsx
52
43
 
44
+ // src/plugin.ts
45
+ var _path = require('path'); var _path2 = _interopRequireDefault(_path);
46
+ var _core = require('@kubb/core');
53
47
 
48
+ var _utils = require('@kubb/core/utils');
49
+
50
+
51
+ // src/OperationGenerator.tsx
52
+
53
+
54
+
55
+
56
+ var OperationGenerator = class extends _swagger.OperationGenerator {
57
+ async all(operations) {
58
+ const { oas, pluginManager, plugin, mode } = this.context;
59
+ const root = _react.createRoot.call(void 0, {
60
+ logger: pluginManager.logger
61
+ });
62
+ root.render(
63
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations, generator: this, children: plugin.options.oasType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType.File, { name: "oas", typeName: "Oas" }) }) })
64
+ );
65
+ return root.files;
66
+ }
67
+ async operation(operation, options) {
68
+ const { oas, pluginManager, plugin, mode } = this.context;
69
+ const root = _react.createRoot.call(void 0, {
70
+ logger: pluginManager.logger
71
+ });
72
+ root.render(
73
+ /* @__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], generator: this, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Operation, { operation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OperationSchema.File, {}) }) }) })
74
+ );
75
+ return root.files;
76
+ }
77
+ async get() {
78
+ return null;
79
+ }
80
+ async post() {
81
+ return null;
82
+ }
83
+ async put() {
84
+ return null;
85
+ }
86
+ async patch() {
87
+ return null;
88
+ }
89
+ async delete() {
90
+ return null;
91
+ }
92
+ };
54
93
 
94
+ // src/plugin.ts
95
+ var pluginTsName = "plugin-ts";
96
+ var pluginTs = _core.createPlugin.call(void 0, (options) => {
97
+ const {
98
+ output = { path: "types" },
99
+ group,
100
+ exclude = [],
101
+ include,
102
+ override = [],
103
+ enumType = "asConst",
104
+ enumSuffix = "",
105
+ dateType = "string",
106
+ unknownType = "any",
107
+ optionalType = "questionToken",
108
+ transformers: transformers3 = {},
109
+ oasType = false
110
+ } = options;
111
+ const template = _optionalChain([group, 'optionalAccess', _ => _.output]) ? group.output : `${output.path}/{{tag}}Controller`;
112
+ return {
113
+ name: pluginTsName,
114
+ options: {
115
+ transformers: transformers3,
116
+ dateType,
117
+ optionalType,
118
+ oasType,
119
+ enumType,
120
+ enumSuffix,
121
+ // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)
122
+ usedEnumNames: {},
123
+ unknownType,
124
+ override
125
+ },
126
+ pre: [_swagger.pluginSwaggerName],
127
+ resolvePath(baseName, pathMode, options2) {
128
+ const root = _path2.default.resolve(this.config.root, this.config.output.path);
129
+ const mode = _nullishCoalesce(pathMode, () => ( _core.FileManager.getMode(_path2.default.resolve(root, output.path))));
130
+ if (mode === "single") {
131
+ return _path2.default.resolve(root, output.path);
132
+ }
133
+ if (_optionalChain([options2, 'optionalAccess', _2 => _2.tag]) && _optionalChain([group, 'optionalAccess', _3 => _3.type]) === "tag") {
134
+ const tag = _transformers.camelCase.call(void 0, options2.tag);
135
+ return _path2.default.resolve(root, _utils.renderTemplate.call(void 0, template, { tag }), baseName);
136
+ }
137
+ return _path2.default.resolve(root, output.path, baseName);
138
+ },
139
+ resolveName(name, type) {
140
+ const resolvedName = _transformers.pascalCase.call(void 0, name, { isFile: type === "file" });
141
+ if (type) {
142
+ return _optionalChain([transformers3, 'optionalAccess', _4 => _4.name, 'optionalCall', _5 => _5(resolvedName, type)]) || resolvedName;
143
+ }
144
+ return resolvedName;
145
+ },
146
+ async writeFile(source, writePath) {
147
+ if (!writePath.endsWith(".ts") || !source) {
148
+ return;
149
+ }
150
+ return this.fileManager.write(source, writePath, { sanity: false });
151
+ },
152
+ async buildStart() {
153
+ const [swaggerPlugin] = _core.PluginManager.getDependedPlugins(this.plugins, [_swagger.pluginSwaggerName]);
154
+ const oas = await swaggerPlugin.api.getOas();
155
+ const root = _path2.default.resolve(this.config.root, this.config.output.path);
156
+ const mode = _core.FileManager.getMode(_path2.default.resolve(root, output.path));
157
+ const schemaGenerator = new SchemaGenerator(this.plugin.options, {
158
+ oas,
159
+ pluginManager: this.pluginManager,
160
+ plugin: this.plugin,
161
+ contentType: swaggerPlugin.api.contentType,
162
+ include: void 0,
163
+ override,
164
+ mode,
165
+ output: output.path
166
+ });
167
+ const schemaFiles = await schemaGenerator.build();
168
+ await this.addFile(...schemaFiles);
169
+ const operationGenerator = new OperationGenerator(this.plugin.options, {
170
+ oas,
171
+ pluginManager: this.pluginManager,
172
+ plugin: this.plugin,
173
+ contentType: swaggerPlugin.api.contentType,
174
+ exclude,
175
+ include,
176
+ override,
177
+ mode
178
+ });
179
+ const operationFiles = await operationGenerator.build();
180
+ await this.addFile(...operationFiles);
181
+ },
182
+ async buildEnd() {
183
+ if (this.config.output.write === false) {
184
+ return;
185
+ }
186
+ const root = _path2.default.resolve(this.config.root, this.config.output.path);
187
+ await this.fileManager.addIndexes({
188
+ root,
189
+ output,
190
+ meta: { pluginKey: this.plugin.key },
191
+ logger: this.logger
192
+ });
193
+ }
194
+ };
195
+ });
55
196
 
56
197
  // src/typeParser.ts
57
198
 
@@ -181,7 +322,7 @@ function parseTypeMeta(parent, current, options) {
181
322
  return typeKeywordMapper.const(current.args.name, current.args.format);
182
323
  }
183
324
  if (_swagger.isKeyword.call(void 0, current, _swagger.schemaKeywords.object)) {
184
- const properties = Object.entries(_optionalChain([current, 'access', _ => _.args, 'optionalAccess', _2 => _2.properties]) || {}).filter((item) => {
325
+ const properties = Object.entries(_optionalChain([current, 'access', _6 => _6.args, 'optionalAccess', _7 => _7.properties]) || {}).filter((item) => {
185
326
  const schemas = item[1];
186
327
  return schemas && typeof schemas.map === "function";
187
328
  }).map(([_name, schemas]) => {
@@ -228,11 +369,11 @@ function parseTypeMeta(parent, current, options) {
228
369
  deprecatedSchema ? "@deprecated" : void 0,
229
370
  defaultSchema ? `@default ${defaultSchema.args}` : void 0,
230
371
  exampleSchema ? `@example ${exampleSchema.args}` : void 0,
231
- _optionalChain([schemaSchema, 'optionalAccess', _3 => _3.args, 'optionalAccess', _4 => _4.type]) || _optionalChain([schemaSchema, 'optionalAccess', _5 => _5.args, 'optionalAccess', _6 => _6.format]) ? [`@type ${_optionalChain([schemaSchema, 'optionalAccess', _7 => _7.args, 'optionalAccess', _8 => _8.type]) || "unknown"}${!isOptional ? "" : " | undefined"}`, _optionalChain([schemaSchema, 'optionalAccess', _9 => _9.args, 'optionalAccess', _10 => _10.format])].filter(Boolean).join(", ") : void 0
372
+ _optionalChain([schemaSchema, 'optionalAccess', _8 => _8.args, 'optionalAccess', _9 => _9.type]) || _optionalChain([schemaSchema, 'optionalAccess', _10 => _10.args, 'optionalAccess', _11 => _11.format]) ? [`@type ${_optionalChain([schemaSchema, 'optionalAccess', _12 => _12.args, 'optionalAccess', _13 => _13.type]) || "unknown"}${!isOptional ? "" : " | undefined"}`, _optionalChain([schemaSchema, 'optionalAccess', _14 => _14.args, 'optionalAccess', _15 => _15.format])].filter(Boolean).join(", ") : void 0
232
373
  ].filter(Boolean)
233
374
  });
234
375
  });
235
- const additionalProperties = _optionalChain([current, 'access', _11 => _11.args, 'optionalAccess', _12 => _12.additionalProperties, 'optionalAccess', _13 => _13.length]) ? factory.createIndexSignature(
376
+ const additionalProperties = _optionalChain([current, 'access', _16 => _16.args, 'optionalAccess', _17 => _17.additionalProperties, 'optionalAccess', _18 => _18.length]) ? factory.createIndexSignature(
236
377
  current.args.additionalProperties.map((schema) => parseTypeMeta(current, schema, options)).filter(Boolean).at(0)
237
378
  ) : void 0;
238
379
  return typeKeywordMapper.object([...properties, additionalProperties].filter(Boolean));
@@ -279,7 +420,7 @@ function typeParser(schemas, options) {
279
420
  const node = factory.createTypeAliasDeclaration({
280
421
  modifiers: [factory.modifiers.export],
281
422
  name: options.name,
282
- type: _optionalChain([options, 'access', _14 => _14.keysToOmit, 'optionalAccess', _15 => _15.length]) ? factory.createOmitDeclaration({
423
+ type: _optionalChain([options, 'access', _19 => _19.keysToOmit, 'optionalAccess', _20 => _20.length]) ? factory.createOmitDeclaration({
283
424
  keys: options.keysToOmit,
284
425
  type,
285
426
  nonNullable: true
@@ -292,7 +433,7 @@ function typeParser(schemas, options) {
292
433
  ...factory.createEnumDeclaration({
293
434
  name: _transformers2.default.camelCase(enumSchema.args.name),
294
435
  typeName: enumSchema.args.typeName,
295
- enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [_transformers2.default.trimQuotes(_optionalChain([item, 'access', _16 => _16.name, 'optionalAccess', _17 => _17.toString, 'call', _18 => _18()])), item.value]).filter(Boolean),
436
+ enums: enumSchema.args.items.map((item) => item.value === void 0 ? void 0 : [_transformers2.default.trimQuotes(_optionalChain([item, 'access', _21 => _21.name, 'optionalAccess', _22 => _22.toString, 'call', _23 => _23()])), item.value]).filter(Boolean),
296
437
  type: options.enumType
297
438
  })
298
439
  );
@@ -306,15 +447,15 @@ function typeParser(schemas, options) {
306
447
  );
307
448
  const filterdNodes = nodes.filter(
308
449
  (node2) => !extraNodes.some(
309
- (extraNode) => _optionalChain([extraNode, 'optionalAccess', _19 => _19.name, 'optionalAccess', _20 => _20.escapedText]) === _optionalChain([node2, 'optionalAccess', _21 => _21.name, 'optionalAccess', _22 => _22.escapedText])
450
+ (extraNode) => _optionalChain([extraNode, 'optionalAccess', _24 => _24.name, 'optionalAccess', _25 => _25.escapedText]) === _optionalChain([node2, 'optionalAccess', _26 => _26.name, 'optionalAccess', _27 => _27.escapedText])
310
451
  )
311
452
  );
312
- return _tsparser.print.call(void 0, [...extraNodes, ...filterdNodes]);
453
+ return _parserts.print.call(void 0, [...extraNodes, ...filterdNodes]);
313
454
  }
314
455
 
315
456
  // src/SchemaGenerator.tsx
316
457
 
317
- var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
458
+ var SchemaGenerator = class extends _swagger.SchemaGenerator {
318
459
  async schema(name, object) {
319
460
  const { oas, pluginManager, mode, plugin, output } = this.context;
320
461
  const root = _react.createRoot.call(void 0, {
@@ -330,17 +471,17 @@ var SchemaGenerator2 = class extends _swagger.SchemaGenerator {
330
471
  const texts = [];
331
472
  const resolvedName = this.context.pluginManager.resolveName({
332
473
  name,
333
- pluginKey,
474
+ pluginKey: [pluginTsName],
334
475
  type: "function"
335
476
  });
336
- const resvoledTypeName = this.context.pluginManager.resolveName({
477
+ const resolvedTypeName = this.context.pluginManager.resolveName({
337
478
  name,
338
- pluginKey,
479
+ pluginKey: [pluginTsName],
339
480
  type: "type"
340
481
  });
341
482
  const typeOutput = typeParser(schemas, {
342
483
  name: resolvedName,
343
- typeName: resvoledTypeName,
484
+ typeName: resolvedTypeName,
344
485
  description,
345
486
  enumType: this.options.enumType || "asConst",
346
487
  optionalType: this.options.optionalType,
@@ -400,7 +541,7 @@ function printCombinedSchema(name, operation, schemas) {
400
541
  ),
401
542
  modifiers: [factory2.modifiers.export]
402
543
  });
403
- return _tsparser.print.call(void 0, namespaceNode);
544
+ return _parserts.print.call(void 0, namespaceNode);
404
545
  }
405
546
  function OperationSchema({}) {
406
547
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, {});
@@ -413,7 +554,7 @@ OperationSchema.File = function({}) {
413
554
  const file = getFile(operation);
414
555
  const schemas = getSchemas(operation);
415
556
  const factoryName = getName(operation, { type: "type" });
416
- const generator = new SchemaGenerator2(plugin.options, {
557
+ const generator = new SchemaGenerator(plugin.options, {
417
558
  oas,
418
559
  plugin,
419
560
  pluginManager,
@@ -433,160 +574,10 @@ OperationSchema.File = function({}) {
433
574
  ] }) });
434
575
  };
435
576
 
436
- // src/OperationGenerator.tsx
437
-
438
- var OperationGenerator = class extends _swagger.OperationGenerator {
439
- async all(operations) {
440
- const { oas, pluginManager, plugin, mode } = this.context;
441
- const root = _react.createRoot.call(void 0, {
442
- logger: pluginManager.logger
443
- });
444
- root.render(
445
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react.App, { pluginManager, plugin, mode, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas, { oas, operations, generator: this, children: plugin.options.oasType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OasType.File, { name: "oas", typeName: "Oas" }) }) })
446
- );
447
- return root.files;
448
- }
449
- async operation(operation, options) {
450
- const { oas, pluginManager, plugin, mode } = this.context;
451
- const root = _react.createRoot.call(void 0, {
452
- logger: pluginManager.logger
453
- });
454
- root.render(
455
- /* @__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], generator: this, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.Oas.Operation, { operation, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OperationSchema.File, {}) }) }) })
456
- );
457
- return root.files;
458
- }
459
- async get() {
460
- return null;
461
- }
462
- async post() {
463
- return null;
464
- }
465
- async put() {
466
- return null;
467
- }
468
- async patch() {
469
- return null;
470
- }
471
- async delete() {
472
- return null;
473
- }
474
- };
475
-
476
- // src/plugin.ts
477
- var pluginName = "swagger-ts";
478
- var pluginKey = [pluginName];
479
- var definePlugin = _core.createPlugin.call(void 0, (options) => {
480
- const {
481
- output = { path: "types" },
482
- group,
483
- exclude = [],
484
- include,
485
- override = [],
486
- enumType = "asConst",
487
- enumSuffix = "",
488
- dateType = "string",
489
- unknownType = "any",
490
- optionalType = "questionToken",
491
- transformers: transformers3 = {},
492
- oasType = false
493
- } = options;
494
- const template = _optionalChain([group, 'optionalAccess', _23 => _23.output]) ? group.output : `${output.path}/{{tag}}Controller`;
495
- return {
496
- name: pluginName,
497
- options: {
498
- transformers: transformers3,
499
- dateType,
500
- optionalType,
501
- oasType,
502
- enumType,
503
- enumSuffix,
504
- // keep the used enumnames between SchemaGenerator and OperationGenerator per plugin(pluginKey)
505
- usedEnumNames: {},
506
- unknownType,
507
- override
508
- },
509
- pre: [_swagger.pluginName],
510
- resolvePath(baseName, pathMode, options2) {
511
- const root = _path2.default.resolve(this.config.root, this.config.output.path);
512
- const mode = _nullishCoalesce(pathMode, () => ( _core.FileManager.getMode(_path2.default.resolve(root, output.path))));
513
- if (mode === "single") {
514
- return _path2.default.resolve(root, output.path);
515
- }
516
- if (_optionalChain([options2, 'optionalAccess', _24 => _24.tag]) && _optionalChain([group, 'optionalAccess', _25 => _25.type]) === "tag") {
517
- const tag = _transformers.camelCase.call(void 0, options2.tag);
518
- return _path2.default.resolve(root, _utils.renderTemplate.call(void 0, template, { tag }), baseName);
519
- }
520
- return _path2.default.resolve(root, output.path, baseName);
521
- },
522
- resolveName(name, type) {
523
- const resolvedName = _transformers.pascalCase.call(void 0, name, { isFile: type === "file" });
524
- if (type) {
525
- return _optionalChain([transformers3, 'optionalAccess', _26 => _26.name, 'optionalCall', _27 => _27(resolvedName, type)]) || resolvedName;
526
- }
527
- return resolvedName;
528
- },
529
- async writeFile(source, writePath) {
530
- if (!writePath.endsWith(".ts") || !source) {
531
- return;
532
- }
533
- return this.fileManager.write(source, writePath, { sanity: false });
534
- },
535
- async buildStart() {
536
- const [swaggerPlugin] = _core.PluginManager.getDependedPlugins(this.plugins, [_swagger.pluginName]);
537
- const oas = await swaggerPlugin.api.getOas();
538
- const root = _path2.default.resolve(this.config.root, this.config.output.path);
539
- const mode = _core.FileManager.getMode(_path2.default.resolve(root, output.path));
540
- const schemaGenerator = new SchemaGenerator2(this.plugin.options, {
541
- oas,
542
- pluginManager: this.pluginManager,
543
- plugin: this.plugin,
544
- contentType: swaggerPlugin.api.contentType,
545
- include: void 0,
546
- override,
547
- mode,
548
- output: output.path
549
- });
550
- const schemaFiles = await schemaGenerator.build();
551
- await this.addFile(...schemaFiles);
552
- const operationGenerator = new OperationGenerator(this.plugin.options, {
553
- oas,
554
- pluginManager: this.pluginManager,
555
- plugin: this.plugin,
556
- contentType: swaggerPlugin.api.contentType,
557
- exclude,
558
- include,
559
- override,
560
- mode
561
- });
562
- const operationFiles = await operationGenerator.build();
563
- await this.addFile(...operationFiles);
564
- },
565
- async buildEnd() {
566
- if (this.config.output.write === false) {
567
- return;
568
- }
569
- const root = _path2.default.resolve(this.config.root, this.config.output.path);
570
- await this.fileManager.addIndexes({
571
- root,
572
- output,
573
- meta: { pluginKey: this.plugin.key },
574
- logger: this.logger
575
- });
576
- }
577
- };
578
- });
579
-
580
- // src/index.ts
581
- var definePluginDefault = definePlugin;
582
- var src_default = definePluginDefault;
583
-
584
-
585
-
586
577
 
587
578
 
588
579
 
589
580
 
590
581
 
591
- exports.OasType = OasType; exports.OperationSchema = OperationSchema; exports.pluginName = pluginName; exports.pluginKey = pluginKey; exports.definePlugin = definePlugin; exports.src_default = src_default;
592
- //# sourceMappingURL=chunk-M3A7H6KB.cjs.map
582
+ exports.OasType = OasType; exports.OperationSchema = OperationSchema; exports.pluginTsName = pluginTsName; exports.pluginTs = pluginTs;
583
+ //# sourceMappingURL=chunk-WYQP4IDG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/OasType.tsx","../src/components/OperationSchema.tsx","../src/SchemaGenerator.tsx","../src/plugin.ts","../src/OperationGenerator.tsx","../src/typeParser.ts"],"names":["Template","transformers","print","factory","Parser","File","useApp","Oas","useOas","App","createRoot","Generator","jsx","options","SchemaGenerator","node","Fragment","jsxs"],"mappings":"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","sourcesContent":["import { Parser, File, Type, useApp } from '@kubb/react'\nimport { useOas } from '@kubb/swagger/hooks'\n\nimport type { OasTypes } from '@kubb/oas'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } 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<PluginTs>()\n const file = pluginManager.getFile({ name, extName: '.ts', pluginKey })\n\n const Template = templates.default\n\n return (\n <Parser 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 </Parser>\n )\n}\n\nOasType.templates = defaultTemplates\n","import transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { Parser, 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 { Operation } from '@kubb/oas'\nimport type { ts } from '@kubb/parser-ts'\nimport type { OperationSchema as OperationSchemaType } from '@kubb/swagger'\nimport type { OperationSchemas } from '@kubb/swagger'\nimport type { ReactNode } from 'react'\nimport type { FileMeta, PluginTs } from '../types.ts'\n\ntype Props = {}\n\nfunction printCombinedSchema(name: string, operation: Operation, schemas: OperationSchemas): string {\n const properties: Record<string, ts.TypeNode> = {}\n\n if (schemas.response) {\n properties['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, fileManager } = useApp<PluginTs>()\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 override: plugin.options.override,\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' && <Oas.Schema.Imports isTypeOnly />}\n <File.Source>\n <Oas.Schema.Source options={options} />\n </File.Source>\n </Oas.Schema>\n )\n }\n\n return (\n <Parser 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 </Parser>\n )\n}\n","import { App, createRoot } from '@kubb/react'\nimport { SchemaGenerator as Generator } from '@kubb/swagger'\nimport { Oas } from '@kubb/swagger/components'\n\nimport { pluginTsName } from './plugin.ts'\nimport { typeParser } from './typeParser.ts'\n\nimport type { SchemaObject } from '@kubb/oas'\nimport type { SchemaGeneratorBuildOptions, SchemaMethodResult, Schema as SchemaType } from '@kubb/swagger'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class SchemaGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\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 <Oas.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: [pluginTsName],\n type: 'function',\n })\n const resolvedTypeName = this.context.pluginManager.resolveName({\n name,\n pluginKey: [pluginTsName],\n type: 'type',\n })\n\n const typeOutput = typeParser(schemas, {\n name: resolvedName,\n typeName: resolvedTypeName,\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 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 { pluginSwaggerName } from '@kubb/swagger'\n\nimport { OperationGenerator } from './OperationGenerator.tsx'\nimport { SchemaGenerator } from './SchemaGenerator.tsx'\n\nimport type { Plugin } from '@kubb/core'\nimport type { PluginSwagger as SwaggerPluginOptions } from '@kubb/swagger'\nimport type { PluginTs } from './types.ts'\n\nexport const pluginTsName = 'plugin-ts' satisfies PluginTs['name']\n\nexport const pluginTs = createPlugin<PluginTs>((options) => {\n const {\n output = { path: 'types' },\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: pluginTsName,\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 override,\n },\n pre: [pluginSwaggerName],\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, [pluginSwaggerName])\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 override,\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 { Operation } from '@kubb/oas'\nimport type { OperationMethodResult } from '@kubb/swagger'\nimport type { FileMeta, PluginTs } from './types.ts'\n\nexport class OperationGenerator extends Generator<PluginTs['resolvedOptions'], PluginTs> {\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} generator={this}>\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: PluginTs['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]} generator={this}>\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 transformers from '@kubb/core/transformers'\nimport { print } from '@kubb/parser-ts'\nimport * as factory from '@kubb/parser-ts/factory'\nimport { SchemaGenerator, isKeyword, schemaKeywords } from '@kubb/swagger'\n\nimport type { ts } from '@kubb/parser-ts'\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: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : factory.createTypeReferenceNode(factory.createIdentifier('Date')),\n time: (type: 'date' | 'string' = 'string') =>\n type === 'string' ? factory.keywordTypeNodes.string : 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 schema: undefined,\n catchall: undefined,\n name: 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(([_name, schemas]) => {\n let name = _name\n const nameSchema = schemas.find((schema) => schema.keyword === schemaKeywords.name) as SchemaKeywordMapper['name']\n\n if (nameSchema) {\n name = nameSchema.args\n }\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 schemaSchema = schemas.find((schema) => schema.keyword === schemaKeywords.schema) as SchemaKeywordMapper['schema'] | 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 || isNullish ? ['questionToken', 'questionTokenAndUndefined'].includes(options.optionalType as string) : false,\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 schemaSchema?.args?.type || schemaSchema?.args?.format\n ? [`@type ${schemaSchema?.args?.type || 'unknown'}${!isOptional ? '' : ' | undefined'}`, schemaSchema?.args?.format].filter(Boolean).join(', ')\n : 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 (isKeyword(current, schemaKeywords.datetime)) {\n return typeKeywordMapper.datetime()\n }\n\n if (isKeyword(current, schemaKeywords.date)) {\n return typeKeywordMapper.date(current.args.type)\n }\n\n if (isKeyword(current, schemaKeywords.time)) {\n return typeKeywordMapper.time(current.args.type)\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"]}