@alagoni97/cli 0.72.1

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 (244) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +336 -0
  3. package/bin/dev.cmd +3 -0
  4. package/bin/dev.mjs +3 -0
  5. package/bin/run.cmd +3 -0
  6. package/bin/run.mjs +4 -0
  7. package/dist/LoggingInterface.d.ts +123 -0
  8. package/dist/LoggingInterface.js +300 -0
  9. package/dist/PersistedConfig.d.ts +46 -0
  10. package/dist/PersistedConfig.js +94 -0
  11. package/dist/browser/adapters/output.d.ts +69 -0
  12. package/dist/browser/adapters/output.js +91 -0
  13. package/dist/browser/config.d.ts +18 -0
  14. package/dist/browser/config.js +59 -0
  15. package/dist/browser/generate.d.ts +20 -0
  16. package/dist/browser/generate.js +129 -0
  17. package/dist/browser/index.d.ts +17 -0
  18. package/dist/browser/index.js +26 -0
  19. package/dist/browser/parser.d.ts +9 -0
  20. package/dist/browser/parser.js +61 -0
  21. package/dist/browser/shims/asyncapi-parser.d.ts +30 -0
  22. package/dist/browser/shims/asyncapi-parser.js +52 -0
  23. package/dist/browser/shims/fs.d.ts +190 -0
  24. package/dist/browser/shims/fs.js +188 -0
  25. package/dist/browser/shims/json-schema-ref-parser.d.ts +73 -0
  26. package/dist/browser/shims/json-schema-ref-parser.js +246 -0
  27. package/dist/browser/shims/swagger-parser.d.ts +20 -0
  28. package/dist/browser/shims/swagger-parser.js +40 -0
  29. package/dist/codegen/configurationSchemaBuilder.d.ts +15 -0
  30. package/dist/codegen/configurationSchemaBuilder.js +48 -0
  31. package/dist/codegen/configurations.d.ts +29 -0
  32. package/dist/codegen/configurations.js +260 -0
  33. package/dist/codegen/detection.d.ts +19 -0
  34. package/dist/codegen/detection.js +174 -0
  35. package/dist/codegen/errors.d.ts +111 -0
  36. package/dist/codegen/errors.js +352 -0
  37. package/dist/codegen/generators/generic/custom.d.ts +75 -0
  38. package/dist/codegen/generators/generic/custom.js +66 -0
  39. package/dist/codegen/generators/index.d.ts +14 -0
  40. package/dist/codegen/generators/index.js +42 -0
  41. package/dist/codegen/generators/typescript/channels/asyncapi.d.ts +10 -0
  42. package/dist/codegen/generators/typescript/channels/asyncapi.js +131 -0
  43. package/dist/codegen/generators/typescript/channels/index.d.ts +8 -0
  44. package/dist/codegen/generators/typescript/channels/index.js +142 -0
  45. package/dist/codegen/generators/typescript/channels/openapi.d.ts +9 -0
  46. package/dist/codegen/generators/typescript/channels/openapi.js +168 -0
  47. package/dist/codegen/generators/typescript/channels/protocols/amqp/index.d.ts +7 -0
  48. package/dist/codegen/generators/typescript/channels/protocols/amqp/index.js +149 -0
  49. package/dist/codegen/generators/typescript/channels/protocols/amqp/publishExchange.d.ts +5 -0
  50. package/dist/codegen/generators/typescript/channels/protocols/amqp/publishExchange.js +106 -0
  51. package/dist/codegen/generators/typescript/channels/protocols/amqp/publishQueue.d.ts +3 -0
  52. package/dist/codegen/generators/typescript/channels/protocols/amqp/publishQueue.js +102 -0
  53. package/dist/codegen/generators/typescript/channels/protocols/amqp/subscribeQueue.d.ts +3 -0
  54. package/dist/codegen/generators/typescript/channels/protocols/amqp/subscribeQueue.js +133 -0
  55. package/dist/codegen/generators/typescript/channels/protocols/eventsource/express.d.ts +3 -0
  56. package/dist/codegen/generators/typescript/channels/protocols/eventsource/express.js +100 -0
  57. package/dist/codegen/generators/typescript/channels/protocols/eventsource/fetch.d.ts +5 -0
  58. package/dist/codegen/generators/typescript/channels/protocols/eventsource/fetch.js +144 -0
  59. package/dist/codegen/generators/typescript/channels/protocols/eventsource/index.d.ts +6 -0
  60. package/dist/codegen/generators/typescript/channels/protocols/eventsource/index.js +132 -0
  61. package/dist/codegen/generators/typescript/channels/protocols/http/client.d.ts +10 -0
  62. package/dist/codegen/generators/typescript/channels/protocols/http/client.js +224 -0
  63. package/dist/codegen/generators/typescript/channels/protocols/http/common-types.d.ts +14 -0
  64. package/dist/codegen/generators/typescript/channels/protocols/http/common-types.js +800 -0
  65. package/dist/codegen/generators/typescript/channels/protocols/http/index.d.ts +8 -0
  66. package/dist/codegen/generators/typescript/channels/protocols/http/index.js +96 -0
  67. package/dist/codegen/generators/typescript/channels/protocols/http/security.d.ts +48 -0
  68. package/dist/codegen/generators/typescript/channels/protocols/http/security.js +491 -0
  69. package/dist/codegen/generators/typescript/channels/protocols/kafka/index.d.ts +6 -0
  70. package/dist/codegen/generators/typescript/channels/protocols/kafka/index.js +127 -0
  71. package/dist/codegen/generators/typescript/channels/protocols/kafka/publish.d.ts +3 -0
  72. package/dist/codegen/generators/typescript/channels/protocols/kafka/publish.js +108 -0
  73. package/dist/codegen/generators/typescript/channels/protocols/kafka/subscribe.d.ts +3 -0
  74. package/dist/codegen/generators/typescript/channels/protocols/kafka/subscribe.js +154 -0
  75. package/dist/codegen/generators/typescript/channels/protocols/kafka/utils.d.ts +11 -0
  76. package/dist/codegen/generators/typescript/channels/protocols/kafka/utils.js +58 -0
  77. package/dist/codegen/generators/typescript/channels/protocols/mqtt/index.d.ts +6 -0
  78. package/dist/codegen/generators/typescript/channels/protocols/mqtt/index.js +113 -0
  79. package/dist/codegen/generators/typescript/channels/protocols/mqtt/publish.d.ts +3 -0
  80. package/dist/codegen/generators/typescript/channels/protocols/mqtt/publish.js +99 -0
  81. package/dist/codegen/generators/typescript/channels/protocols/mqtt/subscribe.d.ts +3 -0
  82. package/dist/codegen/generators/typescript/channels/protocols/mqtt/subscribe.js +186 -0
  83. package/dist/codegen/generators/typescript/channels/protocols/nats/corePublish.d.ts +3 -0
  84. package/dist/codegen/generators/typescript/channels/protocols/nats/corePublish.js +90 -0
  85. package/dist/codegen/generators/typescript/channels/protocols/nats/coreReply.d.ts +3 -0
  86. package/dist/codegen/generators/typescript/channels/protocols/nats/coreReply.js +142 -0
  87. package/dist/codegen/generators/typescript/channels/protocols/nats/coreRequest.d.ts +3 -0
  88. package/dist/codegen/generators/typescript/channels/protocols/nats/coreRequest.js +100 -0
  89. package/dist/codegen/generators/typescript/channels/protocols/nats/coreSubscribe.d.ts +3 -0
  90. package/dist/codegen/generators/typescript/channels/protocols/nats/coreSubscribe.js +143 -0
  91. package/dist/codegen/generators/typescript/channels/protocols/nats/index.d.ts +11 -0
  92. package/dist/codegen/generators/typescript/channels/protocols/nats/index.js +224 -0
  93. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPublish.d.ts +3 -0
  94. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPublish.js +89 -0
  95. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPullSubscribe.d.ts +3 -0
  96. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPullSubscribe.js +146 -0
  97. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPushSubscription.d.ts +3 -0
  98. package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPushSubscription.js +149 -0
  99. package/dist/codegen/generators/typescript/channels/protocols/nats/utils.d.ts +35 -0
  100. package/dist/codegen/generators/typescript/channels/protocols/nats/utils.js +120 -0
  101. package/dist/codegen/generators/typescript/channels/protocols/websocket/index.d.ts +7 -0
  102. package/dist/codegen/generators/typescript/channels/protocols/websocket/index.js +152 -0
  103. package/dist/codegen/generators/typescript/channels/protocols/websocket/publish.d.ts +3 -0
  104. package/dist/codegen/generators/typescript/channels/protocols/websocket/publish.js +64 -0
  105. package/dist/codegen/generators/typescript/channels/protocols/websocket/register.d.ts +3 -0
  106. package/dist/codegen/generators/typescript/channels/protocols/websocket/register.js +115 -0
  107. package/dist/codegen/generators/typescript/channels/protocols/websocket/subscribe.d.ts +3 -0
  108. package/dist/codegen/generators/typescript/channels/protocols/websocket/subscribe.js +151 -0
  109. package/dist/codegen/generators/typescript/channels/types.d.ts +181 -0
  110. package/dist/codegen/generators/typescript/channels/types.js +131 -0
  111. package/dist/codegen/generators/typescript/channels/utils.d.ts +64 -0
  112. package/dist/codegen/generators/typescript/channels/utils.js +163 -0
  113. package/dist/codegen/generators/typescript/client/index.d.ts +8 -0
  114. package/dist/codegen/generators/typescript/client/index.js +61 -0
  115. package/dist/codegen/generators/typescript/client/protocols/nats/corePublish.d.ts +6 -0
  116. package/dist/codegen/generators/typescript/client/protocols/nats/corePublish.js +53 -0
  117. package/dist/codegen/generators/typescript/client/protocols/nats/coreSubscribe.d.ts +6 -0
  118. package/dist/codegen/generators/typescript/client/protocols/nats/coreSubscribe.js +90 -0
  119. package/dist/codegen/generators/typescript/client/protocols/nats/jetStreamPullSubscription.d.ts +6 -0
  120. package/dist/codegen/generators/typescript/client/protocols/nats/jetStreamPullSubscription.js +83 -0
  121. package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPublish.d.ts +6 -0
  122. package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPublish.js +54 -0
  123. package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPushSubscription.d.ts +6 -0
  124. package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPushSubscription.js +82 -0
  125. package/dist/codegen/generators/typescript/client/protocols/nats.d.ts +2 -0
  126. package/dist/codegen/generators/typescript/client/protocols/nats.js +182 -0
  127. package/dist/codegen/generators/typescript/client/types.d.ts +49 -0
  128. package/dist/codegen/generators/typescript/client/types.js +37 -0
  129. package/dist/codegen/generators/typescript/headers.d.ts +54 -0
  130. package/dist/codegen/generators/typescript/headers.js +138 -0
  131. package/dist/codegen/generators/typescript/index.d.ts +7 -0
  132. package/dist/codegen/generators/typescript/index.js +38 -0
  133. package/dist/codegen/generators/typescript/models.d.ts +21761 -0
  134. package/dist/codegen/generators/typescript/models.js +64 -0
  135. package/dist/codegen/generators/typescript/parameters.d.ts +37 -0
  136. package/dist/codegen/generators/typescript/parameters.js +101 -0
  137. package/dist/codegen/generators/typescript/payloads.d.ts +73 -0
  138. package/dist/codegen/generators/typescript/payloads.js +250 -0
  139. package/dist/codegen/generators/typescript/types.d.ts +34 -0
  140. package/dist/codegen/generators/typescript/types.js +70 -0
  141. package/dist/codegen/generators/typescript/utils.d.ts +38 -0
  142. package/dist/codegen/generators/typescript/utils.js +195 -0
  143. package/dist/codegen/index.d.ts +7 -0
  144. package/dist/codegen/index.js +38 -0
  145. package/dist/codegen/inputs/asyncapi/generators/headers.d.ts +3 -0
  146. package/dist/codegen/inputs/asyncapi/generators/headers.js +41 -0
  147. package/dist/codegen/inputs/asyncapi/generators/parameters.d.ts +14 -0
  148. package/dist/codegen/inputs/asyncapi/generators/parameters.js +120 -0
  149. package/dist/codegen/inputs/asyncapi/generators/payloads.d.ts +16 -0
  150. package/dist/codegen/inputs/asyncapi/generators/payloads.js +124 -0
  151. package/dist/codegen/inputs/asyncapi/generators/types.d.ts +9 -0
  152. package/dist/codegen/inputs/asyncapi/generators/types.js +61 -0
  153. package/dist/codegen/inputs/asyncapi/index.d.ts +1 -0
  154. package/dist/codegen/inputs/asyncapi/index.js +7 -0
  155. package/dist/codegen/inputs/asyncapi/parser.d.ts +4 -0
  156. package/dist/codegen/inputs/asyncapi/parser.js +90 -0
  157. package/dist/codegen/inputs/index.d.ts +3 -0
  158. package/dist/codegen/inputs/index.js +19 -0
  159. package/dist/codegen/inputs/jsonschema/generators/index.d.ts +1 -0
  160. package/dist/codegen/inputs/jsonschema/generators/index.js +5 -0
  161. package/dist/codegen/inputs/jsonschema/generators/models.d.ts +7 -0
  162. package/dist/codegen/inputs/jsonschema/generators/models.js +26 -0
  163. package/dist/codegen/inputs/jsonschema/index.d.ts +1 -0
  164. package/dist/codegen/inputs/jsonschema/index.js +7 -0
  165. package/dist/codegen/inputs/jsonschema/parser.d.ts +31 -0
  166. package/dist/codegen/inputs/jsonschema/parser.js +128 -0
  167. package/dist/codegen/inputs/openapi/generators/headers.d.ts +3 -0
  168. package/dist/codegen/inputs/openapi/generators/headers.js +101 -0
  169. package/dist/codegen/inputs/openapi/generators/parameters.d.ts +10 -0
  170. package/dist/codegen/inputs/openapi/generators/parameters.js +852 -0
  171. package/dist/codegen/inputs/openapi/generators/payloads.d.ts +3 -0
  172. package/dist/codegen/inputs/openapi/generators/payloads.js +231 -0
  173. package/dist/codegen/inputs/openapi/generators/types.d.ts +9 -0
  174. package/dist/codegen/inputs/openapi/generators/types.js +86 -0
  175. package/dist/codegen/inputs/openapi/index.d.ts +2 -0
  176. package/dist/codegen/inputs/openapi/index.js +8 -0
  177. package/dist/codegen/inputs/openapi/parser.d.ts +4 -0
  178. package/dist/codegen/inputs/openapi/parser.js +115 -0
  179. package/dist/codegen/inputs/openapi/security.d.ts +56 -0
  180. package/dist/codegen/inputs/openapi/security.js +193 -0
  181. package/dist/codegen/modelina/index.d.ts +2 -0
  182. package/dist/codegen/modelina/index.js +20 -0
  183. package/dist/codegen/modelina/presets/index.d.ts +3 -0
  184. package/dist/codegen/modelina/presets/index.js +14 -0
  185. package/dist/codegen/modelina/presets/primitives.d.ts +34 -0
  186. package/dist/codegen/modelina/presets/primitives.js +211 -0
  187. package/dist/codegen/modelina/presets/union.d.ts +33 -0
  188. package/dist/codegen/modelina/presets/union.js +197 -0
  189. package/dist/codegen/modelina/presets/validation.d.ts +66 -0
  190. package/dist/codegen/modelina/presets/validation.js +183 -0
  191. package/dist/codegen/modelina/types.d.ts +61845 -0
  192. package/dist/codegen/modelina/types.js +412 -0
  193. package/dist/codegen/output/filesystem.d.ts +30 -0
  194. package/dist/codegen/output/filesystem.js +61 -0
  195. package/dist/codegen/output/index.d.ts +16 -0
  196. package/dist/codegen/output/index.js +57 -0
  197. package/dist/codegen/output/memory.d.ts +54 -0
  198. package/dist/codegen/output/memory.js +81 -0
  199. package/dist/codegen/output/modelina.d.ts +30 -0
  200. package/dist/codegen/output/modelina.js +30 -0
  201. package/dist/codegen/output/types.d.ts +47 -0
  202. package/dist/codegen/output/types.js +6 -0
  203. package/dist/codegen/renderer.d.ts +13 -0
  204. package/dist/codegen/renderer.js +309 -0
  205. package/dist/codegen/schemaPostProcess.d.ts +25 -0
  206. package/dist/codegen/schemaPostProcess.js +38 -0
  207. package/dist/codegen/types.d.ts +285187 -0
  208. package/dist/codegen/types.js +177 -0
  209. package/dist/codegen/utils.d.ts +126 -0
  210. package/dist/codegen/utils.js +373 -0
  211. package/dist/commands/base.d.ts +18 -0
  212. package/dist/commands/base.js +59 -0
  213. package/dist/commands/generate.d.ts +46 -0
  214. package/dist/commands/generate.js +305 -0
  215. package/dist/commands/init.d.ts +55 -0
  216. package/dist/commands/init.js +544 -0
  217. package/dist/commands/telemetry.d.ts +25 -0
  218. package/dist/commands/telemetry.js +115 -0
  219. package/dist/index.d.ts +29 -0
  220. package/dist/index.js +35 -0
  221. package/dist/telemetry/anonymize.d.ts +19 -0
  222. package/dist/telemetry/anonymize.js +73 -0
  223. package/dist/telemetry/collector.d.ts +26 -0
  224. package/dist/telemetry/collector.js +57 -0
  225. package/dist/telemetry/config.d.ts +32 -0
  226. package/dist/telemetry/config.js +97 -0
  227. package/dist/telemetry/events.d.ts +72 -0
  228. package/dist/telemetry/events.js +5 -0
  229. package/dist/telemetry/index.d.ts +46 -0
  230. package/dist/telemetry/index.js +91 -0
  231. package/dist/telemetry/notice.d.ts +8 -0
  232. package/dist/telemetry/notice.js +50 -0
  233. package/dist/telemetry/sender.d.ts +14 -0
  234. package/dist/telemetry/sender.js +125 -0
  235. package/dist/utils/gitignore.d.ts +66 -0
  236. package/dist/utils/gitignore.js +111 -0
  237. package/dist/utils/inputSource.d.ts +3 -0
  238. package/dist/utils/inputSource.js +26 -0
  239. package/dist/utils/refResolvers.d.ts +29 -0
  240. package/dist/utils/refResolvers.js +83 -0
  241. package/dist/utils/remoteFetch.d.ts +18 -0
  242. package/dist/utils/remoteFetch.js +64 -0
  243. package/oclif.manifest.json +510 -0
  244. package/package.json +155 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypescriptModels = exports.defaultTypeScriptModelsOptions = exports.zodTypescriptModelsGenerator = void 0;
4
+ /* eslint-disable security/detect-object-injection */
5
+ const modelina_1 = require("@asyncapi/modelina");
6
+ const zod_1 = require("zod");
7
+ const modelina_2 = require("../../modelina");
8
+ const errors_1 = require("../../errors");
9
+ const output_1 = require("../../output");
10
+ exports.zodTypescriptModelsGenerator = zod_1.z.object({
11
+ id: zod_1.z
12
+ .string()
13
+ .optional()
14
+ .default('models-typescript')
15
+ .describe('Unique identifier for this generator instance. Used by other generators to reference this one as a dependency. [Read more about the models generator here](https://the-codegen-project.org/docs/generators/models)'),
16
+ dependencies: zod_1.z
17
+ .array(zod_1.z.string())
18
+ .optional()
19
+ .default([])
20
+ .describe('The list of other generator IDs that this generator depends on. [Read more about the models generator here](https://the-codegen-project.org/docs/generators/models)'),
21
+ preset: zod_1.z
22
+ .literal('models')
23
+ .default('models')
24
+ .describe('Generates raw data models directly using Modelina, without any messaging-related logic. Use this preset for plain typed models from JSON Schema, OpenAPI components, or AsyncAPI message schemas. [Read more about the models generator here](https://the-codegen-project.org/docs/generators/models)'),
25
+ renderers: modelina_2.zodTypeScriptPresets,
26
+ options: modelina_2.zodTypeScriptOptions
27
+ .optional()
28
+ .describe('Modelina TypeScriptOptions used to configure the underlying TypeScript code generation (model type, enum representation, module system, constraints, etc.). [Read more about the models generator here](https://the-codegen-project.org/docs/generators/models)'),
29
+ outputPath: zod_1.z
30
+ .string()
31
+ .optional()
32
+ .default('src/__gen__/models')
33
+ .describe('The directory path where the generated models will be written. [Read more about the models generator here](https://the-codegen-project.org/docs/generators/models)'),
34
+ language: zod_1.z.literal('typescript').optional().default('typescript')
35
+ });
36
+ exports.defaultTypeScriptModelsOptions = exports.zodTypescriptModelsGenerator.parse({});
37
+ // Main generator function that orchestrates input processing and generation
38
+ async function generateTypescriptModels(context) {
39
+ const { generator, asyncapiDocument, openapiDocument, jsonSchemaDocument } = context;
40
+ // Create generator with default options
41
+ const modelGenerator = new modelina_1.TypeScriptFileGenerator({
42
+ ...generator.options,
43
+ presets: generator.renderers
44
+ });
45
+ // Determine which document to use based on input type
46
+ const inputDocument = asyncapiDocument ?? openapiDocument ?? jsonSchemaDocument;
47
+ if (!inputDocument) {
48
+ throw new errors_1.CodegenError({
49
+ type: errors_1.ErrorType.MISSING_INPUT_DOCUMENT,
50
+ message: 'No input document provided for models generation',
51
+ help: `Ensure your configuration specifies 'inputPath' pointing to a valid AsyncAPI, OpenAPI, or JSON Schema document.\n\nFor more information: https://the-codegen-project.org/docs/configurations`
52
+ });
53
+ }
54
+ const result = await (0, output_1.generateModels)({
55
+ generator: modelGenerator,
56
+ input: inputDocument,
57
+ outputPath: generator.outputPath
58
+ });
59
+ return {
60
+ generator,
61
+ files: result.files
62
+ };
63
+ }
64
+ exports.generateTypescriptModels = generateTypescriptModels;
@@ -0,0 +1,37 @@
1
+ import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
2
+ import { GenericCodegenContext, ParameterRenderType } from '../../types';
3
+ import { z } from 'zod';
4
+ import { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
5
+ export declare const zodTypescriptParametersGenerator: z.ZodObject<{
6
+ id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ dependencies: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
8
+ preset: z.ZodDefault<z.ZodLiteral<"parameters">>;
9
+ outputPath: z.ZodDefault<z.ZodString>;
10
+ serializationType: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"json">>>;
11
+ language: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"typescript">>>;
12
+ }, "strip", z.ZodTypeAny, {
13
+ preset: "parameters";
14
+ id: string;
15
+ dependencies: string[];
16
+ language: "typescript";
17
+ outputPath: string;
18
+ serializationType: "json";
19
+ }, {
20
+ preset?: "parameters" | undefined;
21
+ id?: string | undefined;
22
+ dependencies?: string[] | undefined;
23
+ language?: "typescript" | undefined;
24
+ outputPath?: string | undefined;
25
+ serializationType?: "json" | undefined;
26
+ }>;
27
+ export type TypescriptParametersGenerator = z.input<typeof zodTypescriptParametersGenerator>;
28
+ export type TypescriptParametersGeneratorInternal = z.infer<typeof zodTypescriptParametersGenerator>;
29
+ export declare const defaultTypeScriptParametersOptions: TypescriptParametersGeneratorInternal;
30
+ export interface TypescriptParametersContext extends GenericCodegenContext {
31
+ inputType: 'asyncapi' | 'openapi';
32
+ asyncapiDocument?: AsyncAPIDocumentInterface;
33
+ openapiDocument?: OpenAPIV3.Document | OpenAPIV2.Document | OpenAPIV3_1.Document;
34
+ generator: TypescriptParametersGeneratorInternal;
35
+ }
36
+ export type TypeScriptParameterRenderType = ParameterRenderType<TypescriptParametersGeneratorInternal>;
37
+ export declare function generateTypescriptParameters(context: TypescriptParametersContext): Promise<TypeScriptParameterRenderType>;
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypescriptParameters = exports.defaultTypeScriptParametersOptions = exports.zodTypescriptParametersGenerator = void 0;
4
+ const zod_1 = require("zod");
5
+ const parameters_1 = require("../../inputs/asyncapi/generators/parameters");
6
+ const parameters_2 = require("../../inputs/openapi/generators/parameters");
7
+ const errors_1 = require("../../errors");
8
+ const output_1 = require("../../output");
9
+ exports.zodTypescriptParametersGenerator = zod_1.z.object({
10
+ id: zod_1.z
11
+ .string()
12
+ .optional()
13
+ .default('parameters-typescript')
14
+ .describe('Unique identifier for this generator instance. Used by other generators to reference this one as a dependency. [Read more about the parameters generator here](https://the-codegen-project.org/docs/generators/parameters)'),
15
+ dependencies: zod_1.z
16
+ .array(zod_1.z.string())
17
+ .optional()
18
+ .default([])
19
+ .describe('The list of other generator IDs that this generator depends on. [Read more about the parameters generator here](https://the-codegen-project.org/docs/generators/parameters)'),
20
+ preset: zod_1.z
21
+ .literal('parameters')
22
+ .default('parameters')
23
+ .describe('Generates typed channel/operation parameter models used to interpolate values into subjects, topics, and URL paths. [Read more about the parameters generator here](https://the-codegen-project.org/docs/generators/parameters)'),
24
+ outputPath: zod_1.z
25
+ .string()
26
+ .default('src/__gen__/parameters')
27
+ .describe('The directory path where the generated parameter models will be written. [Read more about the parameters generator here](https://the-codegen-project.org/docs/generators/parameters)'),
28
+ serializationType: zod_1.z
29
+ .literal('json')
30
+ .optional()
31
+ .default('json')
32
+ .describe('The serialization format used by the generated parameter models. Currently only "json" is supported. [Read more about the parameters generator here](https://the-codegen-project.org/docs/generators/parameters)'),
33
+ language: zod_1.z.literal('typescript').optional().default('typescript')
34
+ });
35
+ exports.defaultTypeScriptParametersOptions = exports.zodTypescriptParametersGenerator.parse({});
36
+ // Main generator function that orchestrates input processing and generation
37
+ async function generateTypescriptParameters(context) {
38
+ const { asyncapiDocument, openapiDocument, inputType, generator } = context;
39
+ const channelModels = {};
40
+ const files = [];
41
+ let processedSchemaData;
42
+ let parameterGenerator;
43
+ // Process input based on type
44
+ switch (inputType) {
45
+ case 'asyncapi': {
46
+ if (!asyncapiDocument) {
47
+ throw (0, errors_1.createMissingInputDocumentError)({
48
+ expectedType: 'asyncapi',
49
+ generatorPreset: 'parameters'
50
+ });
51
+ }
52
+ processedSchemaData = await (0, parameters_1.processAsyncAPIParameters)(asyncapiDocument);
53
+ parameterGenerator = (0, parameters_1.createAsyncAPIGenerator)();
54
+ break;
55
+ }
56
+ case 'openapi': {
57
+ if (!openapiDocument) {
58
+ throw (0, errors_1.createMissingInputDocumentError)({
59
+ expectedType: 'openapi',
60
+ generatorPreset: 'parameters'
61
+ });
62
+ }
63
+ processedSchemaData = (0, parameters_2.processOpenAPIParameters)(openapiDocument);
64
+ parameterGenerator = (0, parameters_2.createOpenAPIGenerator)();
65
+ break;
66
+ }
67
+ default:
68
+ throw new Error(`Unsupported input type: ${inputType}`);
69
+ }
70
+ // Generate models for channel parameters
71
+ for (const [channelId, schemaData] of Object.entries(processedSchemaData.channelParameters)) {
72
+ if (schemaData) {
73
+ const result = await (0, output_1.generateModels)({
74
+ generator: parameterGenerator,
75
+ input: schemaData.schema,
76
+ outputPath: generator.outputPath
77
+ });
78
+ channelModels[channelId] =
79
+ result.models.length > 0 ? result.models[0] : undefined;
80
+ files.push(...result.files);
81
+ }
82
+ else {
83
+ channelModels[channelId] = undefined;
84
+ }
85
+ }
86
+ // Deduplicate files by path
87
+ const uniqueFiles = [];
88
+ const seenPaths = new Set();
89
+ for (const file of files) {
90
+ if (!seenPaths.has(file.path)) {
91
+ seenPaths.add(file.path);
92
+ uniqueFiles.push(file);
93
+ }
94
+ }
95
+ return {
96
+ channelModels,
97
+ generator,
98
+ files: uniqueFiles
99
+ };
100
+ }
101
+ exports.generateTypescriptParameters = generateTypescriptParameters;
@@ -0,0 +1,73 @@
1
+ import { OutputModel } from '@asyncapi/modelina';
2
+ import { GenericCodegenContext, PayloadRenderType } from '../../types';
3
+ import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
4
+ import { ProcessedPayloadSchemaData } from '../../inputs/asyncapi/generators/payloads';
5
+ import { z } from 'zod';
6
+ import { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
7
+ export declare const zodTypeScriptPayloadGenerator: z.ZodObject<{
8
+ id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
9
+ dependencies: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
10
+ preset: z.ZodDefault<z.ZodLiteral<"payloads">>;
11
+ outputPath: z.ZodDefault<z.ZodOptional<z.ZodString>>;
12
+ serializationType: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"json">>>;
13
+ language: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"typescript">>>;
14
+ enum: z.ZodDefault<z.ZodOptional<z.ZodEnum<["enum", "union"]>>>;
15
+ map: z.ZodDefault<z.ZodOptional<z.ZodEnum<["indexedObject", "map", "record"]>>>;
16
+ useForJavaScript: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
17
+ includeValidation: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
18
+ rawPropertyNames: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
19
+ }, "strip", z.ZodTypeAny, {
20
+ map: "map" | "indexedObject" | "record";
21
+ enum: "enum" | "union";
22
+ rawPropertyNames: boolean;
23
+ preset: "payloads";
24
+ id: string;
25
+ dependencies: string[];
26
+ language: "typescript";
27
+ outputPath: string;
28
+ serializationType: "json";
29
+ includeValidation: boolean;
30
+ useForJavaScript: boolean;
31
+ }, {
32
+ map?: "map" | "indexedObject" | "record" | undefined;
33
+ enum?: "enum" | "union" | undefined;
34
+ rawPropertyNames?: boolean | undefined;
35
+ preset?: "payloads" | undefined;
36
+ id?: string | undefined;
37
+ dependencies?: string[] | undefined;
38
+ language?: "typescript" | undefined;
39
+ outputPath?: string | undefined;
40
+ serializationType?: "json" | undefined;
41
+ includeValidation?: boolean | undefined;
42
+ useForJavaScript?: boolean | undefined;
43
+ }>;
44
+ export type TypeScriptPayloadGenerator = z.input<typeof zodTypeScriptPayloadGenerator>;
45
+ export type TypeScriptPayloadGeneratorInternal = z.infer<typeof zodTypeScriptPayloadGenerator>;
46
+ export declare const defaultTypeScriptPayloadGenerator: TypeScriptPayloadGeneratorInternal;
47
+ export interface TypeScriptPayloadContext extends GenericCodegenContext {
48
+ inputType: 'asyncapi' | 'openapi';
49
+ asyncapiDocument?: AsyncAPIDocumentInterface;
50
+ openapiDocument?: OpenAPIV3.Document | OpenAPIV2.Document | OpenAPIV3_1.Document;
51
+ generator: TypeScriptPayloadGeneratorInternal;
52
+ }
53
+ export type TypeScriptPayloadRenderType = PayloadRenderType<TypeScriptPayloadGeneratorInternal>;
54
+ export interface ProcessedPayloadData {
55
+ channelModels: Record<string, {
56
+ messageModel: OutputModel;
57
+ messageType: string;
58
+ }>;
59
+ operationModels: Record<string, {
60
+ messageModel: OutputModel;
61
+ messageType: string;
62
+ }>;
63
+ otherModels: Array<{
64
+ messageModel: OutputModel;
65
+ messageType: string;
66
+ }>;
67
+ }
68
+ export declare function generateTypescriptPayloadsCore(processedData: ProcessedPayloadData, generator: TypeScriptPayloadGeneratorInternal): Promise<TypeScriptPayloadRenderType>;
69
+ export declare function generateTypescriptPayloadsCoreFromSchemas({ context, processedSchemaData }: {
70
+ processedSchemaData: ProcessedPayloadSchemaData;
71
+ context: TypeScriptPayloadContext;
72
+ }): Promise<TypeScriptPayloadRenderType>;
73
+ export declare function generateTypescriptPayload(context: TypeScriptPayloadContext): Promise<TypeScriptPayloadRenderType>;
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypescriptPayload = exports.generateTypescriptPayloadsCoreFromSchemas = exports.generateTypescriptPayloadsCore = exports.defaultTypeScriptPayloadGenerator = exports.zodTypeScriptPayloadGenerator = void 0;
4
+ /* eslint-disable security/detect-object-injection */
5
+ const modelina_1 = require("@asyncapi/modelina");
6
+ const payloads_1 = require("../../inputs/asyncapi/generators/payloads");
7
+ const payloads_2 = require("../../inputs/openapi/generators/payloads");
8
+ const zod_1 = require("zod");
9
+ const utils_1 = require("./utils");
10
+ const modelina_2 = require("@asyncapi/modelina");
11
+ const presets_1 = require("../../modelina/presets");
12
+ const errors_1 = require("../../errors");
13
+ const output_1 = require("../../output");
14
+ exports.zodTypeScriptPayloadGenerator = zod_1.z.object({
15
+ id: zod_1.z
16
+ .string()
17
+ .optional()
18
+ .default('payloads-typescript')
19
+ .describe('Unique identifier for this generator instance. Used by other generators to reference this one as a dependency. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
20
+ dependencies: zod_1.z
21
+ .array(zod_1.z.string())
22
+ .optional()
23
+ .default([])
24
+ .describe('The list of other generator IDs that this generator depends on. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
25
+ preset: zod_1.z
26
+ .literal('payloads')
27
+ .default('payloads')
28
+ .describe('Generates typed payload/message models that can be serialized into the wire format used for communication. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
29
+ outputPath: zod_1.z
30
+ .string()
31
+ .optional()
32
+ .default('src/__gen__/payloads')
33
+ .describe('The directory path where the generated payload models will be written. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
34
+ serializationType: zod_1.z
35
+ .literal('json')
36
+ .optional()
37
+ .default('json')
38
+ .describe('The serialization format used by the generated payload models. Currently only "json" is supported. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
39
+ language: zod_1.z.literal('typescript').optional().default('typescript'),
40
+ enum: zod_1.z
41
+ .enum(['enum', 'union'])
42
+ .optional()
43
+ .default('enum')
44
+ .describe('How payload enum types are rendered. By default ("enum") each is generated as a TypeScript enum, but "union" can be used to produce string/number union types instead. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
45
+ map: zod_1.z
46
+ .enum(['indexedObject', 'map', 'record'])
47
+ .optional()
48
+ .default('record')
49
+ .describe('How dictionary/map types are rendered: "record" for TypeScript Record<K, V> (default), "map" for the Map class, or "indexedObject" for index signatures. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
50
+ useForJavaScript: zod_1.z
51
+ .boolean()
52
+ .optional()
53
+ .default(true)
54
+ .describe('When true (default), JavaScript restrictions are applied to the generated models so they remain valid when transpiled to JavaScript (for example, avoiding reserved keywords as identifiers). [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)'),
55
+ includeValidation: zod_1.z
56
+ .boolean()
57
+ .optional()
58
+ .default(true)
59
+ .describe('When true (default), the generated payload models include built-in JSON Schema validation methods so incoming data can be validated at runtime. [Read more about payload validation here](https://the-codegen-project.org/docs/generators/payloads)'),
60
+ rawPropertyNames: zod_1.z
61
+ .boolean()
62
+ .optional()
63
+ .default(false)
64
+ .describe('When true, properties keep their raw names from the input schema (no normalization). Consumers will typically need to access them via obj["propertyName"] instead of obj.propertyName. [Read more about the payloads generator here](https://the-codegen-project.org/docs/generators/payloads)')
65
+ });
66
+ exports.defaultTypeScriptPayloadGenerator = exports.zodTypeScriptPayloadGenerator.parse({});
67
+ // Core generator function that works with processed data
68
+ async function generateTypescriptPayloadsCore(processedData, generator) {
69
+ // The models are already generated by the input processors,
70
+ // so we just need to return them in the expected format
71
+ return {
72
+ channelModels: processedData.channelModels,
73
+ operationModels: processedData.operationModels,
74
+ otherModels: processedData.otherModels,
75
+ generator,
76
+ files: []
77
+ };
78
+ }
79
+ exports.generateTypescriptPayloadsCore = generateTypescriptPayloadsCore;
80
+ // Core generator function that works with processed schema data
81
+ // eslint-disable-next-line sonarjs/cognitive-complexity
82
+ async function generateTypescriptPayloadsCoreFromSchemas({ context, processedSchemaData }) {
83
+ const generator = context.generator;
84
+ const modelinaGenerator = new modelina_1.TypeScriptFileGenerator({
85
+ ...utils_1.defaultCodegenTypescriptModelinaOptions,
86
+ presets: [
87
+ modelina_2.TS_DESCRIPTION_PRESET,
88
+ {
89
+ preset: modelina_2.TS_COMMON_PRESET,
90
+ options: {
91
+ marshalling: true
92
+ }
93
+ },
94
+ (0, presets_1.createValidationPreset)({
95
+ includeValidation: generator.includeValidation
96
+ }, context),
97
+ (0, presets_1.createUnionPreset)({
98
+ includeValidation: generator.includeValidation
99
+ }, context),
100
+ (0, presets_1.createPrimitivesPreset)({
101
+ includeValidation: generator.includeValidation
102
+ }, context)
103
+ ],
104
+ enumType: generator.enum,
105
+ mapType: generator.map,
106
+ rawPropertyNames: generator.rawPropertyNames,
107
+ useJavascriptReservedKeywords: generator.useForJavaScript
108
+ });
109
+ const channelModels = {};
110
+ const operationModels = {};
111
+ const otherModels = [];
112
+ const files = [];
113
+ // Generate models for channel payloads
114
+ for (const [channelId, schemaData] of Object.entries(processedSchemaData.channelPayloads)) {
115
+ if (schemaData) {
116
+ const result = await (0, output_1.generateModels)({
117
+ generator: modelinaGenerator,
118
+ input: schemaData.schema,
119
+ outputPath: generator.outputPath
120
+ });
121
+ const models = result.models;
122
+ files.push(...result.files);
123
+ if (models.length > 0) {
124
+ //Use first model as the root message model
125
+ const messageModel = models[0].model;
126
+ let messageType = messageModel.type;
127
+ if (!(messageModel instanceof modelina_1.ConstrainedObjectModel)) {
128
+ messageType = messageModel.name;
129
+ }
130
+ channelModels[channelId] = {
131
+ messageModel: models[0],
132
+ messageType
133
+ };
134
+ // Add any additional models to otherModels
135
+ for (let i = 1; i < models.length; i++) {
136
+ const additionalModel = models[i].model;
137
+ otherModels.push({
138
+ messageModel: models[i],
139
+ messageType: additionalModel.type
140
+ });
141
+ }
142
+ }
143
+ }
144
+ }
145
+ // Generate models for operation payloads
146
+ for (const [operationId, schemaData] of Object.entries(processedSchemaData.operationPayloads)) {
147
+ if (schemaData) {
148
+ const result = await (0, output_1.generateModels)({
149
+ generator: modelinaGenerator,
150
+ input: schemaData.schema,
151
+ outputPath: generator.outputPath
152
+ });
153
+ const models = result.models;
154
+ files.push(...result.files);
155
+ if (models.length > 0) {
156
+ //Use first model as the root message model
157
+ const messageModel = models[0].model;
158
+ let messageType = messageModel.type;
159
+ if (!(messageModel instanceof modelina_1.ConstrainedObjectModel)) {
160
+ messageType = messageModel.name;
161
+ }
162
+ operationModels[operationId] = {
163
+ messageModel: models[0],
164
+ messageType
165
+ };
166
+ // Add any additional models to otherModels
167
+ for (let i = 1; i < models.length; i++) {
168
+ const additionalModel = models[i].model;
169
+ otherModels.push({
170
+ messageModel: models[i],
171
+ messageType: additionalModel.type
172
+ });
173
+ }
174
+ }
175
+ }
176
+ }
177
+ // Generate models for other payloads
178
+ for (const schemaData of processedSchemaData.otherPayloads) {
179
+ const result = await (0, output_1.generateModels)({
180
+ generator: modelinaGenerator,
181
+ input: schemaData.schema,
182
+ outputPath: generator.outputPath
183
+ });
184
+ files.push(...result.files);
185
+ for (const model of result.models) {
186
+ const messageModel = model.model;
187
+ let messageType = messageModel.type;
188
+ if (!(messageModel instanceof modelina_1.ConstrainedObjectModel)) {
189
+ messageType = messageModel.name;
190
+ }
191
+ otherModels.push({
192
+ messageModel: model,
193
+ messageType
194
+ });
195
+ }
196
+ }
197
+ // Deduplicate files by path
198
+ const uniqueFiles = [];
199
+ const seenPaths = new Set();
200
+ for (const file of files) {
201
+ if (!seenPaths.has(file.path)) {
202
+ seenPaths.add(file.path);
203
+ uniqueFiles.push(file);
204
+ }
205
+ }
206
+ return {
207
+ channelModels,
208
+ operationModels,
209
+ otherModels,
210
+ generator,
211
+ files: uniqueFiles
212
+ };
213
+ }
214
+ exports.generateTypescriptPayloadsCoreFromSchemas = generateTypescriptPayloadsCoreFromSchemas;
215
+ // Main generator function that orchestrates input processing and generation
216
+ async function generateTypescriptPayload(context) {
217
+ const { asyncapiDocument, openapiDocument, inputType } = context;
218
+ let processedSchemaData;
219
+ // Process input based on type
220
+ switch (inputType) {
221
+ case 'asyncapi': {
222
+ if (!asyncapiDocument) {
223
+ throw (0, errors_1.createMissingInputDocumentError)({
224
+ expectedType: 'asyncapi',
225
+ generatorPreset: 'payloads'
226
+ });
227
+ }
228
+ processedSchemaData = await (0, payloads_1.processAsyncAPIPayloads)(asyncapiDocument);
229
+ break;
230
+ }
231
+ case 'openapi': {
232
+ if (!openapiDocument) {
233
+ throw (0, errors_1.createMissingInputDocumentError)({
234
+ expectedType: 'openapi',
235
+ generatorPreset: 'payloads'
236
+ });
237
+ }
238
+ processedSchemaData = (0, payloads_2.processOpenAPIPayloads)(openapiDocument);
239
+ break;
240
+ }
241
+ default:
242
+ throw new Error(`Unsupported input type: ${inputType}`);
243
+ }
244
+ // Generate final result using processed schema data
245
+ return generateTypescriptPayloadsCoreFromSchemas({
246
+ processedSchemaData,
247
+ context
248
+ });
249
+ }
250
+ exports.generateTypescriptPayload = generateTypescriptPayload;
@@ -0,0 +1,34 @@
1
+ import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
2
+ import { GenericCodegenContext, TypesRenderType } from '../../types';
3
+ import { z } from 'zod';
4
+ import { OpenAPIV2, OpenAPIV3, OpenAPIV3_1 } from 'openapi-types';
5
+ export declare const zodTypescriptTypesGenerator: z.ZodObject<{
6
+ id: z.ZodDefault<z.ZodOptional<z.ZodString>>;
7
+ dependencies: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
8
+ preset: z.ZodDefault<z.ZodLiteral<"types">>;
9
+ outputPath: z.ZodDefault<z.ZodString>;
10
+ language: z.ZodDefault<z.ZodOptional<z.ZodLiteral<"typescript">>>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ preset: "types";
13
+ id: string;
14
+ dependencies: string[];
15
+ language: "typescript";
16
+ outputPath: string;
17
+ }, {
18
+ preset?: "types" | undefined;
19
+ id?: string | undefined;
20
+ dependencies?: string[] | undefined;
21
+ language?: "typescript" | undefined;
22
+ outputPath?: string | undefined;
23
+ }>;
24
+ export type TypescriptTypesGenerator = z.input<typeof zodTypescriptTypesGenerator>;
25
+ export type TypescriptTypesGeneratorInternal = z.infer<typeof zodTypescriptTypesGenerator>;
26
+ export declare const defaultTypeScriptTypesOptions: TypescriptTypesGeneratorInternal;
27
+ export interface TypescriptTypesContext extends GenericCodegenContext {
28
+ inputType: 'asyncapi' | 'openapi';
29
+ asyncapiDocument?: AsyncAPIDocumentInterface;
30
+ openapiDocument?: OpenAPIV3.Document | OpenAPIV2.Document | OpenAPIV3_1.Document;
31
+ generator: TypescriptTypesGeneratorInternal;
32
+ }
33
+ export type TypeScriptTypesRenderType = TypesRenderType<TypescriptTypesGeneratorInternal>;
34
+ export declare function generateTypescriptTypes(context: TypescriptTypesContext): Promise<TypeScriptTypesRenderType>;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypescriptTypes = exports.defaultTypeScriptTypesOptions = exports.zodTypescriptTypesGenerator = void 0;
4
+ const zod_1 = require("zod");
5
+ const types_1 = require("../../inputs/asyncapi/generators/types");
6
+ const types_2 = require("../../inputs/openapi/generators/types");
7
+ const errors_1 = require("../../errors");
8
+ exports.zodTypescriptTypesGenerator = zod_1.z.object({
9
+ id: zod_1.z
10
+ .string()
11
+ .optional()
12
+ .default('types-typescript')
13
+ .describe('Unique identifier for this generator instance. Used by other generators to reference this one as a dependency. [Read more about the types generator here](https://the-codegen-project.org/docs/generators/types)'),
14
+ dependencies: zod_1.z
15
+ .array(zod_1.z.string())
16
+ .optional()
17
+ .default([])
18
+ .describe('The list of other generator IDs that this generator depends on. [Read more about the types generator here](https://the-codegen-project.org/docs/generators/types)'),
19
+ preset: zod_1.z
20
+ .literal('types')
21
+ .default('types')
22
+ .describe('Generates simple type aliases and enum definitions derived from the input document. [Read more about the types generator here](https://the-codegen-project.org/docs/generators/types)'),
23
+ outputPath: zod_1.z
24
+ .string()
25
+ .default('src/__gen__')
26
+ .describe('The directory path where the generated type definitions will be written. [Read more about the types generator here](https://the-codegen-project.org/docs/generators/types)'),
27
+ language: zod_1.z.literal('typescript').optional().default('typescript')
28
+ });
29
+ exports.defaultTypeScriptTypesOptions = exports.zodTypescriptTypesGenerator.parse({});
30
+ async function generateTypescriptTypes(context) {
31
+ const { asyncapiDocument, openapiDocument, inputType, generator } = context;
32
+ let result;
33
+ let files = [];
34
+ switch (inputType) {
35
+ case 'asyncapi':
36
+ if (!asyncapiDocument) {
37
+ throw (0, errors_1.createMissingInputDocumentError)({
38
+ expectedType: 'asyncapi',
39
+ generatorPreset: 'types'
40
+ });
41
+ }
42
+ {
43
+ const asyncAPIResult = await (0, types_1.generateAsyncAPITypes)(asyncapiDocument, generator);
44
+ result = asyncAPIResult.result;
45
+ files = asyncAPIResult.files;
46
+ }
47
+ break;
48
+ case 'openapi':
49
+ if (!openapiDocument) {
50
+ throw (0, errors_1.createMissingInputDocumentError)({
51
+ expectedType: 'openapi',
52
+ generatorPreset: 'types'
53
+ });
54
+ }
55
+ {
56
+ const openAPIResult = await (0, types_2.generateOpenAPITypes)(openapiDocument, generator);
57
+ result = openAPIResult.result;
58
+ files = openAPIResult.files;
59
+ }
60
+ break;
61
+ default:
62
+ throw new Error(`Unsupported input type: ${inputType}`);
63
+ }
64
+ return {
65
+ result,
66
+ generator,
67
+ files
68
+ };
69
+ }
70
+ exports.generateTypescriptTypes = generateTypescriptTypes;