@kubb/swagger-ts 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,13 +10,13 @@
10
10
  <!-- Badges -->
11
11
  <p>
12
12
  <a href="https://www.npmjs.com/package/@kubb/swagger-ts">
13
- <img alt="Npm version" src="https://img.shields.io/npm/v/@kubb/swagger-ts?style=for-the-badge"/>
13
+ <img alt="npm version" src="https://img.shields.io/npm/v/@kubb/swagger-ts?style=for-the-badge"/>
14
14
  </a>
15
15
  <a href="https://www.npmjs.com/package/@kubb/swagger-ts">
16
- <img alt="Npm downloads" src="https://img.shields.io/bundlephobia/min/@kubb/swagger-ts?style=for-the-badge"/>
16
+ <img alt="npm downloads" src="https://img.shields.io/bundlephobia/min/@kubb/swagger-ts?style=for-the-badge"/>
17
17
  </a>
18
18
  <a href="https://www.npmjs.com/package/@kubb/swagger-ts">
19
- <img alt="Npm downloads" src="https://img.shields.io/npm/dm/@kubb/swagger-ts?style=for-the-badge"/>
19
+ <img alt="npm downloads" src="https://img.shields.io/npm/dm/@kubb/swagger-ts?style=for-the-badge"/>
20
20
  </a>
21
21
  </p>
22
22
 
package/dist/index.cjs CHANGED
@@ -49,7 +49,7 @@ var _TypeGenerator = class extends core.SchemaGenerator {
49
49
  aliases = [];
50
50
  // Keep track of already used type aliases
51
51
  usedAliasNames = {};
52
- build(schema, baseName, description) {
52
+ build({ schema, baseName, description }) {
53
53
  const nodes = [];
54
54
  const type = this.getTypeFromSchema(schema, baseName);
55
55
  if (!type) {
@@ -120,7 +120,10 @@ var _TypeGenerator = class extends core.SchemaGenerator {
120
120
  comments: [
121
121
  schema.description && `@description ${schema.description}`,
122
122
  schema.type && `@type ${schema.type}${isRequired ? "" : " | undefined"} ${schema.format || ""}`,
123
- schema.example && `@example ${schema.example}`
123
+ schema.example && `@example ${schema.example}`,
124
+ schema.deprecated && `@deprecated`,
125
+ schema.default !== void 0 && typeof schema.default === "string" && `@default '${schema.default}'`,
126
+ schema.default !== void 0 && typeof schema.default !== "string" && `@default ${schema.default}`
124
127
  ]
125
128
  });
126
129
  }
@@ -299,19 +302,19 @@ var TypeBuilder = class extends swagger.OasBuilder {
299
302
  }
300
303
  async print(name) {
301
304
  const codes = [];
302
- const generated = this.items.filter((gen) => name ? gen.name === name : true).sort(core.nameSorter).map((gen) => {
305
+ const generated = this.items.filter((operationSchema) => name ? operationSchema.name === name : true).sort(core.nameSorter).map((operationSchema) => {
303
306
  const generator = new TypeGenerator(this.oas, {
304
307
  withJSDocs: this.config.withJSDocs,
305
308
  resolveName: this.config.resolveName,
306
309
  enumType: this.config.enumType
307
310
  });
308
- const nodes = generator.build(gen.schema, gen.name, gen.description);
311
+ const sources = generator.build({ schema: operationSchema.schema, baseName: operationSchema.name, description: operationSchema.description });
309
312
  return {
310
313
  import: {
311
314
  refs: generator.refs,
312
- name: gen.name
315
+ name: operationSchema.name
313
316
  },
314
- sources: nodes
317
+ sources
315
318
  };
316
319
  }).sort(refsSorter);
317
320
  generated.forEach((item) => {
@@ -356,12 +359,12 @@ var OperationGenerator = class extends swagger.OperationGenerator {
356
359
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
357
360
  const type = this.resolve(operation);
358
361
  const fileResolver = (name) => {
359
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
362
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
360
363
  const resolvedTypeId = resolvePath({
361
364
  fileName: `${name}.ts`,
362
365
  pluginName
363
366
  });
364
- return core.getRelativePath(filePath, resolvedTypeId);
367
+ return core.getRelativePath(root, resolvedTypeId);
365
368
  };
366
369
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
367
370
  return {
@@ -374,12 +377,12 @@ var OperationGenerator = class extends swagger.OperationGenerator {
374
377
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
375
378
  const type = this.resolve(operation);
376
379
  const fileResolver = (name) => {
377
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
380
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
378
381
  const resolvedTypeId = resolvePath({
379
382
  fileName: `${name}.ts`,
380
383
  pluginName
381
384
  });
382
- return core.getRelativePath(filePath, resolvedTypeId);
385
+ return core.getRelativePath(root, resolvedTypeId);
383
386
  };
384
387
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.request).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
385
388
  return {
@@ -392,12 +395,12 @@ var OperationGenerator = class extends swagger.OperationGenerator {
392
395
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
393
396
  const type = this.resolve(operation);
394
397
  const fileResolver = (name) => {
395
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
398
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
396
399
  const resolvedTypeId = resolvePath({
397
400
  fileName: `${name}.ts`,
398
401
  pluginName
399
402
  });
400
- return core.getRelativePath(filePath, resolvedTypeId);
403
+ return core.getRelativePath(root, resolvedTypeId);
401
404
  };
402
405
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.request).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
403
406
  return {
@@ -410,12 +413,12 @@ var OperationGenerator = class extends swagger.OperationGenerator {
410
413
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
411
414
  const type = this.resolve(operation);
412
415
  const fileResolver = (name) => {
413
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
416
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
414
417
  const resolvedTypeId = resolvePath({
415
418
  fileName: `${name}.ts`,
416
419
  pluginName
417
420
  });
418
- return core.getRelativePath(filePath, resolvedTypeId);
421
+ return core.getRelativePath(root, resolvedTypeId);
419
422
  };
420
423
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.request).add(schemas.queryParams).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
421
424
  return {
package/dist/index.d.ts CHANGED
@@ -59,7 +59,11 @@ declare class TypeGenerator extends SchemaGenerator<Options$1, OpenAPIV3.SchemaO
59
59
  aliases: ts.TypeAliasDeclaration[];
60
60
  usedAliasNames: Record<string, number>;
61
61
  constructor(oas: Oas, options?: Options$1);
62
- build(schema: OpenAPIV3.SchemaObject, baseName: string, description?: string): ts.Node[];
62
+ build({ schema, baseName, description }: {
63
+ schema: OpenAPIV3.SchemaObject;
64
+ baseName: string;
65
+ description?: string;
66
+ }): ts.Node[];
63
67
  /**
64
68
  * Creates a type node from a given schema.
65
69
  * Delegates to getBaseTypeFromSchema internally and
package/dist/index.js CHANGED
@@ -39,7 +39,7 @@ var _TypeGenerator = class extends SchemaGenerator {
39
39
  aliases = [];
40
40
  // Keep track of already used type aliases
41
41
  usedAliasNames = {};
42
- build(schema, baseName, description) {
42
+ build({ schema, baseName, description }) {
43
43
  const nodes = [];
44
44
  const type = this.getTypeFromSchema(schema, baseName);
45
45
  if (!type) {
@@ -110,7 +110,10 @@ var _TypeGenerator = class extends SchemaGenerator {
110
110
  comments: [
111
111
  schema.description && `@description ${schema.description}`,
112
112
  schema.type && `@type ${schema.type}${isRequired ? "" : " | undefined"} ${schema.format || ""}`,
113
- schema.example && `@example ${schema.example}`
113
+ schema.example && `@example ${schema.example}`,
114
+ schema.deprecated && `@deprecated`,
115
+ schema.default !== void 0 && typeof schema.default === "string" && `@default '${schema.default}'`,
116
+ schema.default !== void 0 && typeof schema.default !== "string" && `@default ${schema.default}`
114
117
  ]
115
118
  });
116
119
  }
@@ -289,19 +292,19 @@ var TypeBuilder = class extends OasBuilder {
289
292
  }
290
293
  async print(name) {
291
294
  const codes = [];
292
- const generated = this.items.filter((gen) => name ? gen.name === name : true).sort(nameSorter).map((gen) => {
295
+ const generated = this.items.filter((operationSchema) => name ? operationSchema.name === name : true).sort(nameSorter).map((operationSchema) => {
293
296
  const generator = new TypeGenerator(this.oas, {
294
297
  withJSDocs: this.config.withJSDocs,
295
298
  resolveName: this.config.resolveName,
296
299
  enumType: this.config.enumType
297
300
  });
298
- const nodes = generator.build(gen.schema, gen.name, gen.description);
301
+ const sources = generator.build({ schema: operationSchema.schema, baseName: operationSchema.name, description: operationSchema.description });
299
302
  return {
300
303
  import: {
301
304
  refs: generator.refs,
302
- name: gen.name
305
+ name: operationSchema.name
303
306
  },
304
- sources: nodes
307
+ sources
305
308
  };
306
309
  }).sort(refsSorter);
307
310
  generated.forEach((item) => {
@@ -346,12 +349,12 @@ var OperationGenerator = class extends OperationGenerator$1 {
346
349
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
347
350
  const type = this.resolve(operation);
348
351
  const fileResolver = (name) => {
349
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
352
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
350
353
  const resolvedTypeId = resolvePath({
351
354
  fileName: `${name}.ts`,
352
355
  pluginName
353
356
  });
354
- return getRelativePath(filePath, resolvedTypeId);
357
+ return getRelativePath(root, resolvedTypeId);
355
358
  };
356
359
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
357
360
  return {
@@ -364,12 +367,12 @@ var OperationGenerator = class extends OperationGenerator$1 {
364
367
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
365
368
  const type = this.resolve(operation);
366
369
  const fileResolver = (name) => {
367
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
370
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
368
371
  const resolvedTypeId = resolvePath({
369
372
  fileName: `${name}.ts`,
370
373
  pluginName
371
374
  });
372
- return getRelativePath(filePath, resolvedTypeId);
375
+ return getRelativePath(root, resolvedTypeId);
373
376
  };
374
377
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.request).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
375
378
  return {
@@ -382,12 +385,12 @@ var OperationGenerator = class extends OperationGenerator$1 {
382
385
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
383
386
  const type = this.resolve(operation);
384
387
  const fileResolver = (name) => {
385
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
388
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
386
389
  const resolvedTypeId = resolvePath({
387
390
  fileName: `${name}.ts`,
388
391
  pluginName
389
392
  });
390
- return getRelativePath(filePath, resolvedTypeId);
393
+ return getRelativePath(root, resolvedTypeId);
391
394
  };
392
395
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.queryParams).add(schemas.request).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
393
396
  return {
@@ -400,12 +403,12 @@ var OperationGenerator = class extends OperationGenerator$1 {
400
403
  const { resolvePath, mode, resolveName, oas, enumType } = this.options;
401
404
  const type = this.resolve(operation);
402
405
  const fileResolver = (name) => {
403
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
406
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } });
404
407
  const resolvedTypeId = resolvePath({
405
408
  fileName: `${name}.ts`,
406
409
  pluginName
407
410
  });
408
- return getRelativePath(filePath, resolvedTypeId);
411
+ return getRelativePath(root, resolvedTypeId);
409
412
  };
410
413
  const source = await new TypeBuilder(oas).add(schemas.pathParams).add(schemas.request).add(schemas.queryParams).add(schemas.response).add(schemas.errors).configure({ fileResolver: mode === "file" ? void 0 : fileResolver, withJSDocs: true, resolveName, enumType }).print();
411
414
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubb/swagger-ts",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "Generator swagger-ts",
5
5
  "repository": {
6
6
  "type": "git",
@@ -41,9 +41,9 @@
41
41
  "change-case": "^4.1.2",
42
42
  "lodash.uniqueid": "^4.0.1",
43
43
  "typescript": "^5.1.3",
44
- "@kubb/core": "1.1.0",
45
- "@kubb/swagger": "1.1.0",
46
- "@kubb/ts-codegen": "1.1.0"
44
+ "@kubb/core": "1.1.2",
45
+ "@kubb/swagger": "1.1.2",
46
+ "@kubb/ts-codegen": "1.1.2"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/lodash.uniqueid": "^4.0.7",
@@ -43,22 +43,22 @@ export class TypeBuilder extends OasBuilder<Config> {
43
43
  const codes: string[] = []
44
44
 
45
45
  const generated = this.items
46
- .filter((gen) => (name ? gen.name === name : true))
46
+ .filter((operationSchema) => (name ? operationSchema.name === name : true))
47
47
  .sort(nameSorter)
48
- .map((gen) => {
48
+ .map((operationSchema) => {
49
49
  const generator = new TypeGenerator(this.oas, {
50
50
  withJSDocs: this.config.withJSDocs,
51
51
  resolveName: this.config.resolveName,
52
52
  enumType: this.config.enumType,
53
53
  })
54
- const nodes = generator.build(gen.schema, gen.name, gen.description)
54
+ const sources = generator.build({ schema: operationSchema.schema, baseName: operationSchema.name, description: operationSchema.description })
55
55
 
56
56
  return {
57
57
  import: {
58
58
  refs: generator.refs,
59
- name: gen.name,
59
+ name: operationSchema.name,
60
60
  },
61
- sources: nodes,
61
+ sources,
62
62
  }
63
63
  })
64
64
  .sort(refsSorter)
@@ -44,14 +44,14 @@ export class OperationGenerator extends Generator<Options> {
44
44
 
45
45
  const fileResolver: FileResolver = (name) => {
46
46
  // Used when a react-query type(request, response, params) has an import of a global type
47
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
47
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
48
48
  // refs import, will always been created with the SwaggerTS plugin, our global type
49
49
  const resolvedTypeId = resolvePath({
50
50
  fileName: `${name}.ts`,
51
51
  pluginName,
52
52
  })
53
53
 
54
- return getRelativePath(filePath, resolvedTypeId)
54
+ return getRelativePath(root, resolvedTypeId)
55
55
  }
56
56
 
57
57
  const source = await new TypeBuilder(oas)
@@ -76,14 +76,14 @@ export class OperationGenerator extends Generator<Options> {
76
76
 
77
77
  const fileResolver: FileResolver = (name) => {
78
78
  // Used when a react-query type(request, response, params) has an import of a global type
79
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
79
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
80
80
  // refs import, will always been created with the SwaggerTS plugin, our global type
81
81
  const resolvedTypeId = resolvePath({
82
82
  fileName: `${name}.ts`,
83
83
  pluginName,
84
84
  })
85
85
 
86
- return getRelativePath(filePath, resolvedTypeId)
86
+ return getRelativePath(root, resolvedTypeId)
87
87
  }
88
88
 
89
89
  const source = await new TypeBuilder(oas)
@@ -109,14 +109,14 @@ export class OperationGenerator extends Generator<Options> {
109
109
 
110
110
  const fileResolver: FileResolver = (name) => {
111
111
  // Used when a react-query type(request, response, params) has an import of a global type
112
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
112
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
113
113
  // refs import, will always been created with the SwaggerTS plugin, our global type
114
114
  const resolvedTypeId = resolvePath({
115
115
  fileName: `${name}.ts`,
116
116
  pluginName,
117
117
  })
118
118
 
119
- return getRelativePath(filePath, resolvedTypeId)
119
+ return getRelativePath(root, resolvedTypeId)
120
120
  }
121
121
 
122
122
  const source = await new TypeBuilder(oas)
@@ -142,14 +142,14 @@ export class OperationGenerator extends Generator<Options> {
142
142
 
143
143
  const fileResolver: FileResolver = (name) => {
144
144
  // Used when a react-query type(request, response, params) has an import of a global type
145
- const filePath = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
145
+ const root = resolvePath({ fileName: type.fileName, pluginName, options: { tag: operation.getTags()[0]?.name } })
146
146
  // refs import, will always been created with the SwaggerTS plugin, our global type
147
147
  const resolvedTypeId = resolvePath({
148
148
  fileName: `${name}.ts`,
149
149
  pluginName,
150
150
  })
151
151
 
152
- return getRelativePath(filePath, resolvedTypeId)
152
+ return getRelativePath(root, resolvedTypeId)
153
153
  }
154
154
 
155
155
  const source = await new TypeBuilder(oas)
@@ -50,7 +50,7 @@ export class TypeGenerator extends SchemaGenerator<Options, OpenAPIV3.SchemaObje
50
50
  return this
51
51
  }
52
52
 
53
- build(schema: OpenAPIV3.SchemaObject, baseName: string, description?: string) {
53
+ build({ schema, baseName, description }: { schema: OpenAPIV3.SchemaObject; baseName: string; description?: string }) {
54
54
  const nodes: ts.Node[] = []
55
55
  const type = this.getTypeFromSchema(schema, baseName)
56
56
 
@@ -138,6 +138,9 @@ export class TypeGenerator extends SchemaGenerator<Options, OpenAPIV3.SchemaObje
138
138
  schema.description && `@description ${schema.description}`,
139
139
  schema.type && `@type ${schema.type}${isRequired ? '' : ' | undefined'} ${schema.format || ''}`,
140
140
  schema.example && `@example ${schema.example}`,
141
+ schema.deprecated && `@deprecated`,
142
+ schema.default !== undefined && typeof schema.default === 'string' && `@default '${schema.default}'`,
143
+ schema.default !== undefined && typeof schema.default !== 'string' && `@default ${schema.default}`,
141
144
  ],
142
145
  })
143
146
  }
package/src/plugin.ts CHANGED
@@ -8,7 +8,7 @@ import { pascalCase, pascalCaseTransformMerge } from 'change-case'
8
8
 
9
9
  import { getRelativePath, createPlugin, getPathMode, validatePlugins, writeIndexes, renderTemplate } from '@kubb/core'
10
10
  import { pluginName as swaggerPluginName } from '@kubb/swagger'
11
- import type { Api as SwaggerApi, OpenAPIV3 } from '@kubb/swagger'
11
+ import type { API as SwaggerApi, OpenAPIV3 } from '@kubb/swagger'
12
12
 
13
13
  import { TypeBuilder } from './builders/index.ts'
14
14
  import { OperationGenerator } from './generators/index.ts'