ts-openapi-codegen 2.0.0-beta.0 → 2.0.0-beta.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.
Files changed (177) hide show
  1. package/README.md +145 -55
  2. package/README.rus.md +144 -54
  3. package/dist/cli/index.js +2 -1
  4. package/dist/common/Consts.d.ts.map +1 -1
  5. package/dist/common/Consts.js +2 -1
  6. package/dist/common/TRawOptions.d.ts +2 -1
  7. package/dist/common/TRawOptions.d.ts.map +1 -1
  8. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.d.ts.map +1 -1
  9. package/dist/common/VersionedSchema/AllVersionedSchemas/AllMigrationPlans.js +8 -0
  10. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.d.ts.map +1 -1
  11. package/dist/common/VersionedSchema/AllVersionedSchemas/AllVersionedSchemas.js +7 -1
  12. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV1.d.ts.map +1 -0
  13. package/dist/common/VersionedSchema/{UnifiedOptionsVersioned → AllVersionedSchemas}/UnifiedOptionsSchemaV1.js +2 -2
  14. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts +7 -0
  15. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.d.ts.map +1 -0
  16. package/dist/common/VersionedSchema/AllVersionedSchemas/UnifiedOptionsSchemaV2.js +42 -0
  17. package/dist/common/VersionedSchema/CommonSchemas.d.ts +1 -0
  18. package/dist/common/VersionedSchema/CommonSchemas.d.ts.map +1 -1
  19. package/dist/common/VersionedSchema/CommonSchemas.js +8 -1
  20. package/dist/common/defaultOptions.d.ts.map +1 -1
  21. package/dist/common/defaultOptions.js +2 -1
  22. package/dist/common/utils/__tests__/convertArrayToObject.test.js +5 -6
  23. package/dist/common/utils/convertArrayToObject.d.ts.map +1 -1
  24. package/dist/common/utils/convertArrayToObject.js +1 -2
  25. package/dist/core/OpenApiClient.d.ts.map +1 -1
  26. package/dist/core/OpenApiClient.js +6 -4
  27. package/dist/core/WriteClient.d.ts +3 -12
  28. package/dist/core/WriteClient.d.ts.map +1 -1
  29. package/dist/core/WriteClient.js +20 -22
  30. package/dist/core/__tests__/WriteClient.test.js +8 -1
  31. package/dist/core/types/enums/ValidationLibrary.enum.d.ts +8 -0
  32. package/dist/core/types/enums/ValidationLibrary.enum.d.ts.map +1 -0
  33. package/dist/core/types/enums/ValidationLibrary.enum.js +11 -0
  34. package/dist/core/utils/__mocks__/templates.d.ts +3 -0
  35. package/dist/core/utils/__mocks__/templates.d.ts.map +1 -0
  36. package/dist/core/utils/__mocks__/templates.js +33 -0
  37. package/dist/core/utils/__tests__/writeClientCore.test.js +2 -25
  38. package/dist/core/utils/__tests__/writeClientFullIndex.test.js +2 -25
  39. package/dist/core/utils/__tests__/writeClientModels.test.js +2 -25
  40. package/dist/core/utils/__tests__/writeClientSchemas.test.js +4 -25
  41. package/dist/core/utils/__tests__/writeClientServices.test.js +2 -25
  42. package/dist/core/utils/precompileTemplates.js +6 -0
  43. package/dist/core/utils/registerHandlebarHelpers.d.ts.map +1 -1
  44. package/dist/core/utils/registerHandlebarHelpers.js +74 -0
  45. package/dist/core/utils/registerHandlebarTemplates.d.ts +8 -0
  46. package/dist/core/utils/registerHandlebarTemplates.d.ts.map +1 -1
  47. package/dist/core/utils/registerHandlebarTemplates.js +88 -0
  48. package/dist/core/utils/writeClientCore.d.ts.map +1 -1
  49. package/dist/core/utils/writeClientCore.js +3 -0
  50. package/dist/core/utils/writeClientSchemas.d.ts +2 -0
  51. package/dist/core/utils/writeClientSchemas.d.ts.map +1 -1
  52. package/dist/core/utils/writeClientSchemas.js +14 -2
  53. package/dist/templatesCompiled/client/core/legacy-request-adapter.d.ts +8 -0
  54. package/dist/templatesCompiled/client/core/legacy-request-adapter.d.ts.map +1 -0
  55. package/dist/templatesCompiled/client/core/legacy-request-adapter.js +18 -0
  56. package/dist/templatesCompiled/client/core/request-executor.d.ts +7 -0
  57. package/dist/templatesCompiled/client/core/request-executor.d.ts.map +1 -0
  58. package/dist/templatesCompiled/client/core/request-executor.js +11 -0
  59. package/dist/templatesCompiled/client/exportService.d.ts.map +1 -1
  60. package/dist/templatesCompiled/client/exportService.js +46 -50
  61. package/dist/templatesCompiled/client/joi/exportSchema.d.ts +11 -0
  62. package/dist/templatesCompiled/client/joi/exportSchema.d.ts.map +1 -0
  63. package/dist/templatesCompiled/client/joi/exportSchema.js +71 -0
  64. package/dist/templatesCompiled/client/joi/partials/joiSchema.d.ts +22 -0
  65. package/dist/templatesCompiled/client/joi/partials/joiSchema.d.ts.map +1 -0
  66. package/dist/templatesCompiled/client/joi/partials/joiSchema.js +129 -0
  67. package/dist/templatesCompiled/client/joi/partials/joiSchemaArray.d.ts +16 -0
  68. package/dist/templatesCompiled/client/joi/partials/joiSchemaArray.d.ts.map +1 -0
  69. package/dist/templatesCompiled/client/joi/partials/joiSchemaArray.js +84 -0
  70. package/dist/templatesCompiled/client/joi/partials/joiSchemaComposition.d.ts +18 -0
  71. package/dist/templatesCompiled/client/joi/partials/joiSchemaComposition.d.ts.map +1 -0
  72. package/dist/templatesCompiled/client/joi/partials/joiSchemaComposition.js +96 -0
  73. package/dist/templatesCompiled/client/joi/partials/joiSchemaDictionary.d.ts +14 -0
  74. package/dist/templatesCompiled/client/joi/partials/joiSchemaDictionary.d.ts.map +1 -0
  75. package/dist/templatesCompiled/client/joi/partials/joiSchemaDictionary.js +72 -0
  76. package/dist/templatesCompiled/client/joi/partials/joiSchemaEnum.d.ts +14 -0
  77. package/dist/templatesCompiled/client/joi/partials/joiSchemaEnum.d.ts.map +1 -0
  78. package/dist/templatesCompiled/client/joi/partials/joiSchemaEnum.js +74 -0
  79. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts +35 -0
  80. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.d.ts.map +1 -0
  81. package/dist/templatesCompiled/client/joi/partials/joiSchemaGeneric.js +201 -0
  82. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts +14 -0
  83. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.d.ts.map +1 -0
  84. package/dist/templatesCompiled/client/joi/partials/joiSchemaInterface.js +50 -0
  85. package/dist/templatesCompiled/client/joi/partials/joiSchemaReference.d.ts +9 -0
  86. package/dist/templatesCompiled/client/joi/partials/joiSchemaReference.d.ts.map +1 -0
  87. package/dist/templatesCompiled/client/joi/partials/joiSchemaReference.js +25 -0
  88. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts +11 -0
  89. package/dist/templatesCompiled/client/jsonschema/exportSchema.d.ts.map +1 -0
  90. package/dist/templatesCompiled/client/jsonschema/exportSchema.js +69 -0
  91. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchema.d.ts +22 -0
  92. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchema.d.ts.map +1 -0
  93. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchema.js +129 -0
  94. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaArray.d.ts +16 -0
  95. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaArray.d.ts.map +1 -0
  96. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaArray.js +74 -0
  97. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaComposition.d.ts +16 -0
  98. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaComposition.d.ts.map +1 -0
  99. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaComposition.js +84 -0
  100. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaDictionary.d.ts +13 -0
  101. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaDictionary.d.ts.map +1 -0
  102. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaDictionary.js +56 -0
  103. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaEnum.d.ts +12 -0
  104. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaEnum.d.ts.map +1 -0
  105. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaEnum.js +49 -0
  106. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaGeneric.d.ts +29 -0
  107. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaGeneric.d.ts.map +1 -0
  108. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaGeneric.js +175 -0
  109. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts +15 -0
  110. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.d.ts.map +1 -0
  111. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaInterface.js +63 -0
  112. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaReference.d.ts +9 -0
  113. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaReference.d.ts.map +1 -0
  114. package/dist/templatesCompiled/client/jsonschema/partials/jsonschemaSchemaReference.js +25 -0
  115. package/dist/templatesCompiled/client/yup/exportSchema.d.ts +11 -0
  116. package/dist/templatesCompiled/client/yup/exportSchema.d.ts.map +1 -0
  117. package/dist/templatesCompiled/client/yup/exportSchema.js +73 -0
  118. package/dist/templatesCompiled/client/yup/partials/yupSchema.d.ts +22 -0
  119. package/dist/templatesCompiled/client/yup/partials/yupSchema.d.ts.map +1 -0
  120. package/dist/templatesCompiled/client/yup/partials/yupSchema.js +129 -0
  121. package/dist/templatesCompiled/client/yup/partials/yupSchemaArray.d.ts +16 -0
  122. package/dist/templatesCompiled/client/yup/partials/yupSchemaArray.d.ts.map +1 -0
  123. package/dist/templatesCompiled/client/yup/partials/yupSchemaArray.js +84 -0
  124. package/dist/templatesCompiled/client/yup/partials/yupSchemaComposition.d.ts +18 -0
  125. package/dist/templatesCompiled/client/yup/partials/yupSchemaComposition.d.ts.map +1 -0
  126. package/dist/templatesCompiled/client/yup/partials/yupSchemaComposition.js +96 -0
  127. package/dist/templatesCompiled/client/yup/partials/yupSchemaDictionary.d.ts +14 -0
  128. package/dist/templatesCompiled/client/yup/partials/yupSchemaDictionary.d.ts.map +1 -0
  129. package/dist/templatesCompiled/client/yup/partials/yupSchemaDictionary.js +72 -0
  130. package/dist/templatesCompiled/client/yup/partials/yupSchemaEnum.d.ts +14 -0
  131. package/dist/templatesCompiled/client/yup/partials/yupSchemaEnum.d.ts.map +1 -0
  132. package/dist/templatesCompiled/client/yup/partials/yupSchemaEnum.js +74 -0
  133. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts +34 -0
  134. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.d.ts.map +1 -0
  135. package/dist/templatesCompiled/client/yup/partials/yupSchemaGeneric.js +201 -0
  136. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts +14 -0
  137. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.d.ts.map +1 -0
  138. package/dist/templatesCompiled/client/yup/partials/yupSchemaInterface.js +50 -0
  139. package/dist/templatesCompiled/client/yup/partials/yupSchemaReference.d.ts +9 -0
  140. package/dist/templatesCompiled/client/yup/partials/yupSchemaReference.d.ts.map +1 -0
  141. package/dist/templatesCompiled/client/yup/partials/yupSchemaReference.js +25 -0
  142. package/dist/templatesCompiled/client/zod/exportSchema.d.ts +11 -0
  143. package/dist/templatesCompiled/client/zod/exportSchema.d.ts.map +1 -0
  144. package/dist/templatesCompiled/client/zod/exportSchema.js +67 -0
  145. package/dist/templatesCompiled/client/zod/partials/zodSchema.d.ts +22 -0
  146. package/dist/templatesCompiled/client/zod/partials/zodSchema.d.ts.map +1 -0
  147. package/dist/templatesCompiled/client/zod/partials/zodSchema.js +129 -0
  148. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts +14 -0
  149. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.d.ts.map +1 -0
  150. package/dist/templatesCompiled/client/zod/partials/zodSchemaArray.js +65 -0
  151. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts +15 -0
  152. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.d.ts.map +1 -0
  153. package/dist/templatesCompiled/client/zod/partials/zodSchemaComposition.js +70 -0
  154. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts +12 -0
  155. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.d.ts.map +1 -0
  156. package/dist/templatesCompiled/client/zod/partials/zodSchemaDictionary.js +53 -0
  157. package/dist/templatesCompiled/client/zod/partials/zodSchemaEnum.d.ts +15 -0
  158. package/dist/templatesCompiled/client/zod/partials/zodSchemaEnum.d.ts.map +1 -0
  159. package/dist/templatesCompiled/client/zod/partials/zodSchemaEnum.js +86 -0
  160. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts +34 -0
  161. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.d.ts.map +1 -0
  162. package/dist/templatesCompiled/client/zod/partials/zodSchemaGeneric.js +193 -0
  163. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts +14 -0
  164. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.d.ts.map +1 -0
  165. package/dist/templatesCompiled/client/zod/partials/zodSchemaInterface.js +50 -0
  166. package/dist/templatesCompiled/client/zod/partials/zodSchemaReference.d.ts +9 -0
  167. package/dist/templatesCompiled/client/zod/partials/zodSchemaReference.d.ts.map +1 -0
  168. package/dist/templatesCompiled/client/zod/partials/zodSchemaReference.js +25 -0
  169. package/package.json +12 -3
  170. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsMigrationPlan.d.ts +0 -3
  171. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsMigrationPlan.d.ts.map +0 -1
  172. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsMigrationPlan.js +0 -28
  173. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsSchemaV1.d.ts.map +0 -1
  174. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsVersionedSchemas.d.ts +0 -3
  175. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsVersionedSchemas.d.ts.map +0 -1
  176. package/dist/common/VersionedSchema/UnifiedOptionsVersioned/UnifiedOptionsVersionedSchemas.js +0 -10
  177. /package/dist/common/VersionedSchema/{UnifiedOptionsVersioned → AllVersionedSchemas}/UnifiedOptionsSchemaV1.d.ts +0 -0
package/README.md CHANGED
@@ -64,7 +64,6 @@ openapi generate --input ./spec.json --output ./dist
64
64
  | `--useOptions` | - | boolean | `false` | Use options instead of arguments |
65
65
  | `--useUnionTypes` | - | boolean | `false` | Use union types instead of enums |
66
66
  | `--excludeCoreServiceFiles` | - | boolean | `false` | Exclude generation of core and service files |
67
- | `--includeSchemasFiles` | - | boolean | `false` | Enable generation of model validation schemas |
68
67
  | `--request` | - | string | - | Path to custom request file |
69
68
  | `--interfacePrefix` | - | string | `I` | Prefix for interface models |
70
69
  | `--enumPrefix` | - | string | `E` | Prefix for enum models |
@@ -74,6 +73,7 @@ openapi generate --input ./spec.json --output ./dist
74
73
  | `--useSeparatedIndexes` | - | boolean | `false` | Use separate index files for core, models, schemas, and services |
75
74
  | `--logLevel` | `-l` | string | `error` | Logging level: `info`, `warn`, or `error` |
76
75
  | `--logTarget` | `-t` | string | `console` | Logging target: `console` or `file` |
76
+ | `--validationLibrary` | - | string | `none` | Validation library for schema generation: `none`, `zod`, `joi`, `yup`, or `jsonschema` |
77
77
 
78
78
  **Examples:**
79
79
  ```bash
@@ -93,7 +93,6 @@ openapi generate \
93
93
  --httpClient fetch \
94
94
  --useOptions \
95
95
  --useUnionTypes \
96
- --includeSchemasFiles \
97
96
  --logLevel info
98
97
  ```
99
98
 
@@ -143,7 +142,6 @@ Instead of passing all options via CLI, you can use a configuration file. Create
143
142
  "useOptions": false,
144
143
  "useUnionTypes": false,
145
144
  "excludeCoreServiceFiles": false,
146
- "includeSchemasFiles": false,
147
145
  "interfacePrefix": "I",
148
146
  "enumPrefix": "E",
149
147
  "typePrefix": "T",
@@ -160,7 +158,6 @@ Instead of passing all options via CLI, you can use a configuration file. Create
160
158
  "output": "./dist",
161
159
  "client": "fetch",
162
160
  "excludeCoreServiceFiles": true,
163
- "includeSchemasFiles": true,
164
161
  "items": [
165
162
  {
166
163
  "input": "./first.yml"
@@ -201,7 +198,6 @@ Instead of passing all options via CLI, you can use a configuration file. Create
201
198
  | `useOptions` | boolean | `false` | Use options instead of arguments |
202
199
  | `useUnionTypes` | boolean | `false` | Use union types instead of enums |
203
200
  | `excludeCoreServiceFiles` | boolean | `false` | Exclude core and service files generation |
204
- | `includeSchemasFiles` | boolean | `false` | Enable model validation schemas generation |
205
201
  | `request` | string | - | Path to custom request file |
206
202
  | `interfacePrefix` | string | `I` | Prefix for interface models |
207
203
  | `enumPrefix` | string | `E` | Prefix for enum models |
@@ -210,6 +206,7 @@ Instead of passing all options via CLI, you can use a configuration file. Create
210
206
  | `sortByRequired` | boolean | `false` | Extended sorting strategy for arguments |
211
207
  | `useSeparatedIndexes` | boolean | `false` | Use separate index files |
212
208
  | `items` | array | - | Array of configurations (for multi-options format) |
209
+ | `validationLibrary` | string | `none` | Validation library for schema generation: `none`, `zod`, `joi`, `yup`, or `jsonschema` |
213
210
 
214
211
  **Note:** You can use the `init-openapi-config` command to generate a template configuration file.
215
212
 
@@ -369,11 +366,19 @@ const order: Order = {
369
366
  }
370
367
  ```
371
368
 
372
- ### Runtime schemas `--includeSchemasFiles`
369
+ ### Validation schemas `--validationLibrary`
373
370
  By default, the OpenAPI generator only exports interfaces for your models. These interfaces will help you during
374
- development, but will not be available in JavaScript during runtime. However, Swagger allows you to define properties
375
- that can be useful during runtime, for instance: `maxLength` of a string or a `pattern` to match, etc. Let's say
376
- we have the following model:
371
+ development, but will not be available in JavaScript during runtime. However, OpenAPI allows you to define properties
372
+ that can be useful during runtime, for instance: `maxLength` of a string or a `pattern` to match, etc.
373
+
374
+ The `--validationLibrary` parameter allows you to generate runtime validation schemas using popular validation libraries:
375
+ - **none** (default) - No validation schemas generated
376
+ - **zod** - Generate Zod validation schemas
377
+ - **joi** - Generate Joi validation schemas
378
+ - **yup** - Generate Yup validation schemas
379
+ - **jsonschema** - Generate JSON Schema validation schemas
380
+
381
+ Let's say we have the following model:
377
382
 
378
383
  ```json
379
384
  {
@@ -407,77 +412,88 @@ we have the following model:
407
412
  }
408
413
  ```
409
414
 
410
- This will generate the following interface:
415
+ **With Zod (`--validationLibrary zod`):**
411
416
 
412
- ```typescript
413
- export interface MyModel {
414
- key: string;
415
- name: string;
416
- readonly enabled?: boolean;
417
- readonly modified?: string;
417
+ ```ts
418
+ import { z } from 'zod';
419
+
420
+ export const MyModelSchema = z.object({
421
+ key: z.string().max(64).regex(/^[a-zA-Z0-9_]*$/),
422
+ name: z.string().max(255),
423
+ enabled: z.boolean().readonly().optional(),
424
+ modified: z.string().datetime().readonly().optional(),
425
+ });
426
+
427
+ export type MyModel = z.infer<typeof MyModelSchema>;
428
+
429
+ export function validateMyModel(data: unknown): MyModel {
430
+ return MyModelSchema.parse(data);
431
+ }
432
+
433
+ export function safeValidateMyModel(data: unknown): { success: true; data: MyModel } | { success: false; error: z.ZodError } {
434
+ const result = MyModelSchema.safeParse(data);
435
+ if (result.success) {
436
+ return { success: true, data: result.data };
437
+ }
438
+ return { success: false, error: result.error };
418
439
  }
419
440
  ```
420
441
 
421
- The interface does not contain any properties like `maxLength` or `pattern`. However, they could be useful
422
- if we wanted to create some form where a user could create such a model. In that form you would iterate
423
- over the properties to render form fields based on their type and validate the input based on the `maxLength`
424
- or `pattern` property. This requires us to have this information somewhere... For this we can use the
425
- flag `--includeSchemasFiles` to generate a runtime model next to the normal interface:
442
+ **With Joi (`--validationLibrary joi`):**
426
443
 
427
- ```typescript
428
- export const $MyModel = {
444
+ ```ts
445
+ import Joi from 'joi';
446
+
447
+ export const MyModelSchema = Joi.object({
448
+ key: Joi.string().max(64).pattern(/^[a-zA-Z0-9_]*$/).required(),
449
+ name: Joi.string().max(255).required(),
450
+ enabled: Joi.boolean().readonly(),
451
+ modified: Joi.string().isoDate().readonly(),
452
+ });
453
+ ```
454
+
455
+ **With Yup (`--validationLibrary yup`):**
456
+
457
+ ```ts
458
+ import * as yup from 'yup';
459
+
460
+ export const MyModelSchema = yup.object({
461
+ key: yup.string().max(64).matches(/^[a-zA-Z0-9_]*$/).required(),
462
+ name: yup.string().max(255).required(),
463
+ enabled: yup.boolean().readonly(),
464
+ modified: yup.string().datetime().readonly(),
465
+ });
466
+ ```
467
+
468
+ **With JSON Schema (`--validationLibrary jsonschema`):**
469
+
470
+ ```ts
471
+ export const MyModelSchema = {
472
+ type: 'object',
473
+ required: ['key', 'name'],
429
474
  properties: {
430
475
  key: {
431
476
  type: 'string',
432
- isRequired: true,
433
477
  maxLength: 64,
434
478
  pattern: '^[a-zA-Z0-9_]*$',
435
479
  },
436
480
  name: {
437
481
  type: 'string',
438
- isRequired: true,
439
482
  maxLength: 255,
440
483
  },
441
484
  enabled: {
442
485
  type: 'boolean',
443
- isReadOnly: true,
486
+ readOnly: true,
444
487
  },
445
488
  modified: {
446
489
  type: 'string',
447
- isReadOnly: true,
448
490
  format: 'date-time',
491
+ readOnly: true,
449
492
  },
450
493
  },
451
494
  };
452
495
  ```
453
-
454
- These runtime object are prefixed with a `$` character and expose all the interesting attributes of a model
455
- and its properties. We can now use this object to generate the form:
456
-
457
- ```typescript jsx
458
- import { $MyModel } from './generated';
459
-
460
- // Some pseudo code to iterate over the properties and return a form field
461
- // the form field could be some abstract component that renders the correct
462
- // field type and validation rules based on the given input.
463
- const formFields = Object.entries($MyModel.properties).map(([key, value]) => (
464
- <FormField
465
- name={key}
466
- type={value.type}
467
- format={value.format}
468
- maxLength={value.maxLength}
469
- pattern={value.pattern}
470
- isReadOnly={value.isReadOnly}
471
- />
472
- ));
473
-
474
- const MyForm = () => (
475
- <form>
476
- {formFields}
477
- </form>
478
- );
479
-
480
- ```
496
+ These validation schemas can be used for form generation, input validation, and runtime type checking in your application.
481
497
 
482
498
  ### Cancelable promise `--useCancelableRequest`
483
499
  By default, the OpenAPI generator generates services for accessing the API that use non-cancellable requests. Therefore, we have added the ability to switch the generator to generate canceled API requests. To do this, use the flag `--useCancelableRequest`.
@@ -510,6 +526,80 @@ export function request<T>(config: TOpenAPIConfig, options: ApiRequestOptions):
510
526
  }
511
527
  ```
512
528
 
529
+ ### Custom Request Executor
530
+
531
+ Starting from version 2.0.0-beta.1, generated services use the `RequestExecutor` interface instead of calling the core `request` function directly. This allows you to provide your own request implementation or adapt existing ones.
532
+
533
+ **Using a custom RequestExecutor:**
534
+
535
+ You can create your own `RequestExecutor` implementation:
536
+
537
+ ```ts
538
+ import type { RequestExecutor, RequestConfig } from './generated/core/request-executor';
539
+ import { SimpleService } from './generated/services/SimpleService';
540
+
541
+ // Define your custom options type (optional)
542
+ interface MyCustomOptions {
543
+ timeout?: number;
544
+ retries?: number;
545
+ }
546
+
547
+ // Create a custom executor
548
+ const customExecutor: RequestExecutor<MyCustomOptions> = {
549
+ async request<TResponse>(config: RequestConfig, options?: MyCustomOptions): Promise<TResponse> {
550
+ // Your custom request logic here
551
+ const response = await fetch(config.url, {
552
+ method: config.method,
553
+ headers: config.headers,
554
+ body: config.body ? JSON.stringify(config.body) : undefined,
555
+ signal: options?.timeout ? AbortSignal.timeout(options.timeout) : undefined,
556
+ });
557
+
558
+ if (!response.ok) {
559
+ throw new Error(`Request failed: ${response.statusText}`);
560
+ }
561
+
562
+ return response.json();
563
+ },
564
+ };
565
+
566
+ // Use it with generated services
567
+ const simpleService = new SimpleService<MyCustomOptions>(customExecutor);
568
+ await simpleService.getCallWithoutParametersAndResponse({ timeout: 5000, retries: 3 });
569
+ ```
570
+
571
+ **Using legacy request adapter:**
572
+
573
+ If you have an existing custom `request` file (specified via `--request` option), you can use the `createLegacyExecutor` helper to adapt it to the new `RequestExecutor` interface:
574
+
575
+ ```ts
576
+ import { createLegacyExecutor } from './generated/core/legacy-request-adapter';
577
+ import { OpenAPI } from './generated/core/OpenAPI';
578
+ import { SimpleService } from './generated/services/SimpleService';
579
+
580
+ // The legacy adapter wraps your existing request function
581
+ const executor = createLegacyExecutor(OpenAPI);
582
+
583
+ // Optionally, you can map custom options to ApiRequestOptions
584
+ interface XHROptions {
585
+ timeout?: number;
586
+ }
587
+
588
+ const executorWithOptions = createLegacyExecutor<XHROptions>(OpenAPI, (options) => {
589
+ // Map your custom options to ApiRequestOptions if needed
590
+ return {
591
+ // Add any ApiRequestOptions fields based on options
592
+ };
593
+ });
594
+
595
+ // Use with services
596
+ const simpleService = new SimpleService(executor);
597
+ await simpleService.getCallWithoutParametersAndResponse();
598
+ ```
599
+
600
+ **Note:** The `--request` option still works for customizing the core `request` function. The generated
601
+ `legacy-request-adapter` will automatically use your custom request implementation when creating the adapter.
602
+
513
603
  ### Sorting strategy for function arguments `--sortByRequired`
514
604
  By default, the OpenAPI generator sorts the parameters of service functions according to a simplified scheme. If you need a more strict sorting option, then you need to use the `--sortByRequired` flag. The simplified sorting option is similar to the one used in version 0.2.3 of the OpenAPI generator. This flag allows you to upgrade to a new version of the generator if you are "stuck" on version 0.2.3.
515
605
 
package/README.rus.md CHANGED
@@ -63,7 +63,6 @@ openapi generate --input ./spec.json --output ./dist
63
63
  | `--useOptions` | - | boolean | `false` | Использовать опции вместо аргументов |
64
64
  | `--useUnionTypes` | - | boolean | `false` | Использовать union типы вместо enums |
65
65
  | `--excludeCoreServiceFiles` | - | boolean | `false` | Исключить генерацию core и сервисных файлов |
66
- | `--includeSchemasFiles` | - | boolean | `false` | Включить генерацию схем валидации моделей |
67
66
  | `--request` | - | string | - | Путь к пользовательскому файлу запросов |
68
67
  | `--interfacePrefix` | - | string | `I` | Префикс для интерфейсов моделей |
69
68
  | `--enumPrefix` | - | string | `E` | Префикс для enum моделей |
@@ -73,6 +72,7 @@ openapi generate --input ./spec.json --output ./dist
73
72
  | `--useSeparatedIndexes` | - | boolean | `false` | Использовать отдельные index файлы для core, models, schemas и services |
74
73
  | `--logLevel` | `-l` | string | `error` | Уровень логирования: `info`, `warn`, или `error` |
75
74
  | `--logTarget` | `-t` | string | `console` | Цель логирования: `console` или `file` |
75
+ | `--validationLibrary` | - | string | `none` | Библиотека валидации для генерации схем: `none`, `zod`, `joi`, `yup`, или `jsonschema` |
76
76
 
77
77
  **Примеры:**
78
78
  ```bash
@@ -92,7 +92,6 @@ openapi generate \
92
92
  --httpClient fetch \
93
93
  --useOptions \
94
94
  --useUnionTypes \
95
- --includeSchemasFiles \
96
95
  --logLevel info
97
96
  ```
98
97
 
@@ -142,7 +141,6 @@ openapi init-openapi-config --openapi-config ./my-config.json
142
141
  "useOptions": false,
143
142
  "useUnionTypes": false,
144
143
  "excludeCoreServiceFiles": false,
145
- "includeSchemasFiles": false,
146
144
  "interfacePrefix": "I",
147
145
  "enumPrefix": "E",
148
146
  "typePrefix": "T",
@@ -159,7 +157,6 @@ openapi init-openapi-config --openapi-config ./my-config.json
159
157
  "output": "./dist",
160
158
  "client": "fetch",
161
159
  "excludeCoreServiceFiles": true,
162
- "includeSchemasFiles": true,
163
160
  "items": [
164
161
  {
165
162
  "input": "./first.yml"
@@ -200,7 +197,6 @@ openapi init-openapi-config --openapi-config ./my-config.json
200
197
  | `useOptions` | boolean | `false` | Использовать опции вместо аргументов |
201
198
  | `useUnionTypes` | boolean | `false` | Использовать union типы вместо enums |
202
199
  | `excludeCoreServiceFiles` | boolean | `false` | Исключить генерацию core и сервисных файлов |
203
- | `includeSchemasFiles` | boolean | `false` | Включить генерацию схем валидации моделей |
204
200
  | `request` | string | - | Путь к пользовательскому файлу запросов |
205
201
  | `interfacePrefix` | string | `I` | Префикс для интерфейсов моделей |
206
202
  | `enumPrefix` | string | `E` | Префикс для enum моделей |
@@ -209,6 +205,7 @@ openapi init-openapi-config --openapi-config ./my-config.json
209
205
  | `sortByRequired` | boolean | `false` | Расширенная стратегия сортировки для аргументов |
210
206
  | `useSeparatedIndexes` | boolean | `false` | Использовать отдельные index файлы |
211
207
  | `items` | array | - | Массив конфигураций (для формата multi-options) |
208
+ | `validationLibrary` | string | `none` | Библиотека валидации для генерации схем: `none`, `zod`, `joi`, `yup`, или `jsonschema` |
212
209
 
213
210
  **Примечание:** Вы можете использовать команду `init-openapi-config` для генерации шаблона файла конфигурации.
214
211
 
@@ -368,11 +365,19 @@ const order: Order = {
368
365
  }
369
366
  ```
370
367
 
371
- ### Runtime схемы `--includeSchemasFiles`
368
+ ### Схемы проверки `--validationLibrary`
372
369
  По умолчанию генератор OpenAPI экспортирует только интерфейсы для ваших моделей. Эти интерфейсы помогут вам во время
373
- разработки, но не будут доступны в JavaScript во время выполнения. Однако Swagger позволяет определять свойства,
374
- которые могут быть полезны во время выполнения, например: `maxLength` строки или `pattern` для сопоставления и т.д. Допустим,
375
- у нас есть следующая модель:
370
+ разработки, но не будут доступны в JavaScript во время выполнения. Однако OpenAPI позволяет определять свойства,
371
+ которые могут быть полезны во время выполнения, например: `maxLength` строки или `pattern` для сопоставления и т.д.
372
+
373
+ Параметр `--validationLibrary` позволяет генерировать схемы валидации времени выполнения с использованием популярных библиотек валидации:
374
+ - **none** (по умолчанию) - Схемы валидации не генерируются
375
+ - **zod** - Генерация схем валидации Zod
376
+ - **joi** - Генерация схем валидации Joi
377
+ - **yup** - Генерация схем валидации Yup
378
+ - **jsonschema** - Генерация схем валидации JSON Schema
379
+
380
+ Допустим, у нас есть следующая модель:
376
381
 
377
382
  ```json
378
383
  {
@@ -406,77 +411,89 @@ const order: Order = {
406
411
  }
407
412
  ```
408
413
 
409
- Это сгенерирует следующий интерфейс:
414
+ **С Zod (`--validationLibrary zod`):**
410
415
 
411
- ```typescript
412
- export interface MyModel {
413
- key: string;
414
- name: string;
415
- readonly enabled?: boolean;
416
- readonly modified?: string;
416
+ ```ts
417
+ import { z } from 'zod';
418
+
419
+ export const MyModelSchema = z.object({
420
+ key: z.string().max(64).regex(/^[a-zA-Z0-9_]*$/),
421
+ name: z.string().max(255),
422
+ enabled: z.boolean().readonly().optional(),
423
+ modified: z.string().datetime().readonly().optional(),
424
+ });
425
+
426
+ export type MyModel = z.infer<typeof MyModelSchema>;
427
+
428
+ export function validateMyModel(data: unknown): MyModel {
429
+ return MyModelSchema.parse(data);
430
+ }
431
+
432
+ export function safeValidateMyModel(data: unknown): { success: true; data: MyModel } | { success: false; error: z.ZodError } {
433
+ const result = MyModelSchema.safeParse(data);
434
+ if (result.success) {
435
+ return { success: true, data: result.data };
436
+ }
437
+ return { success: false, error: result.error };
417
438
  }
418
439
  ```
419
440
 
420
- Интерфейс не содержит таких свойств, как `maxLength` или `pattern`. Однако они могут быть полезны,
421
- если мы хотим создать форму, где пользователь может создать такую модель. В этой форме вы будете итерироваться
422
- по свойствам для рендеринга полей формы на основе их типа и валидации ввода на основе свойства `maxLength`
423
- или `pattern`. Для этого нам нужно где-то хранить эту информацию... Для этого мы можем использовать
424
- флаг `--includeSchemasFiles` для генерации runtime модели рядом с обычным интерфейсом:
441
+ **С Joi (`--validationLibrary joi`):**
425
442
 
426
- ```typescript
427
- export const $MyModel = {
443
+ ```ts
444
+ import Joi from 'joi';
445
+
446
+ export const MyModelSchema = Joi.object({
447
+ key: Joi.string().max(64).pattern(/^[a-zA-Z0-9_]*$/).required(),
448
+ name: Joi.string().max(255).required(),
449
+ enabled: Joi.boolean().readonly(),
450
+ modified: Joi.string().isoDate().readonly(),
451
+ });
452
+ ```
453
+
454
+ **С Yup (`--validationLibrary yup`):**
455
+
456
+ ```ts
457
+ import * as yup from 'yup';
458
+
459
+ export const MyModelSchema = yup.object({
460
+ key: yup.string().max(64).matches(/^[a-zA-Z0-9_]*$/).required(),
461
+ name: yup.string().max(255).required(),
462
+ enabled: yup.boolean().readonly(),
463
+ modified: yup.string().datetime().readonly(),
464
+ });
465
+ ```
466
+
467
+ **С JSON Schema (`--validationLibrary jsonschema`):**
468
+
469
+ ```ts
470
+ export const MyModelSchema = {
471
+ type: 'object',
472
+ required: ['key', 'name'],
428
473
  properties: {
429
474
  key: {
430
475
  type: 'string',
431
- isRequired: true,
432
476
  maxLength: 64,
433
477
  pattern: '^[a-zA-Z0-9_]*$',
434
478
  },
435
479
  name: {
436
480
  type: 'string',
437
- isRequired: true,
438
481
  maxLength: 255,
439
482
  },
440
483
  enabled: {
441
484
  type: 'boolean',
442
- isReadOnly: true,
485
+ readOnly: true,
443
486
  },
444
487
  modified: {
445
488
  type: 'string',
446
- isReadOnly: true,
447
489
  format: 'date-time',
490
+ readOnly: true,
448
491
  },
449
492
  },
450
493
  };
451
494
  ```
452
495
 
453
- Эти runtime объекты имеют префикс `$` и раскрывают все интересные атрибуты модели
454
- и её свойств. Теперь мы можем использовать этот объект для генерации формы:
455
-
456
- ```typescript jsx
457
- import { $MyModel } from './generated';
458
-
459
- // Псевдокод для итерации по свойствам и возврата поля формы
460
- // поле формы может быть абстрактным компонентом, который рендерит правильный
461
- // тип поля и правила валидации на основе заданного ввода.
462
- const formFields = Object.entries($MyModel.properties).map(([key, value]) => (
463
- <FormField
464
- name={key}
465
- type={value.type}
466
- format={value.format}
467
- maxLength={value.maxLength}
468
- pattern={value.pattern}
469
- isReadOnly={value.isReadOnly}
470
- />
471
- ));
472
-
473
- const MyForm = () => (
474
- <form>
475
- {formFields}
476
- </form>
477
- );
478
-
479
- ```
496
+ Эти схемы валидации могут быть использованы для генерации форм, валидации ввода и проверки типов во время выполнения в вашем приложении.
480
497
 
481
498
  ### Отменяемый promise `--useCancelableRequest`
482
499
  По умолчанию генератор OpenAPI генерирует сервисы для доступа к API, которые используют неотменяемые запросы. Поэтому мы добавили возможность переключить генератор на генерацию отменяемых API запросов. Для этого используйте флаг `--useCancelableRequest`.
@@ -509,6 +526,79 @@ export function request<T>(config: TOpenAPIConfig, options: ApiRequestOptions):
509
526
  }
510
527
  ```
511
528
 
529
+ ### Пользовательский Request Executor
530
+
531
+ Начиная с версии 2.0.0, сгенерированные сервисы используют интерфейс `RequestExecutor` вместо прямых вызовов core-функции `request`. Это позволяет вам предоставить свою собственную реализацию запросов или адаптировать существующие.
532
+
533
+ **Использование пользовательского RequestExecutor:**
534
+
535
+ Вы можете создать свою собственную реализацию `RequestExecutor`:
536
+
537
+ ```ts
538
+ import type { RequestExecutor, RequestConfig } from './generated/core/request-executor';
539
+ import { SimpleService } from './generated/services/SimpleService';
540
+
541
+ // Определите свой тип опций (опционально)
542
+ interface MyCustomOptions {
543
+ timeout?: number;
544
+ retries?: number;
545
+ }
546
+
547
+ // Создайте пользовательский executor
548
+ const customExecutor: RequestExecutor<MyCustomOptions> = {
549
+ async request<TResponse>(config: RequestConfig, options?: MyCustomOptions): Promise<TResponse> {
550
+ // Ваша пользовательская логика запросов здесь
551
+ const response = await fetch(config.url, {
552
+ method: config.method,
553
+ headers: config.headers,
554
+ body: config.body ? JSON.stringify(config.body) : undefined,
555
+ signal: options?.timeout ? AbortSignal.timeout(options.timeout) : undefined,
556
+ });
557
+
558
+ if (!response.ok) {
559
+ throw new Error(`Request failed: ${response.statusText}`);
560
+ }
561
+
562
+ return response.json();
563
+ },
564
+ };
565
+
566
+ // Используйте его со сгенерированными сервисами
567
+ const simpleService = new SimpleService<MyCustomOptions>(customExecutor);
568
+ await simpleService.getCallWithoutParametersAndResponse({ timeout: 5000, retries: 3 });
569
+ ```
570
+
571
+ **Использование legacy request adapter:**
572
+
573
+ Если у вас есть существующий пользовательский файл `request` (указанный через опцию `--request`), вы можете использовать хелпер `createLegacyExecutor` для адаптации его к новому интерфейсу `RequestExecutor`:
574
+
575
+ ```ts
576
+ import { createLegacyExecutor } from './generated/core/legacy-request-adapter';
577
+ import { OpenAPI } from './generated/core/OpenAPI';
578
+ import { SimpleService } from './generated/services/SimpleService';
579
+
580
+ // Legacy адаптер оборачивает вашу существующую функцию request
581
+ const executor = createLegacyExecutor(OpenAPI);
582
+
583
+ // Опционально, вы можете мапить пользовательские опции в ApiRequestOptions
584
+ interface XHROptions {
585
+ timeout?: number;
586
+ }
587
+
588
+ const executorWithOptions = createLegacyExecutor<XHROptions>(OpenAPI, (options) => {
589
+ // Мапьте ваши пользовательские опции в ApiRequestOptions при необходимости
590
+ return {
591
+ // Добавьте любые поля ApiRequestOptions на основе options
592
+ };
593
+ });
594
+
595
+ // Используйте со сервисами
596
+ const simpleService = new SimpleService(executor);
597
+ await simpleService.getCallWithoutParametersAndResponse();
598
+ ```
599
+
600
+ **Примечание:** Опция --request по-прежнему работает для кастомизации core-функции request. Сгенерированный legacy-request-adapter автоматически будет использовать вашу пользовательскую реализацию request при создании адаптера.
601
+
512
602
  ### Стратегия сортировки аргументов функций `--sortByRequired`
513
603
  По умолчанию генератор OpenAPI сортирует параметры сервисных функций согласно упрощенной схеме. Если вам нужна более строгая опция сортировки, используйте флаг `--sortByRequired`. Упрощенная опция сортировки похожа на ту, что использовалась в версии 0.2.3 генератора OpenAPI. Этот флаг позволяет обновиться до новой версии генератора, если вы "застряли" на версии 0.2.3.
514
604
 
package/dist/cli/index.js CHANGED
@@ -11,6 +11,7 @@ const Enums_1 = require("../common/Enums");
11
11
  const UpdateNotifier_1 = require("../common/UpdateNotifier");
12
12
  const pathHelpers_1 = require("../common/utils/pathHelpers");
13
13
  const HttpClient_enum_1 = require("../core/types/enums/HttpClient.enum");
14
+ const ValidationLibrary_enum_1 = require("../core/types/enums/ValidationLibrary.enum");
14
15
  const checkConfig_1 = require("./checkAndUpdateConfig/checkConfig");
15
16
  const updateConfig_1 = require("./checkAndUpdateConfig/updateConfig");
16
17
  const runGenerateOpenApi_1 = require("./generate/runGenerateOpenApi");
@@ -46,7 +47,6 @@ program
46
47
  .option('--useOptions', 'Use options instead of arguments (default: false)')
47
48
  .option('--useUnionTypes', 'Use union types instead of enums (default: false)')
48
49
  .option('--excludeCoreServiceFiles', 'The generation of the core and services is excluded (default: false)')
49
- .option('--includeSchemasFiles', 'The generation of model validation schemes is enabled (default: false)')
50
50
  .option('--request <value>', 'Path to custom request file')
51
51
  .option('--interfacePrefix <value>', 'Prefix for interface model(default: "I")', 'I')
52
52
  .option('--enumPrefix <value>', 'Prefix for enum model(default: "E")', 'E')
@@ -56,6 +56,7 @@ program
56
56
  .addOption(new commander_1.Option('-t, --logTarget <target>', 'Target of logging').choices([...Object.values(Enums_1.ELogOutput)]).default(Enums_1.ELogOutput.CONSOLE))
57
57
  .option('-s, --sortByRequired', 'Property sorting strategy: simplified or extended')
58
58
  .option('--useSeparatedIndexes', 'Use separate index files for the core, models, schemas, and services.')
59
+ .addOption(new commander_1.Option('--validationLibrary <value>', 'Validation library to use for schema validation').choices([...Object.values(ValidationLibrary_enum_1.ValidationLibrary)]).default(ValidationLibrary_enum_1.ValidationLibrary.NONE))
59
60
  .hook('preAction', async () => {
60
61
  await updateNotifier.checkAndNotify();
61
62
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Consts.d.ts","sourceRoot":"","sources":["../../src/common/Consts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AAErE,eAAO,MAAM,6BAA6B,EAAE,kBAqB3C,CAAC;AAEF,eAAO,MAAM,UAAU,QAIrB,CAAC"}
1
+ {"version":3,"file":"Consts.d.ts","sourceRoot":"","sources":["../../src/common/Consts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,+BAA+B,wBAAwB,CAAC;AAErE,eAAO,MAAM,6BAA6B,EAAE,kBAqB3C,CAAC;AAEF,eAAO,MAAM,UAAU,QAIrB,CAAC"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.APP_LOGGER = exports.COMMON_DEFAULT_OPTIONS_VALUES = exports.DEFAULT_OPENAPI_CONFIG_FILENAME = void 0;
4
4
  const HttpClient_enum_1 = require("../core/types/enums/HttpClient.enum");
5
+ const ValidationLibrary_enum_1 = require("../core/types/enums/ValidationLibrary.enum");
5
6
  const Enums_1 = require("./Enums");
6
7
  const Logger_1 = require("./Logger");
7
8
  exports.DEFAULT_OPENAPI_CONFIG_FILENAME = 'openapi.config.json';
@@ -16,7 +17,6 @@ exports.COMMON_DEFAULT_OPTIONS_VALUES = {
16
17
  useOptions: false,
17
18
  useUnionTypes: false,
18
19
  excludeCoreServiceFiles: false,
19
- includeSchemasFiles: false,
20
20
  request: '',
21
21
  interfacePrefix: 'I',
22
22
  enumPrefix: 'E',
@@ -26,6 +26,7 @@ exports.COMMON_DEFAULT_OPTIONS_VALUES = {
26
26
  logTarget: Enums_1.ELogOutput.CONSOLE,
27
27
  sortByRequired: false,
28
28
  useSeparatedIndexes: false,
29
+ validationLibrary: ValidationLibrary_enum_1.ValidationLibrary.NONE
29
30
  };
30
31
  exports.APP_LOGGER = new Logger_1.Logger({
31
32
  level: Enums_1.ELogLevel.INFO,
@@ -1,4 +1,5 @@
1
1
  import { HttpClient } from '../core/types/enums/HttpClient.enum';
2
+ import { ValidationLibrary } from '../core/types/enums/ValidationLibrary.enum';
2
3
  import { ELogLevel, ELogOutput } from './Enums';
3
4
  type TItemConfig = {
4
5
  input: string;
@@ -21,7 +22,6 @@ export type TRawOptions = {
21
22
  useOptions?: boolean;
22
23
  useUnionTypes?: boolean;
23
24
  excludeCoreServiceFiles?: boolean;
24
- includeSchemasFiles?: boolean;
25
25
  request?: string;
26
26
  interfacePrefix?: string;
27
27
  enumPrefix?: string;
@@ -31,6 +31,7 @@ export type TRawOptions = {
31
31
  logTarget?: ELogOutput;
32
32
  sortByRequired?: boolean;
33
33
  useSeparatedIndexes?: boolean;
34
+ validationLibrary?: ValidationLibrary;
34
35
  };
35
36
  export type TFlatOptions = Omit<TRawOptions, 'items'>;
36
37
  export type TStrictFlatOptions = {
@@ -1 +1 @@
1
- {"version":3,"file":"TRawOptions.d.ts","sourceRoot":"","sources":["../../src/common/TRawOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,WAAW,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;KAC9B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC1D,CAAC"}
1
+ {"version":3,"file":"TRawOptions.d.ts","sourceRoot":"","sources":["../../src/common/TRawOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,WAAW,GAAG;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACxC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG;KAC5B,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,GAAG,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;CAC5D,CAAC"}