@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,38 @@
|
|
|
1
|
+
import { ConstrainedObjectModel, typeScriptDefaultPropertyKeyConstraints, TypeScriptOptions } from '@asyncapi/modelina';
|
|
2
|
+
import { DeepPartial } from '../../utils';
|
|
3
|
+
/**
|
|
4
|
+
* Cast JSON schema variable to typescript type
|
|
5
|
+
*
|
|
6
|
+
* @param {string} jsonSchemaType
|
|
7
|
+
* @param {string} variableToCast
|
|
8
|
+
*/
|
|
9
|
+
export declare function castToTsType(jsonSchemaType: string, variableToCast: string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Realize parameters without using types and without trailing comma
|
|
12
|
+
*
|
|
13
|
+
* @param {Object.<string, ChannelParameter>} parameters
|
|
14
|
+
* @returns
|
|
15
|
+
*/
|
|
16
|
+
export declare function realizeParametersForChannelWithoutType(parameters: ConstrainedObjectModel): string;
|
|
17
|
+
/**
|
|
18
|
+
* Realize parameters using types without trailing comma
|
|
19
|
+
* @param {Object.<string, ChannelParameter>} channelParameters parameters to realize
|
|
20
|
+
* @param {boolean} required optional or required
|
|
21
|
+
*/
|
|
22
|
+
export declare function realizeParametersForChannel(channelParameters: ConstrainedObjectModel, required?: boolean): string;
|
|
23
|
+
/**
|
|
24
|
+
* Convert RFC 6570 URI with parameters to NATS topic.
|
|
25
|
+
*/
|
|
26
|
+
export declare function realizeChannelName(channelName: string, parameters?: ConstrainedObjectModel): string;
|
|
27
|
+
/**
|
|
28
|
+
* Realize channel name to NATS topic without replacing parameters
|
|
29
|
+
*
|
|
30
|
+
* @param {string} channelName
|
|
31
|
+
*/
|
|
32
|
+
export declare function realizeChannelNameWithoutParameters(channelName: string): string;
|
|
33
|
+
export declare function camelCase(value: string): string;
|
|
34
|
+
export declare function pascalCase(value: string): string;
|
|
35
|
+
export declare function findRegexFromChannel(channel: string): string;
|
|
36
|
+
export declare const RESERVED_TYPESCRIPT_KEYWORDS: string[];
|
|
37
|
+
export declare const defaultCodegenTypescriptModelinaOptions: DeepPartial<TypeScriptOptions>;
|
|
38
|
+
export { typeScriptDefaultPropertyKeyConstraints };
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.typeScriptDefaultPropertyKeyConstraints = exports.defaultCodegenTypescriptModelinaOptions = exports.RESERVED_TYPESCRIPT_KEYWORDS = exports.findRegexFromChannel = exports.pascalCase = exports.camelCase = exports.realizeChannelNameWithoutParameters = exports.realizeChannelName = exports.realizeParametersForChannel = exports.realizeParametersForChannelWithoutType = exports.castToTsType = void 0;
|
|
4
|
+
const modelina_1 = require("@asyncapi/modelina");
|
|
5
|
+
Object.defineProperty(exports, "typeScriptDefaultPropertyKeyConstraints", { enumerable: true, get: function () { return modelina_1.typeScriptDefaultPropertyKeyConstraints; } });
|
|
6
|
+
/**
|
|
7
|
+
* Cast JSON schema variable to typescript type
|
|
8
|
+
*
|
|
9
|
+
* @param {string} jsonSchemaType
|
|
10
|
+
* @param {string} variableToCast
|
|
11
|
+
*/
|
|
12
|
+
function castToTsType(jsonSchemaType, variableToCast) {
|
|
13
|
+
switch (jsonSchemaType.toLowerCase()) {
|
|
14
|
+
case 'string': {
|
|
15
|
+
return `"" + ${variableToCast}`;
|
|
16
|
+
}
|
|
17
|
+
case 'integer':
|
|
18
|
+
case 'number': {
|
|
19
|
+
return `Number(${variableToCast})`;
|
|
20
|
+
}
|
|
21
|
+
case 'boolean': {
|
|
22
|
+
return `Boolean(${variableToCast})`;
|
|
23
|
+
}
|
|
24
|
+
default: {
|
|
25
|
+
throw new Error(`Parameter type not supported - ${jsonSchemaType}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.castToTsType = castToTsType;
|
|
30
|
+
/**
|
|
31
|
+
* Realize parameters without using types and without trailing comma
|
|
32
|
+
*
|
|
33
|
+
* @param {Object.<string, ChannelParameter>} parameters
|
|
34
|
+
* @returns
|
|
35
|
+
*/
|
|
36
|
+
function realizeParametersForChannelWithoutType(parameters) {
|
|
37
|
+
let returnString = '';
|
|
38
|
+
for (const paramName in Object.keys(parameters.properties)) {
|
|
39
|
+
returnString += `${paramName},`;
|
|
40
|
+
}
|
|
41
|
+
if (returnString.length > 0) {
|
|
42
|
+
returnString = returnString.slice(0, -1);
|
|
43
|
+
}
|
|
44
|
+
return returnString;
|
|
45
|
+
}
|
|
46
|
+
exports.realizeParametersForChannelWithoutType = realizeParametersForChannelWithoutType;
|
|
47
|
+
/**
|
|
48
|
+
* Realize parameters using types without trailing comma
|
|
49
|
+
* @param {Object.<string, ChannelParameter>} channelParameters parameters to realize
|
|
50
|
+
* @param {boolean} required optional or required
|
|
51
|
+
*/
|
|
52
|
+
function realizeParametersForChannel(channelParameters, required = true) {
|
|
53
|
+
let returnString = '';
|
|
54
|
+
for (const parameter of Object.values(channelParameters.properties)) {
|
|
55
|
+
returnString += `${realizeParameterForChannelWithType(parameter.propertyName, parameter.property.type, required)},`;
|
|
56
|
+
}
|
|
57
|
+
if (returnString.length > 0) {
|
|
58
|
+
returnString = returnString.slice(0, -1);
|
|
59
|
+
}
|
|
60
|
+
return returnString;
|
|
61
|
+
}
|
|
62
|
+
exports.realizeParametersForChannel = realizeParametersForChannel;
|
|
63
|
+
/**
|
|
64
|
+
* Realize a single parameter with its type
|
|
65
|
+
*
|
|
66
|
+
* @param {string} parameterName parameter name to use as
|
|
67
|
+
* @param {ChannelParameter} parameter which contains the schema
|
|
68
|
+
* @param {boolean} required should it be optional or required
|
|
69
|
+
*/
|
|
70
|
+
function realizeParameterForChannelWithType(parameterName, parameterType, required = true) {
|
|
71
|
+
const requiredType = required ? '' : '?';
|
|
72
|
+
return `${parameterName}${requiredType}: ${parameterType})}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Convert RFC 6570 URI with parameters to NATS topic.
|
|
76
|
+
*/
|
|
77
|
+
function realizeChannelName(channelName, parameters) {
|
|
78
|
+
let returnString = `\`${channelName}\``;
|
|
79
|
+
returnString = returnString.replace(/\//g, '.');
|
|
80
|
+
for (const paramName in parameters) {
|
|
81
|
+
returnString = returnString.replace(`{${paramName}}`, `\${${paramName}}`);
|
|
82
|
+
}
|
|
83
|
+
return returnString;
|
|
84
|
+
}
|
|
85
|
+
exports.realizeChannelName = realizeChannelName;
|
|
86
|
+
/**
|
|
87
|
+
* Realize channel name to NATS topic without replacing parameters
|
|
88
|
+
*
|
|
89
|
+
* @param {string} channelName
|
|
90
|
+
*/
|
|
91
|
+
function realizeChannelNameWithoutParameters(channelName) {
|
|
92
|
+
return realizeChannelName(channelName);
|
|
93
|
+
}
|
|
94
|
+
exports.realizeChannelNameWithoutParameters = realizeChannelNameWithoutParameters;
|
|
95
|
+
function camelCase(value) {
|
|
96
|
+
return modelina_1.FormatHelpers.toCamelCase(value);
|
|
97
|
+
}
|
|
98
|
+
exports.camelCase = camelCase;
|
|
99
|
+
function pascalCase(value) {
|
|
100
|
+
return modelina_1.FormatHelpers.toPascalCase(value);
|
|
101
|
+
}
|
|
102
|
+
exports.pascalCase = pascalCase;
|
|
103
|
+
function findRegexFromChannel(channel) {
|
|
104
|
+
let topicWithWildcardGroup = channel.replace(/\//g, '\\/');
|
|
105
|
+
topicWithWildcardGroup = topicWithWildcardGroup.replace(/{[^}]+}/g, '([^.]*)');
|
|
106
|
+
return `/^${topicWithWildcardGroup}$/`;
|
|
107
|
+
}
|
|
108
|
+
exports.findRegexFromChannel = findRegexFromChannel;
|
|
109
|
+
exports.RESERVED_TYPESCRIPT_KEYWORDS = [
|
|
110
|
+
'break',
|
|
111
|
+
'case',
|
|
112
|
+
'catch',
|
|
113
|
+
'class',
|
|
114
|
+
'const',
|
|
115
|
+
'continue',
|
|
116
|
+
'debugger',
|
|
117
|
+
'default',
|
|
118
|
+
'delete',
|
|
119
|
+
'do',
|
|
120
|
+
'else',
|
|
121
|
+
'enum',
|
|
122
|
+
'export',
|
|
123
|
+
'extends',
|
|
124
|
+
'false',
|
|
125
|
+
'finally',
|
|
126
|
+
'for',
|
|
127
|
+
'function',
|
|
128
|
+
'if',
|
|
129
|
+
'import',
|
|
130
|
+
'in',
|
|
131
|
+
'instanceof',
|
|
132
|
+
'new',
|
|
133
|
+
'null',
|
|
134
|
+
'return',
|
|
135
|
+
'super',
|
|
136
|
+
'switch',
|
|
137
|
+
'this',
|
|
138
|
+
'throw',
|
|
139
|
+
'true',
|
|
140
|
+
'try',
|
|
141
|
+
'typeof',
|
|
142
|
+
'var',
|
|
143
|
+
'void',
|
|
144
|
+
'while',
|
|
145
|
+
'with',
|
|
146
|
+
'any',
|
|
147
|
+
'boolean',
|
|
148
|
+
'constructor',
|
|
149
|
+
'declare',
|
|
150
|
+
'get',
|
|
151
|
+
'module',
|
|
152
|
+
'require',
|
|
153
|
+
'number',
|
|
154
|
+
'set',
|
|
155
|
+
'string',
|
|
156
|
+
'symbol',
|
|
157
|
+
'type',
|
|
158
|
+
'from',
|
|
159
|
+
'of',
|
|
160
|
+
// Strict mode reserved words
|
|
161
|
+
'arguments',
|
|
162
|
+
'as',
|
|
163
|
+
'implements',
|
|
164
|
+
'interface',
|
|
165
|
+
'let',
|
|
166
|
+
'package',
|
|
167
|
+
'private',
|
|
168
|
+
'protected',
|
|
169
|
+
'public',
|
|
170
|
+
'static',
|
|
171
|
+
'yield'
|
|
172
|
+
];
|
|
173
|
+
exports.defaultCodegenTypescriptModelinaOptions = {
|
|
174
|
+
constraints: {
|
|
175
|
+
modelName: (0, modelina_1.typeScriptDefaultModelNameConstraints)({
|
|
176
|
+
NO_RESERVED_KEYWORDS: (name) => {
|
|
177
|
+
// Since all names are pascal we can ignore reserved keywords.
|
|
178
|
+
return name;
|
|
179
|
+
},
|
|
180
|
+
NO_SPECIAL_CHAR: (name) => {
|
|
181
|
+
// Looks nicer with no special cases at all
|
|
182
|
+
return name.replace(/\W/g, ' ');
|
|
183
|
+
}
|
|
184
|
+
}),
|
|
185
|
+
propertyKey: (0, modelina_1.typeScriptDefaultPropertyKeyConstraints)({
|
|
186
|
+
NO_RESERVED_KEYWORDS: (value) => {
|
|
187
|
+
return (0, modelina_1.NO_RESERVED_KEYWORDS)(value, (word) =>
|
|
188
|
+
// Filter out all the keywords that does not ruin the code
|
|
189
|
+
(0, modelina_1.checkForReservedKeyword)(word, exports.RESERVED_TYPESCRIPT_KEYWORDS.filter((filteredValue) => {
|
|
190
|
+
return filteredValue !== 'type';
|
|
191
|
+
}), true));
|
|
192
|
+
}
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { loadAsyncapi } from './inputs/asyncapi';
|
|
2
|
+
export { loadOpenapi } from './inputs/openapi';
|
|
3
|
+
export { loadJsonSchema } from './inputs/jsonschema';
|
|
4
|
+
export { defaultTypeScriptChannelsGenerator, defaultTypeScriptParametersOptions, defaultTypeScriptPayloadGenerator, defaultTypeScriptClientGenerator, defaultCustomGenerator, defaultTypeScriptHeadersOptions, TypeScriptClientGenerator, TypeScriptChannelsGenerator, TypeScriptPayloadGenerator, TypescriptParametersGenerator, TypescriptHeadersGenerator, generateTypeScriptChannels, generateTypescriptParameters, generateTypescriptPayload, generateTypeScriptClient, generateTypescriptHeaders, runGenerators, CustomGenerator, ChannelFunctionTypes } from './generators';
|
|
5
|
+
export { RunGeneratorContext, SupportedLanguages, PresetTypes, TheCodegenConfiguration, TheCodegenConfigurationInternal, zodAsyncAPICodegenConfiguration, zodAsyncAPIGenerators, zodAsyncAPITypeScriptGenerators, zodTheCodegenConfiguration, Generators, GenericCodegenContext, LoadArgument, ParameterRenderType, PayloadRenderType, SingleFunctionRenderType, ChannelPayload, GeneratorsInternal, HeadersRenderType, GenerationResult, GeneratorResult } from './types';
|
|
6
|
+
export { getDefaultConfiguration, realizeConfiguration, loadAndRealizeConfigFile, loadConfigFile, realizeGeneratorContext } from './configurations';
|
|
7
|
+
export { renderGenerator, determineRenderGraph, renderGraph } from './renderer';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderGraph = exports.determineRenderGraph = exports.renderGenerator = exports.realizeGeneratorContext = exports.loadConfigFile = exports.loadAndRealizeConfigFile = exports.realizeConfiguration = exports.getDefaultConfiguration = exports.zodTheCodegenConfiguration = exports.zodAsyncAPITypeScriptGenerators = exports.zodAsyncAPIGenerators = exports.zodAsyncAPICodegenConfiguration = exports.ChannelFunctionTypes = exports.runGenerators = exports.generateTypescriptHeaders = exports.generateTypeScriptClient = exports.generateTypescriptPayload = exports.generateTypescriptParameters = exports.generateTypeScriptChannels = exports.defaultTypeScriptHeadersOptions = exports.defaultCustomGenerator = exports.defaultTypeScriptClientGenerator = exports.defaultTypeScriptPayloadGenerator = exports.defaultTypeScriptParametersOptions = exports.defaultTypeScriptChannelsGenerator = exports.loadJsonSchema = exports.loadOpenapi = exports.loadAsyncapi = void 0;
|
|
4
|
+
var asyncapi_1 = require("./inputs/asyncapi");
|
|
5
|
+
Object.defineProperty(exports, "loadAsyncapi", { enumerable: true, get: function () { return asyncapi_1.loadAsyncapi; } });
|
|
6
|
+
var openapi_1 = require("./inputs/openapi");
|
|
7
|
+
Object.defineProperty(exports, "loadOpenapi", { enumerable: true, get: function () { return openapi_1.loadOpenapi; } });
|
|
8
|
+
var jsonschema_1 = require("./inputs/jsonschema");
|
|
9
|
+
Object.defineProperty(exports, "loadJsonSchema", { enumerable: true, get: function () { return jsonschema_1.loadJsonSchema; } });
|
|
10
|
+
var generators_1 = require("./generators");
|
|
11
|
+
Object.defineProperty(exports, "defaultTypeScriptChannelsGenerator", { enumerable: true, get: function () { return generators_1.defaultTypeScriptChannelsGenerator; } });
|
|
12
|
+
Object.defineProperty(exports, "defaultTypeScriptParametersOptions", { enumerable: true, get: function () { return generators_1.defaultTypeScriptParametersOptions; } });
|
|
13
|
+
Object.defineProperty(exports, "defaultTypeScriptPayloadGenerator", { enumerable: true, get: function () { return generators_1.defaultTypeScriptPayloadGenerator; } });
|
|
14
|
+
Object.defineProperty(exports, "defaultTypeScriptClientGenerator", { enumerable: true, get: function () { return generators_1.defaultTypeScriptClientGenerator; } });
|
|
15
|
+
Object.defineProperty(exports, "defaultCustomGenerator", { enumerable: true, get: function () { return generators_1.defaultCustomGenerator; } });
|
|
16
|
+
Object.defineProperty(exports, "defaultTypeScriptHeadersOptions", { enumerable: true, get: function () { return generators_1.defaultTypeScriptHeadersOptions; } });
|
|
17
|
+
Object.defineProperty(exports, "generateTypeScriptChannels", { enumerable: true, get: function () { return generators_1.generateTypeScriptChannels; } });
|
|
18
|
+
Object.defineProperty(exports, "generateTypescriptParameters", { enumerable: true, get: function () { return generators_1.generateTypescriptParameters; } });
|
|
19
|
+
Object.defineProperty(exports, "generateTypescriptPayload", { enumerable: true, get: function () { return generators_1.generateTypescriptPayload; } });
|
|
20
|
+
Object.defineProperty(exports, "generateTypeScriptClient", { enumerable: true, get: function () { return generators_1.generateTypeScriptClient; } });
|
|
21
|
+
Object.defineProperty(exports, "generateTypescriptHeaders", { enumerable: true, get: function () { return generators_1.generateTypescriptHeaders; } });
|
|
22
|
+
Object.defineProperty(exports, "runGenerators", { enumerable: true, get: function () { return generators_1.runGenerators; } });
|
|
23
|
+
Object.defineProperty(exports, "ChannelFunctionTypes", { enumerable: true, get: function () { return generators_1.ChannelFunctionTypes; } });
|
|
24
|
+
var types_1 = require("./types");
|
|
25
|
+
Object.defineProperty(exports, "zodAsyncAPICodegenConfiguration", { enumerable: true, get: function () { return types_1.zodAsyncAPICodegenConfiguration; } });
|
|
26
|
+
Object.defineProperty(exports, "zodAsyncAPIGenerators", { enumerable: true, get: function () { return types_1.zodAsyncAPIGenerators; } });
|
|
27
|
+
Object.defineProperty(exports, "zodAsyncAPITypeScriptGenerators", { enumerable: true, get: function () { return types_1.zodAsyncAPITypeScriptGenerators; } });
|
|
28
|
+
Object.defineProperty(exports, "zodTheCodegenConfiguration", { enumerable: true, get: function () { return types_1.zodTheCodegenConfiguration; } });
|
|
29
|
+
var configurations_1 = require("./configurations");
|
|
30
|
+
Object.defineProperty(exports, "getDefaultConfiguration", { enumerable: true, get: function () { return configurations_1.getDefaultConfiguration; } });
|
|
31
|
+
Object.defineProperty(exports, "realizeConfiguration", { enumerable: true, get: function () { return configurations_1.realizeConfiguration; } });
|
|
32
|
+
Object.defineProperty(exports, "loadAndRealizeConfigFile", { enumerable: true, get: function () { return configurations_1.loadAndRealizeConfigFile; } });
|
|
33
|
+
Object.defineProperty(exports, "loadConfigFile", { enumerable: true, get: function () { return configurations_1.loadConfigFile; } });
|
|
34
|
+
Object.defineProperty(exports, "realizeGeneratorContext", { enumerable: true, get: function () { return configurations_1.realizeGeneratorContext; } });
|
|
35
|
+
var renderer_1 = require("./renderer");
|
|
36
|
+
Object.defineProperty(exports, "renderGenerator", { enumerable: true, get: function () { return renderer_1.renderGenerator; } });
|
|
37
|
+
Object.defineProperty(exports, "determineRenderGraph", { enumerable: true, get: function () { return renderer_1.determineRenderGraph; } });
|
|
38
|
+
Object.defineProperty(exports, "renderGraph", { enumerable: true, get: function () { return renderer_1.renderGraph; } });
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processAsyncAPIHeaders = void 0;
|
|
4
|
+
const utils_1 = require("../../../generators/typescript/utils");
|
|
5
|
+
const modelina_1 = require("@asyncapi/modelina");
|
|
6
|
+
// AsyncAPI input processor
|
|
7
|
+
function processAsyncAPIHeaders(asyncapiDocument) {
|
|
8
|
+
const channelHeaders = {};
|
|
9
|
+
for (const channel of asyncapiDocument.allChannels().all()) {
|
|
10
|
+
const messages = channel.messages().all();
|
|
11
|
+
let hasHeadersInChannel = false;
|
|
12
|
+
for (const message of messages) {
|
|
13
|
+
if (message.hasHeaders()) {
|
|
14
|
+
let schemaObj;
|
|
15
|
+
const schema = modelina_1.AsyncAPIInputProcessor.convertToInternalSchema(message.headers());
|
|
16
|
+
if (typeof schema === 'boolean') {
|
|
17
|
+
schemaObj = schema;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
schemaObj = {
|
|
21
|
+
type: 'object',
|
|
22
|
+
...schema,
|
|
23
|
+
$id: (0, utils_1.pascalCase)(`${message.id()}_headers`),
|
|
24
|
+
$schema: 'http://json-schema.org/draft-07/schema'
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
channelHeaders[channel.id()] = {
|
|
28
|
+
schema: schemaObj,
|
|
29
|
+
schemaId: (0, utils_1.pascalCase)(`${message.id()}_headers`)
|
|
30
|
+
};
|
|
31
|
+
hasHeadersInChannel = true;
|
|
32
|
+
break; // Use first message with headers for the channel
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!hasHeadersInChannel) {
|
|
36
|
+
channelHeaders[channel.id()] = undefined;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return { channelHeaders };
|
|
40
|
+
}
|
|
41
|
+
exports.processAsyncAPIHeaders = processAsyncAPIHeaders;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
|
|
2
|
+
import { ConstrainedObjectModel, TypeScriptFileGenerator } from '@asyncapi/modelina';
|
|
3
|
+
export interface ProcessedParameterSchemaData {
|
|
4
|
+
channelParameters: Record<string, {
|
|
5
|
+
schema: any;
|
|
6
|
+
schemaId: string;
|
|
7
|
+
}>;
|
|
8
|
+
}
|
|
9
|
+
export declare function processAsyncAPIParameters(asyncapiDocument: AsyncAPIDocumentInterface): Promise<ProcessedParameterSchemaData>;
|
|
10
|
+
/**
|
|
11
|
+
* Component which contains the parameter unwrapping functionality.
|
|
12
|
+
*/
|
|
13
|
+
export declare function unwrap(channelParameters: ConstrainedObjectModel): string;
|
|
14
|
+
export declare function createAsyncAPIGenerator(): TypeScriptFileGenerator;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAsyncAPIGenerator = exports.unwrap = exports.processAsyncAPIParameters = void 0;
|
|
4
|
+
const utils_1 = require("../../../generators/typescript/utils");
|
|
5
|
+
const utils_2 = require("../../../utils");
|
|
6
|
+
const modelina_1 = require("@asyncapi/modelina");
|
|
7
|
+
// AsyncAPI parameter processor
|
|
8
|
+
async function processAsyncAPIParameters(asyncapiDocument) {
|
|
9
|
+
const channelParameters = {};
|
|
10
|
+
for (const channel of asyncapiDocument.allChannels().all()) {
|
|
11
|
+
const parameters = channel.parameters().all();
|
|
12
|
+
if (parameters.length > 0) {
|
|
13
|
+
const channelName = (0, utils_2.findNameFromChannel)(channel);
|
|
14
|
+
const schemaId = (0, utils_1.pascalCase)(`${channelName}_parameters`);
|
|
15
|
+
const schemaObj = {
|
|
16
|
+
type: 'object',
|
|
17
|
+
$id: schemaId,
|
|
18
|
+
$schema: 'http://json-schema.org/draft-07/schema',
|
|
19
|
+
required: [],
|
|
20
|
+
properties: {},
|
|
21
|
+
additionalProperties: false,
|
|
22
|
+
'x-channel-address': channel.address()
|
|
23
|
+
};
|
|
24
|
+
for (const parameter of parameters) {
|
|
25
|
+
schemaObj.properties[parameter.id()] = parameter.schema()?.json();
|
|
26
|
+
schemaObj.required.push(parameter.id());
|
|
27
|
+
}
|
|
28
|
+
channelParameters[channel.id()] = {
|
|
29
|
+
schema: schemaObj,
|
|
30
|
+
schemaId
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
channelParameters
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
exports.processAsyncAPIParameters = processAsyncAPIParameters;
|
|
39
|
+
/**
|
|
40
|
+
* Component which contains the parameter unwrapping functionality.
|
|
41
|
+
*/
|
|
42
|
+
function unwrap(channelParameters) {
|
|
43
|
+
// Nothing to unwrap if no parameters are used
|
|
44
|
+
if (Object.keys(channelParameters.properties).length === 0) {
|
|
45
|
+
return '';
|
|
46
|
+
}
|
|
47
|
+
// Use channel to iterate over matches as channelParameters.properties might be in incorrect order.
|
|
48
|
+
const parameterReplacement = Object.values(channelParameters.properties).map((parameter) => {
|
|
49
|
+
const variableName = `${parameter.propertyName}Match`;
|
|
50
|
+
return `const ${variableName} = match[sequentialParameters.indexOf('{${parameter.unconstrainedPropertyName}}')+1];
|
|
51
|
+
if(${variableName} && ${variableName} !== '') {
|
|
52
|
+
parameters.${parameter.propertyName} = ${variableName} as any
|
|
53
|
+
} else {
|
|
54
|
+
throw new Error(\`Parameter: '${parameter.propertyName}' is not valid in ${channelParameters.name}. Aborting parameter extracting! \`)
|
|
55
|
+
}`;
|
|
56
|
+
});
|
|
57
|
+
const parameterInitializer = Object.values(channelParameters.properties)
|
|
58
|
+
.filter((parameter) => parameter.property.options.const?.value === undefined)
|
|
59
|
+
.map((parameter) => {
|
|
60
|
+
if (parameter.property.options.isNullable) {
|
|
61
|
+
return `${parameter.propertyName}: null`;
|
|
62
|
+
}
|
|
63
|
+
const property = parameter.property;
|
|
64
|
+
if (property instanceof modelina_1.ConstrainedReferenceModel &&
|
|
65
|
+
property.ref instanceof modelina_1.ConstrainedEnumModel) {
|
|
66
|
+
return `${parameter.propertyName}: ${property.ref.values[0].value}`;
|
|
67
|
+
}
|
|
68
|
+
return `${parameter.propertyName}: ''`;
|
|
69
|
+
});
|
|
70
|
+
return `const parameters = new ${channelParameters.name}({${parameterInitializer.join(', ')}});
|
|
71
|
+
const match = msgSubject.match(regex);
|
|
72
|
+
const sequentialParameters: string[] = channel.match(/\\{(\\w+)\\}/g) || [];
|
|
73
|
+
|
|
74
|
+
if (match) {
|
|
75
|
+
${parameterReplacement.join('\n')}
|
|
76
|
+
} else {
|
|
77
|
+
throw new Error(\`Unable to find parameters in channel/topic, topic was \${channel}\`)
|
|
78
|
+
}
|
|
79
|
+
return parameters;`;
|
|
80
|
+
}
|
|
81
|
+
exports.unwrap = unwrap;
|
|
82
|
+
/**
|
|
83
|
+
* Generate additional content for AsyncAPI channel parameter classes
|
|
84
|
+
*/
|
|
85
|
+
function generateAsyncAPIParameterMethods(model) {
|
|
86
|
+
const parameters = Object.entries(model.properties).map(([, parameter]) => {
|
|
87
|
+
return `channel = channel.replace(/\\{${parameter.unconstrainedPropertyName}\\}/g, this.${parameter.propertyName})`;
|
|
88
|
+
});
|
|
89
|
+
return `/**
|
|
90
|
+
* Realize the channel/topic with the parameters added to this class.
|
|
91
|
+
*/
|
|
92
|
+
public getChannelWithParameters(channel: string) {
|
|
93
|
+
${parameters.length > 0 ? parameters.join(';\n ') : '// No parameters to replace'};
|
|
94
|
+
return channel;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
public static createFromChannel(msgSubject: string, channel: string, regex: RegExp): ${model.type} {
|
|
98
|
+
${unwrap(model)}
|
|
99
|
+
}`;
|
|
100
|
+
}
|
|
101
|
+
function createAsyncAPIGenerator() {
|
|
102
|
+
return new modelina_1.TypeScriptFileGenerator({
|
|
103
|
+
...utils_1.defaultCodegenTypescriptModelinaOptions,
|
|
104
|
+
enumType: 'union',
|
|
105
|
+
useJavascriptReservedKeywords: false,
|
|
106
|
+
presets: [
|
|
107
|
+
modelina_1.TS_DESCRIPTION_PRESET,
|
|
108
|
+
{
|
|
109
|
+
class: {
|
|
110
|
+
additionalContent: ({ content, model }) => {
|
|
111
|
+
const additionalMethods = generateAsyncAPIParameterMethods(model);
|
|
112
|
+
return `${content}
|
|
113
|
+
${additionalMethods}`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
exports.createAsyncAPIGenerator = createAsyncAPIGenerator;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
|
|
2
|
+
export interface ProcessedPayloadSchemaData {
|
|
3
|
+
channelPayloads: Record<string, {
|
|
4
|
+
schema: any;
|
|
5
|
+
schemaId: string;
|
|
6
|
+
}>;
|
|
7
|
+
operationPayloads: Record<string, {
|
|
8
|
+
schema: any;
|
|
9
|
+
schemaId: string;
|
|
10
|
+
}>;
|
|
11
|
+
otherPayloads: {
|
|
12
|
+
schema: any;
|
|
13
|
+
schemaId: string;
|
|
14
|
+
}[];
|
|
15
|
+
}
|
|
16
|
+
export declare function processAsyncAPIPayloads(asyncapiDocument: AsyncAPIDocumentInterface): Promise<ProcessedPayloadSchemaData>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.processAsyncAPIPayloads = void 0;
|
|
4
|
+
/* eslint-disable security/detect-object-injection */
|
|
5
|
+
const modelina_1 = require("@asyncapi/modelina");
|
|
6
|
+
const utils_1 = require("../../../generators/typescript/utils");
|
|
7
|
+
const utils_2 = require("../../../utils");
|
|
8
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
9
|
+
async function processAsyncAPIPayloads(asyncapiDocument) {
|
|
10
|
+
const channelPayloads = {};
|
|
11
|
+
const operationPayloads = {};
|
|
12
|
+
const otherPayloads = [];
|
|
13
|
+
const allChannels = asyncapiDocument.allChannels().all();
|
|
14
|
+
const processMessages = (messagesToProcess, preId) => {
|
|
15
|
+
let schemaObj = {
|
|
16
|
+
type: 'object',
|
|
17
|
+
$schema: 'http://json-schema.org/draft-07/schema'
|
|
18
|
+
};
|
|
19
|
+
let id = preId;
|
|
20
|
+
const messages = messagesToProcess;
|
|
21
|
+
if (messages.length > 1) {
|
|
22
|
+
schemaObj.oneOf = [];
|
|
23
|
+
schemaObj['$id'] = (0, utils_1.pascalCase)(`${preId}_Payload`);
|
|
24
|
+
for (const message of messages) {
|
|
25
|
+
if (!message.hasPayload()) {
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
const schema = modelina_1.AsyncAPIInputProcessor.convertToInternalSchema(message.payload());
|
|
29
|
+
const payloadId = message.id() ?? message.name();
|
|
30
|
+
if (typeof schema === 'boolean') {
|
|
31
|
+
schemaObj.oneOf.push(schema);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const bindings = message.bindings();
|
|
35
|
+
const statusCodesBindings = bindings?.get('http');
|
|
36
|
+
const statusCodes = statusCodesBindings?.json()['statusCode'];
|
|
37
|
+
if (statusCodesBindings && statusCodes) {
|
|
38
|
+
schemaObj['x-modelina-has-status-codes'] = true;
|
|
39
|
+
schema['x-modelina-status-codes'] = statusCodes;
|
|
40
|
+
}
|
|
41
|
+
schemaObj.oneOf.push({
|
|
42
|
+
...schema,
|
|
43
|
+
$id: payloadId
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (messages.length === 1) {
|
|
49
|
+
const message = messages[0];
|
|
50
|
+
if (message.hasPayload()) {
|
|
51
|
+
const schema = modelina_1.AsyncAPIInputProcessor.convertToInternalSchema(message.payload());
|
|
52
|
+
if (typeof schema === 'boolean') {
|
|
53
|
+
schemaObj = schema;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
id =
|
|
57
|
+
message.id() ??
|
|
58
|
+
message.name() ??
|
|
59
|
+
schema['x-modelgen-inferred-name'];
|
|
60
|
+
if (id.includes('AnonymousSchema_')) {
|
|
61
|
+
id = (0, utils_1.pascalCase)(`${preId}_Payload`);
|
|
62
|
+
}
|
|
63
|
+
schemaObj = {
|
|
64
|
+
...schemaObj,
|
|
65
|
+
...schema,
|
|
66
|
+
$id: id
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
schema: schemaObj,
|
|
79
|
+
schemaId: id ?? schemaObj.$id ?? (0, utils_1.pascalCase)(`${preId}_Payload`)
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
if (asyncapiDocument.allChannels().all().length > 0) {
|
|
83
|
+
for (const channel of asyncapiDocument.allChannels().all()) {
|
|
84
|
+
// Process operations
|
|
85
|
+
for (const operation of channel.operations().all()) {
|
|
86
|
+
const operationMessages = operation.messages().all();
|
|
87
|
+
const operationReply = operation.reply();
|
|
88
|
+
if (operationReply) {
|
|
89
|
+
const operationReplyId = (0, utils_2.findReplyId)(operation, operationReply, channel);
|
|
90
|
+
const operationReplySchema = processMessages(operationReply.messages().all(), operationReplyId);
|
|
91
|
+
if (operationReplySchema) {
|
|
92
|
+
operationPayloads[operationReplyId] = operationReplySchema;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const operationId = (0, utils_2.findOperationId)(operation, channel);
|
|
96
|
+
const operationSchema = processMessages(operationMessages, operationId);
|
|
97
|
+
if (operationSchema) {
|
|
98
|
+
operationPayloads[operationId] = operationSchema;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Process channel messages
|
|
102
|
+
const channelSchema = processMessages(channel.messages().all(), (0, utils_2.findNameFromChannel)(channel));
|
|
103
|
+
if (channelSchema) {
|
|
104
|
+
channelPayloads[channel.id()] = channelSchema;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Handle case where there are no channels but there might be components
|
|
110
|
+
for (const message of asyncapiDocument.allMessages()) {
|
|
111
|
+
const schemaId = message.id() ?? message.name();
|
|
112
|
+
const schemaObj = processMessages([message], schemaId);
|
|
113
|
+
if (schemaObj) {
|
|
114
|
+
otherPayloads.push(schemaObj);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
channelPayloads,
|
|
120
|
+
operationPayloads,
|
|
121
|
+
otherPayloads: (0, utils_2.onlyUnique)(otherPayloads)
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
exports.processAsyncAPIPayloads = processAsyncAPIPayloads;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AsyncAPIDocumentInterface } from '@asyncapi/parser';
|
|
2
|
+
import { TypescriptTypesGeneratorInternal } from '../../../generators/typescript/types';
|
|
3
|
+
import { GeneratedFile } from '../../../types';
|
|
4
|
+
export interface TypesGeneratorResult {
|
|
5
|
+
result: string;
|
|
6
|
+
/** Generated files with path and content */
|
|
7
|
+
files: GeneratedFile[];
|
|
8
|
+
}
|
|
9
|
+
export declare function generateAsyncAPITypes(asyncapiDocument: AsyncAPIDocumentInterface, generator: TypescriptTypesGeneratorInternal): Promise<TypesGeneratorResult>;
|