@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.
- package/LICENSE +201 -0
- package/README.md +336 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.mjs +3 -0
- package/bin/run.cmd +3 -0
- package/bin/run.mjs +4 -0
- package/dist/LoggingInterface.d.ts +123 -0
- package/dist/LoggingInterface.js +300 -0
- package/dist/PersistedConfig.d.ts +46 -0
- package/dist/PersistedConfig.js +94 -0
- package/dist/browser/adapters/output.d.ts +69 -0
- package/dist/browser/adapters/output.js +91 -0
- package/dist/browser/config.d.ts +18 -0
- package/dist/browser/config.js +59 -0
- package/dist/browser/generate.d.ts +20 -0
- package/dist/browser/generate.js +129 -0
- package/dist/browser/index.d.ts +17 -0
- package/dist/browser/index.js +26 -0
- package/dist/browser/parser.d.ts +9 -0
- package/dist/browser/parser.js +61 -0
- package/dist/browser/shims/asyncapi-parser.d.ts +30 -0
- package/dist/browser/shims/asyncapi-parser.js +52 -0
- package/dist/browser/shims/fs.d.ts +190 -0
- package/dist/browser/shims/fs.js +188 -0
- package/dist/browser/shims/json-schema-ref-parser.d.ts +73 -0
- package/dist/browser/shims/json-schema-ref-parser.js +246 -0
- package/dist/browser/shims/swagger-parser.d.ts +20 -0
- package/dist/browser/shims/swagger-parser.js +40 -0
- package/dist/codegen/configurationSchemaBuilder.d.ts +15 -0
- package/dist/codegen/configurationSchemaBuilder.js +48 -0
- package/dist/codegen/configurations.d.ts +29 -0
- package/dist/codegen/configurations.js +260 -0
- package/dist/codegen/detection.d.ts +19 -0
- package/dist/codegen/detection.js +174 -0
- package/dist/codegen/errors.d.ts +111 -0
- package/dist/codegen/errors.js +352 -0
- package/dist/codegen/generators/generic/custom.d.ts +75 -0
- package/dist/codegen/generators/generic/custom.js +66 -0
- package/dist/codegen/generators/index.d.ts +14 -0
- package/dist/codegen/generators/index.js +42 -0
- package/dist/codegen/generators/typescript/channels/asyncapi.d.ts +10 -0
- package/dist/codegen/generators/typescript/channels/asyncapi.js +131 -0
- package/dist/codegen/generators/typescript/channels/index.d.ts +8 -0
- package/dist/codegen/generators/typescript/channels/index.js +142 -0
- package/dist/codegen/generators/typescript/channels/openapi.d.ts +9 -0
- package/dist/codegen/generators/typescript/channels/openapi.js +168 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/index.d.ts +7 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/index.js +149 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/publishExchange.d.ts +5 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/publishExchange.js +106 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/publishQueue.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/publishQueue.js +102 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/subscribeQueue.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/amqp/subscribeQueue.js +133 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/express.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/express.js +100 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/fetch.d.ts +5 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/fetch.js +144 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/index.d.ts +6 -0
- package/dist/codegen/generators/typescript/channels/protocols/eventsource/index.js +132 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/client.d.ts +10 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/client.js +224 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/common-types.d.ts +14 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/common-types.js +800 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/index.d.ts +8 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/index.js +96 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/security.d.ts +48 -0
- package/dist/codegen/generators/typescript/channels/protocols/http/security.js +491 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/index.d.ts +6 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/index.js +127 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/publish.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/publish.js +108 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/subscribe.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/subscribe.js +154 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/utils.d.ts +11 -0
- package/dist/codegen/generators/typescript/channels/protocols/kafka/utils.js +58 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/index.d.ts +6 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/index.js +113 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/publish.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/publish.js +99 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/subscribe.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/mqtt/subscribe.js +186 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/corePublish.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/corePublish.js +90 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreReply.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreReply.js +142 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreRequest.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreRequest.js +100 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreSubscribe.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/coreSubscribe.js +143 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/index.d.ts +11 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/index.js +224 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPublish.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPublish.js +89 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPullSubscribe.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPullSubscribe.js +146 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPushSubscription.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/jetstreamPushSubscription.js +149 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/utils.d.ts +35 -0
- package/dist/codegen/generators/typescript/channels/protocols/nats/utils.js +120 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/index.d.ts +7 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/index.js +152 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/publish.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/publish.js +64 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/register.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/register.js +115 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/subscribe.d.ts +3 -0
- package/dist/codegen/generators/typescript/channels/protocols/websocket/subscribe.js +151 -0
- package/dist/codegen/generators/typescript/channels/types.d.ts +181 -0
- package/dist/codegen/generators/typescript/channels/types.js +131 -0
- package/dist/codegen/generators/typescript/channels/utils.d.ts +64 -0
- package/dist/codegen/generators/typescript/channels/utils.js +163 -0
- package/dist/codegen/generators/typescript/client/index.d.ts +8 -0
- package/dist/codegen/generators/typescript/client/index.js +61 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/corePublish.d.ts +6 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/corePublish.js +53 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/coreSubscribe.d.ts +6 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/coreSubscribe.js +90 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetStreamPullSubscription.d.ts +6 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetStreamPullSubscription.js +83 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPublish.d.ts +6 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPublish.js +54 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPushSubscription.d.ts +6 -0
- package/dist/codegen/generators/typescript/client/protocols/nats/jetstreamPushSubscription.js +82 -0
- package/dist/codegen/generators/typescript/client/protocols/nats.d.ts +2 -0
- package/dist/codegen/generators/typescript/client/protocols/nats.js +182 -0
- package/dist/codegen/generators/typescript/client/types.d.ts +49 -0
- package/dist/codegen/generators/typescript/client/types.js +37 -0
- package/dist/codegen/generators/typescript/headers.d.ts +54 -0
- package/dist/codegen/generators/typescript/headers.js +138 -0
- package/dist/codegen/generators/typescript/index.d.ts +7 -0
- package/dist/codegen/generators/typescript/index.js +38 -0
- package/dist/codegen/generators/typescript/models.d.ts +21761 -0
- package/dist/codegen/generators/typescript/models.js +64 -0
- package/dist/codegen/generators/typescript/parameters.d.ts +37 -0
- package/dist/codegen/generators/typescript/parameters.js +101 -0
- package/dist/codegen/generators/typescript/payloads.d.ts +73 -0
- package/dist/codegen/generators/typescript/payloads.js +250 -0
- package/dist/codegen/generators/typescript/types.d.ts +34 -0
- package/dist/codegen/generators/typescript/types.js +70 -0
- package/dist/codegen/generators/typescript/utils.d.ts +38 -0
- package/dist/codegen/generators/typescript/utils.js +195 -0
- package/dist/codegen/index.d.ts +7 -0
- package/dist/codegen/index.js +38 -0
- package/dist/codegen/inputs/asyncapi/generators/headers.d.ts +3 -0
- package/dist/codegen/inputs/asyncapi/generators/headers.js +41 -0
- package/dist/codegen/inputs/asyncapi/generators/parameters.d.ts +14 -0
- package/dist/codegen/inputs/asyncapi/generators/parameters.js +120 -0
- package/dist/codegen/inputs/asyncapi/generators/payloads.d.ts +16 -0
- package/dist/codegen/inputs/asyncapi/generators/payloads.js +124 -0
- package/dist/codegen/inputs/asyncapi/generators/types.d.ts +9 -0
- package/dist/codegen/inputs/asyncapi/generators/types.js +61 -0
- package/dist/codegen/inputs/asyncapi/index.d.ts +1 -0
- package/dist/codegen/inputs/asyncapi/index.js +7 -0
- package/dist/codegen/inputs/asyncapi/parser.d.ts +4 -0
- package/dist/codegen/inputs/asyncapi/parser.js +90 -0
- package/dist/codegen/inputs/index.d.ts +3 -0
- package/dist/codegen/inputs/index.js +19 -0
- package/dist/codegen/inputs/jsonschema/generators/index.d.ts +1 -0
- package/dist/codegen/inputs/jsonschema/generators/index.js +5 -0
- package/dist/codegen/inputs/jsonschema/generators/models.d.ts +7 -0
- package/dist/codegen/inputs/jsonschema/generators/models.js +26 -0
- package/dist/codegen/inputs/jsonschema/index.d.ts +1 -0
- package/dist/codegen/inputs/jsonschema/index.js +7 -0
- package/dist/codegen/inputs/jsonschema/parser.d.ts +31 -0
- package/dist/codegen/inputs/jsonschema/parser.js +128 -0
- package/dist/codegen/inputs/openapi/generators/headers.d.ts +3 -0
- package/dist/codegen/inputs/openapi/generators/headers.js +101 -0
- package/dist/codegen/inputs/openapi/generators/parameters.d.ts +10 -0
- package/dist/codegen/inputs/openapi/generators/parameters.js +852 -0
- package/dist/codegen/inputs/openapi/generators/payloads.d.ts +3 -0
- package/dist/codegen/inputs/openapi/generators/payloads.js +231 -0
- package/dist/codegen/inputs/openapi/generators/types.d.ts +9 -0
- package/dist/codegen/inputs/openapi/generators/types.js +86 -0
- package/dist/codegen/inputs/openapi/index.d.ts +2 -0
- package/dist/codegen/inputs/openapi/index.js +8 -0
- package/dist/codegen/inputs/openapi/parser.d.ts +4 -0
- package/dist/codegen/inputs/openapi/parser.js +115 -0
- package/dist/codegen/inputs/openapi/security.d.ts +56 -0
- package/dist/codegen/inputs/openapi/security.js +193 -0
- package/dist/codegen/modelina/index.d.ts +2 -0
- package/dist/codegen/modelina/index.js +20 -0
- package/dist/codegen/modelina/presets/index.d.ts +3 -0
- package/dist/codegen/modelina/presets/index.js +14 -0
- package/dist/codegen/modelina/presets/primitives.d.ts +34 -0
- package/dist/codegen/modelina/presets/primitives.js +211 -0
- package/dist/codegen/modelina/presets/union.d.ts +33 -0
- package/dist/codegen/modelina/presets/union.js +197 -0
- package/dist/codegen/modelina/presets/validation.d.ts +66 -0
- package/dist/codegen/modelina/presets/validation.js +183 -0
- package/dist/codegen/modelina/types.d.ts +61845 -0
- package/dist/codegen/modelina/types.js +412 -0
- package/dist/codegen/output/filesystem.d.ts +30 -0
- package/dist/codegen/output/filesystem.js +61 -0
- package/dist/codegen/output/index.d.ts +16 -0
- package/dist/codegen/output/index.js +57 -0
- package/dist/codegen/output/memory.d.ts +54 -0
- package/dist/codegen/output/memory.js +81 -0
- package/dist/codegen/output/modelina.d.ts +30 -0
- package/dist/codegen/output/modelina.js +30 -0
- package/dist/codegen/output/types.d.ts +47 -0
- package/dist/codegen/output/types.js +6 -0
- package/dist/codegen/renderer.d.ts +13 -0
- package/dist/codegen/renderer.js +309 -0
- package/dist/codegen/schemaPostProcess.d.ts +25 -0
- package/dist/codegen/schemaPostProcess.js +38 -0
- package/dist/codegen/types.d.ts +285187 -0
- package/dist/codegen/types.js +177 -0
- package/dist/codegen/utils.d.ts +126 -0
- package/dist/codegen/utils.js +373 -0
- package/dist/commands/base.d.ts +18 -0
- package/dist/commands/base.js +59 -0
- package/dist/commands/generate.d.ts +46 -0
- package/dist/commands/generate.js +305 -0
- package/dist/commands/init.d.ts +55 -0
- package/dist/commands/init.js +544 -0
- package/dist/commands/telemetry.d.ts +25 -0
- package/dist/commands/telemetry.js +115 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.js +35 -0
- package/dist/telemetry/anonymize.d.ts +19 -0
- package/dist/telemetry/anonymize.js +73 -0
- package/dist/telemetry/collector.d.ts +26 -0
- package/dist/telemetry/collector.js +57 -0
- package/dist/telemetry/config.d.ts +32 -0
- package/dist/telemetry/config.js +97 -0
- package/dist/telemetry/events.d.ts +72 -0
- package/dist/telemetry/events.js +5 -0
- package/dist/telemetry/index.d.ts +46 -0
- package/dist/telemetry/index.js +91 -0
- package/dist/telemetry/notice.d.ts +8 -0
- package/dist/telemetry/notice.js +50 -0
- package/dist/telemetry/sender.d.ts +14 -0
- package/dist/telemetry/sender.js +125 -0
- package/dist/utils/gitignore.d.ts +66 -0
- package/dist/utils/gitignore.js +111 -0
- package/dist/utils/inputSource.d.ts +3 -0
- package/dist/utils/inputSource.js +26 -0
- package/dist/utils/refResolvers.d.ts +29 -0
- package/dist/utils/refResolvers.js +83 -0
- package/dist/utils/remoteFetch.d.ts +18 -0
- package/dist/utils/remoteFetch.js +64 -0
- package/oclif.manifest.json +510 -0
- 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,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,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,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,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,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;
|