@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,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderChannelJSDoc = exports.escapeJSDocDescription = exports.collectProtocolDependencies = exports.getValidationFunctions = exports.getMessageTypeAndModule = exports.addHeadersToDependencies = exports.addParametersToExports = exports.addParametersToDependencies = exports.addPayloadsToExports = exports.addPayloadsToDependencies = void 0;
4
+ const modelina_1 = require("@asyncapi/modelina");
5
+ const utils_1 = require("../../../utils");
6
+ function addPayloadsToDependencies(models, payloadGenerator, currentGenerator, dependencies, importExtension = 'none') {
7
+ models
8
+ .filter((payload) => payload)
9
+ .forEach((payload) => {
10
+ const payloadImportPath = (0, utils_1.relativePath)(currentGenerator.outputPath, (0, utils_1.joinPath)(payloadGenerator.outputPath, payload.messageModel.modelName));
11
+ const importPath = (0, utils_1.appendImportExtension)(`./${(0, utils_1.ensureRelativePath)(payloadImportPath)}`, importExtension);
12
+ if (payload.messageModel.model instanceof modelina_1.ConstrainedObjectModel ||
13
+ payload.messageModel.model instanceof modelina_1.ConstrainedEnumModel) {
14
+ dependencies.push(`import {${payload.messageModel.modelName}} from '${importPath}';`);
15
+ }
16
+ else {
17
+ dependencies.push(`import * as ${payload.messageModel.modelName}Module from '${importPath}';`);
18
+ }
19
+ });
20
+ }
21
+ exports.addPayloadsToDependencies = addPayloadsToDependencies;
22
+ function addPayloadsToExports(models, dependencies) {
23
+ models
24
+ .filter((payload) => payload)
25
+ .forEach((payload) => {
26
+ if (payload.messageModel.model instanceof modelina_1.ConstrainedObjectModel ||
27
+ payload.messageModel.model instanceof modelina_1.ConstrainedEnumModel) {
28
+ dependencies.push(`export {${payload.messageModel.modelName}};`);
29
+ }
30
+ else {
31
+ dependencies.push(`export {${payload.messageModel.modelName}Module};`);
32
+ }
33
+ });
34
+ }
35
+ exports.addPayloadsToExports = addPayloadsToExports;
36
+ function addParametersToDependencies(parameters, parameterGenerator, currentGenerator, dependencies, importExtension = 'none') {
37
+ Object.values(parameters)
38
+ .filter((model) => model !== undefined)
39
+ .forEach((parameter) => {
40
+ if (parameter === undefined) {
41
+ return;
42
+ }
43
+ const parameterImportPath = (0, utils_1.relativePath)(currentGenerator.outputPath, (0, utils_1.joinPath)(parameterGenerator.outputPath, parameter.modelName));
44
+ const importPath = (0, utils_1.appendImportExtension)(`./${(0, utils_1.ensureRelativePath)(parameterImportPath)}`, importExtension);
45
+ dependencies.push(`import {${parameter.modelName}} from '${importPath}';`);
46
+ });
47
+ }
48
+ exports.addParametersToDependencies = addParametersToDependencies;
49
+ function addParametersToExports(parameters, dependencies) {
50
+ Object.values(parameters)
51
+ .filter((model) => model !== undefined)
52
+ .forEach((parameter) => {
53
+ if (parameter === undefined) {
54
+ return;
55
+ }
56
+ dependencies.push(`export {${parameter.modelName}};`);
57
+ });
58
+ }
59
+ exports.addParametersToExports = addParametersToExports;
60
+ function addHeadersToDependencies(headers, headerGenerator, currentGenerator, dependencies, importExtension = 'none') {
61
+ Object.values(headers)
62
+ .filter((model) => model !== undefined)
63
+ .forEach((header) => {
64
+ if (header === undefined) {
65
+ return;
66
+ }
67
+ const headerImportPath = (0, utils_1.relativePath)(currentGenerator.outputPath, (0, utils_1.joinPath)(headerGenerator.outputPath, header.modelName));
68
+ const importPath = (0, utils_1.appendImportExtension)(`./${(0, utils_1.ensureRelativePath)(headerImportPath)}`, importExtension);
69
+ dependencies.push(`import {${header.modelName}} from '${importPath}';`);
70
+ });
71
+ }
72
+ exports.addHeadersToDependencies = addHeadersToDependencies;
73
+ function getMessageTypeAndModule(payload) {
74
+ if (payload === undefined) {
75
+ return {
76
+ messageType: undefined,
77
+ messageModule: undefined,
78
+ includesStatusCodes: false
79
+ };
80
+ }
81
+ let messageModule;
82
+ if (!(payload.messageModel.model instanceof modelina_1.ConstrainedObjectModel)) {
83
+ // Use modelName for module name since messageType may contain invalid identifier characters
84
+ // (e.g., 'Pet[]' for array types). The import is generated using modelName, so we need to match.
85
+ messageModule = `${payload.messageModel.modelName}Module`;
86
+ }
87
+ // Check if this payload has unmarshalByStatusCode support
88
+ // This is set explicitly on the payload, or detected from the model's originalInput
89
+ const includesStatusCodes = payload.includesStatusCodes ??
90
+ payload.messageModel.model.originalInput?.['x-modelina-has-status-codes'] === true;
91
+ return { messageType: payload.messageType, messageModule, includesStatusCodes };
92
+ }
93
+ exports.getMessageTypeAndModule = getMessageTypeAndModule;
94
+ function getValidationFunctions({ includeValidation, messageModule, messageType, onValidationFail }) {
95
+ let validatorCreation = '';
96
+ let validationFunction = '';
97
+ if (includeValidation) {
98
+ validatorCreation = `const validator = ${messageModule ?? messageType}.createValidator();`;
99
+ validationFunction = `if(!skipMessageValidation) {
100
+ const {valid, errors} = ${messageModule ?? messageType}.validate({data: receivedData, ajvValidatorFunction: validator});
101
+ if(!valid) {
102
+ ${onValidationFail}
103
+ }
104
+ }`;
105
+ }
106
+ return {
107
+ potentialValidatorCreation: validatorCreation,
108
+ potentialValidationFunction: validationFunction
109
+ };
110
+ }
111
+ exports.getValidationFunctions = getValidationFunctions;
112
+ /**
113
+ * Collects all payload, parameter, and header imports for a specific protocol's dependencies.
114
+ * This should be called once per protocol to add the necessary imports.
115
+ */
116
+ function collectProtocolDependencies(payloads, parameters, headers, context, protocolDeps, importExtension = 'none') {
117
+ // Add payload imports
118
+ addPayloadsToDependencies(Object.values(payloads.operationModels), payloads.generator, context.generator, protocolDeps, importExtension);
119
+ addPayloadsToDependencies(Object.values(payloads.channelModels), payloads.generator, context.generator, protocolDeps, importExtension);
120
+ addPayloadsToDependencies(Object.values(payloads.otherModels), payloads.generator, context.generator, protocolDeps, importExtension);
121
+ // Add parameter imports
122
+ addParametersToDependencies(parameters.channelModels, parameters.generator, context.generator, protocolDeps, importExtension);
123
+ // Add header imports
124
+ if (headers) {
125
+ addHeadersToDependencies(headers.channelModels, headers.generator, context.generator, protocolDeps, importExtension);
126
+ }
127
+ }
128
+ exports.collectProtocolDependencies = collectProtocolDependencies;
129
+ /**
130
+ * Escapes special characters in description for JSDoc.
131
+ * Handles closing comment markers and formats multi-line descriptions.
132
+ */
133
+ function escapeJSDocDescription(description) {
134
+ if (!description) {
135
+ return '';
136
+ }
137
+ return description
138
+ .replace(/\*\//g, '*\u2215') // Escape closing comment (use division slash)
139
+ .replace(/\n/g, '\n * '); // Format multi-line with JSDoc prefix
140
+ }
141
+ exports.escapeJSDocDescription = escapeJSDocDescription;
142
+ /**
143
+ * Renders JSDoc block for channel functions.
144
+ * Uses operation description from API spec when available, falls back to generic text.
145
+ */
146
+ function renderChannelJSDoc(params) {
147
+ const { description, deprecated, fallbackDescription, parameters = [] } = params;
148
+ const desc = description
149
+ ? escapeJSDocDescription(description)
150
+ : escapeJSDocDescription(fallbackDescription);
151
+ const parts = ['/**', ` * ${desc}`];
152
+ if (deprecated) {
153
+ parts.push(' *');
154
+ parts.push(' * @deprecated');
155
+ }
156
+ if (parameters.length > 0) {
157
+ parts.push(' *');
158
+ parameters.forEach((p) => parts.push(p.jsDoc));
159
+ }
160
+ parts.push(' */');
161
+ return parts.join('\n');
162
+ }
163
+ exports.renderChannelJSDoc = renderChannelJSDoc;
@@ -0,0 +1,8 @@
1
+ import { TheCodegenConfiguration } from '../../../types';
2
+ import { SupportedProtocols, TypeScriptClientContext, TypeScriptClientGenerator, TypeScriptClientRenderType, defaultTypeScriptClientGenerator, zodTypescriptClientGenerator, TypeScriptClientGeneratorInternal } from './types';
3
+ export { SupportedProtocols, TypeScriptClientContext, TypeScriptClientGenerator, TypeScriptClientRenderType, defaultTypeScriptClientGenerator, zodTypescriptClientGenerator, TypeScriptClientGeneratorInternal };
4
+ export declare function generateTypeScriptClient(context: TypeScriptClientContext): Promise<TypeScriptClientRenderType>;
5
+ /**
6
+ * Make sure we include all dependencies, if not added manually, is added to the generators.
7
+ */
8
+ export declare function includeTypeScriptClientDependencies(config: TheCodegenConfiguration, generator: TypeScriptClientGenerator): unknown[];
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.includeTypeScriptClientDependencies = exports.generateTypeScriptClient = exports.zodTypescriptClientGenerator = exports.defaultTypeScriptClientGenerator = void 0;
4
+ /* eslint-disable security/detect-object-injection */
5
+ /* eslint-disable sonarjs/no-duplicate-string */
6
+ const channels_1 = require("../channels");
7
+ const nats_1 = require("./protocols/nats");
8
+ const utils_1 = require("../../../utils");
9
+ const types_1 = require("./types");
10
+ Object.defineProperty(exports, "defaultTypeScriptClientGenerator", { enumerable: true, get: function () { return types_1.defaultTypeScriptClientGenerator; } });
11
+ Object.defineProperty(exports, "zodTypescriptClientGenerator", { enumerable: true, get: function () { return types_1.zodTypescriptClientGenerator; } });
12
+ const errors_1 = require("../../../errors");
13
+ async function generateTypeScriptClient(context) {
14
+ const { asyncapiDocument, generator, inputType } = context;
15
+ if (inputType === 'asyncapi' && asyncapiDocument === undefined) {
16
+ throw (0, errors_1.createMissingInputDocumentError)({
17
+ expectedType: 'asyncapi',
18
+ generatorPreset: 'client'
19
+ });
20
+ }
21
+ const renderedProtocols = {
22
+ nats: ''
23
+ };
24
+ const files = [];
25
+ for (const protocol of generator.protocols) {
26
+ switch (protocol) {
27
+ case 'nats': {
28
+ const renderedResult = await (0, nats_1.generateNatsClient)(context);
29
+ const filePath = (0, utils_1.joinPath)(context.generator.outputPath, 'NatsClient.ts');
30
+ files.push({ path: filePath, content: renderedResult });
31
+ renderedProtocols[protocol] = renderedResult;
32
+ break;
33
+ }
34
+ default:
35
+ break;
36
+ }
37
+ }
38
+ return {
39
+ protocolResult: renderedProtocols,
40
+ files
41
+ };
42
+ }
43
+ exports.generateTypeScriptClient = generateTypeScriptClient;
44
+ /**
45
+ * Make sure we include all dependencies, if not added manually, is added to the generators.
46
+ */
47
+ function includeTypeScriptClientDependencies(config, generator) {
48
+ const newGenerators = [];
49
+ const channelsGeneratorId = generator.channelsGeneratorId;
50
+ const hasChannelsGenerator = config.generators.find((generatorSearch) => generatorSearch.id === channelsGeneratorId) !== undefined;
51
+ if (!hasChannelsGenerator) {
52
+ const defaultChannelPayloadGenerator = {
53
+ ...channels_1.defaultTypeScriptChannelsGenerator,
54
+ protocols: generator.protocols,
55
+ outputPath: (0, utils_1.joinPath)(generator.outputPath ?? '', './channels')
56
+ };
57
+ newGenerators.push(defaultChannelPayloadGenerator);
58
+ }
59
+ return newGenerators;
60
+ }
61
+ exports.includeTypeScriptClientDependencies = includeTypeScriptClientDependencies;
@@ -0,0 +1,6 @@
1
+ export declare function renderCorePublish({ description, messageType, channelParameterType, channelName }: {
2
+ description: string;
3
+ messageType: string;
4
+ channelParameterType?: string;
5
+ channelName: string;
6
+ }): string;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderCorePublish = void 0;
4
+ function renderCorePublish({ description, messageType, channelParameterType, channelName }) {
5
+ const functionParameters = [
6
+ {
7
+ parameter: `message`,
8
+ parameterType: `message: ${messageType}`,
9
+ jsDoc: ' * @param message to publish'
10
+ },
11
+ ...(channelParameterType
12
+ ? [
13
+ {
14
+ parameter: `parameters`,
15
+ parameterType: `parameters: ${channelParameterType}`,
16
+ jsDoc: ' * @param parameters for topic substitution'
17
+ }
18
+ ]
19
+ : []),
20
+ {
21
+ parameter: 'options',
22
+ parameterType: 'options?: Nats.PublishOptions',
23
+ jsDoc: ' * @param options to use while publishing the message'
24
+ }
25
+ ];
26
+ const functionCallParameters = [
27
+ 'message',
28
+ ...(channelParameterType ? ['parameters'] : []),
29
+ 'nc: this.nc',
30
+ 'codec: this.codec',
31
+ 'options'
32
+ ];
33
+ return `
34
+ /**
35
+ * ${description}
36
+ *
37
+ ${functionParameters.map((param) => param.jsDoc).join('\n ')}
38
+ */
39
+ public async ${channelName}({
40
+ ${functionParameters.map((param) => param.parameter).join(', \n ')}
41
+ }: {
42
+ ${functionParameters.map((param) => param.parameterType).join(', \n ')}
43
+ }): Promise<void> {
44
+ if (!this.isClosed() && this.nc !== undefined && this.codec !== undefined) {
45
+ await nats.${channelName}({
46
+ ${functionCallParameters.join(', \n ')}
47
+ });
48
+ } else {
49
+ Promise.reject('Nats client not available yet, please connect or set the client');
50
+ }
51
+ }`;
52
+ }
53
+ exports.renderCorePublish = renderCorePublish;
@@ -0,0 +1,6 @@
1
+ export declare function renderCoreSubscribe({ description, messageType, channelParameterType, channelName }: {
2
+ description: string;
3
+ messageType: string;
4
+ channelParameterType?: string;
5
+ channelName: string;
6
+ }): string;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderCoreSubscribe = void 0;
4
+ function renderCoreSubscribe({ description, messageType, channelParameterType, channelName }) {
5
+ const callbackFunctionParameters = [
6
+ {
7
+ parameter: 'err?: Error',
8
+ jsDoc: ' * @param err if any error occurred this will be sat'
9
+ },
10
+ {
11
+ parameter: `msg?: ${messageType}`,
12
+ jsDoc: ' * @param msg that was received'
13
+ },
14
+ ...(channelParameterType
15
+ ? [
16
+ {
17
+ parameter: `parameters?: ${channelParameterType}`,
18
+ jsDoc: ' * @param parameters that was received in the topic'
19
+ }
20
+ ]
21
+ : []),
22
+ {
23
+ parameter: `natsMsg?: Nats.Msg`,
24
+ jsDoc: ' * @param natsMsg'
25
+ }
26
+ ];
27
+ const functionParameters = [
28
+ {
29
+ parameter: `onDataCallback`,
30
+ parameterType: `onDataCallback: (${callbackFunctionParameters.map((param) => param.parameter).join(', ')}) => void`,
31
+ jsDoc: ` * @param {${channelName}Callback} onDataCallback to call when messages are received`
32
+ },
33
+ ...(channelParameterType
34
+ ? [
35
+ {
36
+ parameter: `parameters`,
37
+ parameterType: `parameters: ${channelParameterType}`,
38
+ jsDoc: ' * @param parameters for topic substitution'
39
+ }
40
+ ]
41
+ : []),
42
+ {
43
+ parameter: 'options',
44
+ parameterType: 'options?: Nats.SubscriptionOptions',
45
+ jsDoc: ' * @param options when setting up the subscription'
46
+ },
47
+ {
48
+ parameter: 'flush',
49
+ parameterType: 'flush?: boolean',
50
+ jsDoc: ' * @param options when setting up the subscription'
51
+ }
52
+ ];
53
+ const functionCallParameters = [
54
+ 'onDataCallback',
55
+ ...(channelParameterType ? ['parameters'] : []),
56
+ 'nc: this.nc',
57
+ 'codec: this.codec',
58
+ 'options'
59
+ ];
60
+ return `
61
+ /**
62
+ * ${description}
63
+ *
64
+ ${functionParameters.map((param) => param.jsDoc).join('\n ')}
65
+ */
66
+ public ${channelName}({
67
+ ${functionParameters.map((param) => param.parameter).join(', \n ')}
68
+ }: {
69
+ ${functionParameters.map((param) => param.parameterType).join(', \n ')}
70
+ }): Promise<Nats.Subscription> {
71
+ return new Promise(async (resolve, reject) => {
72
+ if(!this.isClosed() && this.nc !== undefined && this.codec !== undefined){
73
+ try {
74
+ const sub = await nats.${channelName}({
75
+ ${functionCallParameters.join(', \n ')}
76
+ });
77
+ if(flush){
78
+ await this.nc.flush();
79
+ }
80
+ resolve(sub);
81
+ }catch(e: any){
82
+ reject(e);
83
+ }
84
+ } else {
85
+ Promise.reject('Nats client not available yet, please connect or set the client');
86
+ }
87
+ });
88
+ }`;
89
+ }
90
+ exports.renderCoreSubscribe = renderCoreSubscribe;
@@ -0,0 +1,6 @@
1
+ export declare function renderJetStreamPullSubscription({ description, messageType, channelParameterType, channelName }: {
2
+ description: string;
3
+ messageType: string;
4
+ channelParameterType?: string;
5
+ channelName: string;
6
+ }): string;
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderJetStreamPullSubscription = void 0;
4
+ function renderJetStreamPullSubscription({ description, messageType, channelParameterType, channelName }) {
5
+ const callbackFunctionParameters = [
6
+ {
7
+ parameter: 'err?: Error',
8
+ jsDoc: ' * @param err if any error occurred this will be sat'
9
+ },
10
+ {
11
+ parameter: `msg?: ${messageType}`,
12
+ jsDoc: ' * @param msg that was received'
13
+ },
14
+ ...(channelParameterType
15
+ ? [
16
+ {
17
+ parameter: `parameters?: ${channelParameterType}`,
18
+ jsDoc: ' * @param parameters that was received in the topic'
19
+ }
20
+ ]
21
+ : []),
22
+ {
23
+ parameter: `jetstreamMsg?: Nats.JsMsg`,
24
+ jsDoc: ' * @param jetstreamMsg'
25
+ }
26
+ ];
27
+ const functionParameters = [
28
+ {
29
+ parameter: `onDataCallback`,
30
+ parameterType: `onDataCallback: (${callbackFunctionParameters.map((param) => param.parameter).join(', ')}) => void`,
31
+ jsDoc: ` * @param {${channelName}Callback} onDataCallback to call when messages are received`
32
+ },
33
+ ...(channelParameterType
34
+ ? [
35
+ {
36
+ parameter: `parameters`,
37
+ parameterType: `parameters: ${channelParameterType}`,
38
+ jsDoc: ' * @param parameters for topic substitution'
39
+ }
40
+ ]
41
+ : []),
42
+ {
43
+ parameter: 'options = {}',
44
+ parameterType: 'options: Nats.ConsumerOptsBuilder | Partial<Nats.ConsumerOpts>',
45
+ jsDoc: ' * @param options when setting up the subscription'
46
+ }
47
+ ];
48
+ const functionCallParameters = [
49
+ 'onDataCallback',
50
+ ...(channelParameterType ? ['parameters'] : []),
51
+ 'js: this.js',
52
+ 'codec: this.codec',
53
+ 'options'
54
+ ];
55
+ return `
56
+ /**
57
+ * ${description}
58
+ *
59
+ ${functionParameters.map((param) => param.jsDoc).join('\n ')}
60
+ */
61
+ public ${channelName}({
62
+ ${functionParameters.map((param) => param.parameter).join(', \n ')}
63
+ }: {
64
+ ${functionParameters.map((param) => param.parameterType).join(', \n ')}
65
+ }): Promise<Nats.JetStreamPullSubscription> {
66
+ return new Promise(async (resolve, reject) => {
67
+ if (!this.isClosed() && this.nc !== undefined && this.codec !== undefined && this.js !== undefined) {
68
+ try {
69
+ const sub = await nats.${channelName}({
70
+ ${functionCallParameters.join(', \n ')}
71
+ });
72
+ resolve(sub);
73
+ } catch (e: any) {
74
+ reject(e);
75
+ }
76
+ } else {
77
+ Promise.reject('Nats client not available yet, please connect or set the client');
78
+ }
79
+ });
80
+ }
81
+ `;
82
+ }
83
+ exports.renderJetStreamPullSubscription = renderJetStreamPullSubscription;
@@ -0,0 +1,6 @@
1
+ export declare function renderJetStreamPublish({ description, messageType, channelParameterType, channelName }: {
2
+ description: string;
3
+ messageType: string;
4
+ channelParameterType?: string;
5
+ channelName: string;
6
+ }): string;
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderJetStreamPublish = void 0;
4
+ function renderJetStreamPublish({ description, messageType, channelParameterType, channelName }) {
5
+ const functionParameters = [
6
+ {
7
+ parameter: `message`,
8
+ parameterType: `message: ${messageType}`,
9
+ jsDoc: ' * @param message to publish'
10
+ },
11
+ ...(channelParameterType
12
+ ? [
13
+ {
14
+ parameter: `parameters`,
15
+ parameterType: `parameters: ${channelParameterType}`,
16
+ jsDoc: ' * @param parameters for topic substitution'
17
+ }
18
+ ]
19
+ : []),
20
+ {
21
+ parameter: 'options = {}',
22
+ parameterType: 'options?: Partial<Nats.JetStreamPublishOptions>',
23
+ jsDoc: ' * @param options to use while publishing the message'
24
+ }
25
+ ];
26
+ const functionCallParameters = [
27
+ 'message',
28
+ ...(channelParameterType ? ['parameters'] : []),
29
+ 'js: this.js',
30
+ 'codec: this.codec',
31
+ 'options'
32
+ ];
33
+ return `
34
+ /**
35
+ * ${description}
36
+ *
37
+ ${functionParameters.map((param) => param.jsDoc).join('\n')}
38
+ */
39
+ public async ${channelName}({
40
+ ${functionParameters.map((param) => param.parameter).join(', \n ')}
41
+ }: {
42
+ ${functionParameters.map((param) => param.parameterType).join(', \n ')}
43
+ }): Promise<void> {
44
+ if (!this.isClosed() && this.nc !== undefined && this.codec !== undefined && this.js !== undefined) {
45
+ return nats.${channelName}({
46
+ ${functionCallParameters.join(', \n ')}
47
+ });
48
+ } else {
49
+ Promise.reject('Nats client not available yet, please connect or set the client');
50
+ }
51
+ }
52
+ `;
53
+ }
54
+ exports.renderJetStreamPublish = renderJetStreamPublish;
@@ -0,0 +1,6 @@
1
+ export declare function renderJetStreamPushSubscription({ description, messageType, channelParameterType, channelName }: {
2
+ description: string;
3
+ messageType: string;
4
+ channelParameterType?: string;
5
+ channelName: string;
6
+ }): string;
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderJetStreamPushSubscription = void 0;
4
+ function renderJetStreamPushSubscription({ description, messageType, channelParameterType, channelName }) {
5
+ const callbackFunctionParameters = [
6
+ {
7
+ parameter: 'err?: Error',
8
+ jsDoc: ' * @param err if any error occurred this will be sat'
9
+ },
10
+ {
11
+ parameter: `msg?: ${messageType}`,
12
+ jsDoc: ' * @param msg that was received'
13
+ },
14
+ ...(channelParameterType
15
+ ? [
16
+ {
17
+ parameter: `parameters?: ${channelParameterType}`,
18
+ jsDoc: ' * @param parameters that was received in the topic'
19
+ }
20
+ ]
21
+ : []),
22
+ {
23
+ parameter: `jetstreamMsg?: Nats.JsMsg`,
24
+ jsDoc: ' * @param jetstreamMsg'
25
+ }
26
+ ];
27
+ const functionParameters = [
28
+ {
29
+ parameter: `onDataCallback`,
30
+ parameterType: `onDataCallback: (${callbackFunctionParameters.map((param) => param.parameter).join(', ')}) => void`,
31
+ jsDoc: ` * @param {${channelName}Callback} onDataCallback to call when messages are received`
32
+ },
33
+ ...(channelParameterType
34
+ ? [
35
+ {
36
+ parameter: `parameters`,
37
+ parameterType: `parameters: ${channelParameterType}`,
38
+ jsDoc: ' * @param parameters for topic substitution'
39
+ }
40
+ ]
41
+ : []),
42
+ {
43
+ parameter: 'options = {}',
44
+ parameterType: 'options: Nats.ConsumerOptsBuilder | Partial<Nats.ConsumerOpts>',
45
+ jsDoc: ' * @param options when setting up the subscription'
46
+ }
47
+ ];
48
+ const functionCallParameters = [
49
+ 'onDataCallback',
50
+ ...(channelParameterType ? ['parameters'] : []),
51
+ 'js: this.js',
52
+ 'codec: this.codec',
53
+ 'options'
54
+ ];
55
+ return `
56
+ /**
57
+ * ${description}
58
+ *
59
+ ${functionParameters.map((param) => param.jsDoc).join('\n ')}
60
+ */
61
+ public ${channelName}({
62
+ ${functionParameters.map((param) => param.parameter).join(', \n ')}
63
+ }: {
64
+ ${functionParameters.map((param) => param.parameterType).join(', \n ')}
65
+ }): Promise<Nats.JetStreamSubscription> {
66
+ return new Promise(async (resolve, reject) => {
67
+ if (!this.isClosed() && this.nc !== undefined && this.codec !== undefined && this.js !== undefined) {
68
+ try {
69
+ const sub = await nats.${channelName}({
70
+ ${functionCallParameters.join(', \n ')}
71
+ });
72
+ resolve(sub);
73
+ } catch (e: any) {
74
+ reject(e);
75
+ }
76
+ } else {
77
+ Promise.reject('Nats client not available yet, please connect or set the client');
78
+ }
79
+ });
80
+ }`;
81
+ }
82
+ exports.renderJetStreamPushSubscription = renderJetStreamPushSubscription;
@@ -0,0 +1,2 @@
1
+ import { TypeScriptClientContext } from '..';
2
+ export declare function generateNatsClient(context: TypeScriptClientContext): Promise<string>;