@achinet/nestjs-async 0.0.1 → 0.1.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/CHANGELOG.md +13 -0
- package/dist/decorators/asyncapi-operation-for-meta-key.decorator.js +1 -2
- package/dist/decorators/asyncapi-operation-for-meta-key.decorator.js.map +1 -1
- package/dist/decorators/asyncapi-operation.decorator.js +1 -2
- package/dist/decorators/asyncapi-operation.decorator.js.map +1 -1
- package/dist/decorators/asyncapi-pub.decorator.js +1 -2
- package/dist/decorators/asyncapi-pub.decorator.js.map +1 -1
- package/dist/decorators/asyncapi-service.decorator.js +1 -2
- package/dist/decorators/asyncapi-service.decorator.js.map +1 -1
- package/dist/decorators/asyncapi-sub.decorator.js +1 -2
- package/dist/decorators/asyncapi-sub.decorator.js.map +1 -1
- package/dist/explorers/asyncapi-operation.explorer.d.ts +8 -8
- package/dist/sample/app.module.d.ts +2 -0
- package/dist/sample/app.module.js +20 -0
- package/dist/sample/app.module.js.map +1 -0
- package/dist/sample/common.d.ts +3 -0
- package/dist/sample/common.js +40 -0
- package/dist/sample/common.js.map +1 -0
- package/dist/sample/constants.d.ts +12 -0
- package/dist/sample/constants.js +16 -0
- package/dist/sample/constants.js.map +1 -0
- package/dist/sample/felines/class/cat.class.d.ts +4 -0
- package/dist/sample/felines/class/cat.class.js +24 -0
- package/dist/sample/felines/class/cat.class.js.map +1 -0
- package/dist/sample/felines/class/feline.class.d.ts +19 -0
- package/dist/sample/felines/class/feline.class.js +20 -0
- package/dist/sample/felines/class/feline.class.js.map +1 -0
- package/dist/sample/felines/class/index.d.ts +5 -0
- package/dist/sample/felines/class/index.js +22 -0
- package/dist/sample/felines/class/index.js.map +1 -0
- package/dist/sample/felines/class/lion.class.d.ts +4 -0
- package/dist/sample/felines/class/lion.class.js +8 -0
- package/dist/sample/felines/class/lion.class.js.map +1 -0
- package/dist/sample/felines/class/message.class.d.ts +7 -0
- package/dist/sample/felines/class/message.class.js +28 -0
- package/dist/sample/felines/class/message.class.js.map +1 -0
- package/dist/sample/felines/class/tiger.class.d.ts +4 -0
- package/dist/sample/felines/class/tiger.class.js +8 -0
- package/dist/sample/felines/class/tiger.class.js.map +1 -0
- package/dist/sample/felines/dto/create-feline.dto.d.ts +4 -0
- package/dist/sample/felines/dto/create-feline.dto.js +28 -0
- package/dist/sample/felines/dto/create-feline.dto.js.map +1 -0
- package/dist/sample/felines/dto/index.d.ts +2 -0
- package/dist/sample/felines/dto/index.js +19 -0
- package/dist/sample/felines/dto/index.js.map +1 -0
- package/dist/sample/felines/dto/journaling-data.dto.d.ts +4 -0
- package/dist/sample/felines/dto/journaling-data.dto.js +8 -0
- package/dist/sample/felines/dto/journaling-data.dto.js.map +1 -0
- package/dist/sample/felines/felines.constants.d.ts +1 -0
- package/dist/sample/felines/felines.constants.js +5 -0
- package/dist/sample/felines/felines.constants.js.map +1 -0
- package/dist/sample/felines/felines.controller.d.ts +15 -0
- package/dist/sample/felines/felines.controller.js +101 -0
- package/dist/sample/felines/felines.controller.js.map +1 -0
- package/dist/sample/felines/felines.gateway.d.ts +16 -0
- package/dist/sample/felines/felines.gateway.js +90 -0
- package/dist/sample/felines/felines.gateway.js.map +1 -0
- package/dist/sample/felines/felines.module.d.ts +2 -0
- package/dist/sample/felines/felines.module.js +28 -0
- package/dist/sample/felines/felines.module.js.map +1 -0
- package/dist/sample/felines/felines.service.d.ts +8 -0
- package/dist/sample/felines/felines.service.js +33 -0
- package/dist/sample/felines/felines.service.js.map +1 -0
- package/dist/sample/felines/rto/feline.rto.d.ts +7 -0
- package/dist/sample/felines/rto/feline.rto.js +31 -0
- package/dist/sample/felines/rto/feline.rto.js.map +1 -0
- package/dist/sample/felines/rto/index.d.ts +1 -0
- package/dist/sample/felines/rto/index.js +18 -0
- package/dist/sample/felines/rto/index.js.map +1 -0
- package/dist/sample/index.d.ts +3 -0
- package/dist/sample/index.js +20 -0
- package/dist/sample/index.js.map +1 -0
- package/dist/sample/main.d.ts +1 -0
- package/dist/sample/main.js +30 -0
- package/dist/sample/main.js.map +1 -0
- package/dist/src/asyncapi-document.builder.d.ts +27 -0
- package/dist/src/asyncapi-document.builder.js +110 -0
- package/dist/src/asyncapi-document.builder.js.map +1 -0
- package/dist/src/asyncapi.constants.d.ts +6 -0
- package/dist/src/asyncapi.constants.js +11 -0
- package/dist/src/asyncapi.constants.js.map +1 -0
- package/dist/src/asyncapi.module.d.ts +8 -0
- package/dist/src/asyncapi.module.js +47 -0
- package/dist/src/asyncapi.module.js.map +1 -0
- package/dist/src/binding/asyncapi.amqp.interfaces.d.ts +38 -0
- package/dist/src/binding/asyncapi.amqp.interfaces.js +3 -0
- package/dist/src/binding/asyncapi.amqp.interfaces.js.map +1 -0
- package/dist/src/binding/asyncapi.kafka.interfaces.d.ts +21 -0
- package/dist/src/binding/asyncapi.kafka.interfaces.js +3 -0
- package/dist/src/binding/asyncapi.kafka.interfaces.js.map +1 -0
- package/dist/src/binding/index.d.ts +2 -0
- package/dist/src/binding/index.js +19 -0
- package/dist/src/binding/index.js.map +1 -0
- package/dist/src/decorators/asyncapi-operation-for-meta-key.decorator.d.ts +2 -0
- package/dist/src/decorators/asyncapi-operation-for-meta-key.decorator.js +37 -0
- package/dist/src/decorators/asyncapi-operation-for-meta-key.decorator.js.map +1 -0
- package/dist/src/decorators/asyncapi-operation.decorator.d.ts +2 -0
- package/dist/src/decorators/asyncapi-operation.decorator.js +9 -0
- package/dist/src/decorators/asyncapi-operation.decorator.js.map +1 -0
- package/dist/src/decorators/asyncapi-pub.decorator.d.ts +2 -0
- package/dist/src/decorators/asyncapi-pub.decorator.js +10 -0
- package/dist/src/decorators/asyncapi-pub.decorator.js.map +1 -0
- package/dist/src/decorators/asyncapi-service.decorator.d.ts +1 -0
- package/dist/src/decorators/asyncapi-service.decorator.js +9 -0
- package/dist/src/decorators/asyncapi-service.decorator.js.map +1 -0
- package/dist/src/decorators/asyncapi-sub.decorator.d.ts +2 -0
- package/dist/src/decorators/asyncapi-sub.decorator.js +10 -0
- package/dist/src/decorators/asyncapi-sub.decorator.js.map +1 -0
- package/dist/src/decorators/index.d.ts +4 -0
- package/dist/src/decorators/index.js +21 -0
- package/dist/src/decorators/index.js.map +1 -0
- package/dist/src/explorers/asyncapi-class.explorer.d.ts +5 -0
- package/dist/src/explorers/asyncapi-class.explorer.js +27 -0
- package/dist/src/explorers/asyncapi-class.explorer.js.map +1 -0
- package/dist/src/explorers/asyncapi-operation.explorer.d.ts +17 -0
- package/dist/src/explorers/asyncapi-operation.explorer.js +26 -0
- package/dist/src/explorers/asyncapi-operation.explorer.js.map +1 -0
- package/dist/src/explorers/index.d.ts +2 -0
- package/dist/src/explorers/index.js +19 -0
- package/dist/src/explorers/index.js.map +1 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.js +21 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interface/asyncapi-common.interfaces.d.ts +126 -0
- package/dist/src/interface/asyncapi-common.interfaces.js +3 -0
- package/dist/src/interface/asyncapi-common.interfaces.js.map +1 -0
- package/dist/src/interface/asyncapi-document-options.interface.d.ts +3 -0
- package/dist/src/interface/asyncapi-document-options.interface.js +3 -0
- package/dist/src/interface/asyncapi-document-options.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-message.interface.d.ts +8 -0
- package/dist/src/interface/asyncapi-message.interface.js +3 -0
- package/dist/src/interface/asyncapi-message.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-operation-headers.interface.d.ts +6 -0
- package/dist/src/interface/asyncapi-operation-headers.interface.js +3 -0
- package/dist/src/interface/asyncapi-operation-headers.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-operation-options-raw.interface.d.ts +21 -0
- package/dist/src/interface/asyncapi-operation-options-raw.interface.js +3 -0
- package/dist/src/interface/asyncapi-operation-options-raw.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-operation-options.interface.d.ts +8 -0
- package/dist/src/interface/asyncapi-operation-options.interface.js +3 -0
- package/dist/src/interface/asyncapi-operation-options.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-operation-payload.interface.d.ts +2 -0
- package/dist/src/interface/asyncapi-operation-payload.interface.js +3 -0
- package/dist/src/interface/asyncapi-operation-payload.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-server.interface.d.ts +10 -0
- package/dist/src/interface/asyncapi-server.interface.js +3 -0
- package/dist/src/interface/asyncapi-server.interface.js.map +1 -0
- package/dist/src/interface/asyncapi-template-options.interface.d.ts +7 -0
- package/dist/src/interface/asyncapi-template-options.interface.js +3 -0
- package/dist/src/interface/asyncapi-template-options.interface.js.map +1 -0
- package/dist/src/interface/denormalized-doc-resolvers.interface.d.ts +6 -0
- package/dist/src/interface/denormalized-doc-resolvers.interface.js +3 -0
- package/dist/src/interface/denormalized-doc-resolvers.interface.js.map +1 -0
- package/dist/src/interface/denormalized-doc.interface.d.ts +10 -0
- package/dist/src/interface/denormalized-doc.interface.js +3 -0
- package/dist/src/interface/denormalized-doc.interface.js.map +1 -0
- package/dist/src/interface/generator-options.interface.d.ts +22 -0
- package/dist/src/interface/generator-options.interface.js +3 -0
- package/dist/src/interface/generator-options.interface.js.map +1 -0
- package/dist/src/interface/index.d.ts +11 -0
- package/dist/src/interface/index.js +28 -0
- package/dist/src/interface/index.js.map +1 -0
- package/dist/src/services/asyncapi.explorer.d.ts +12 -0
- package/dist/src/services/asyncapi.explorer.js +69 -0
- package/dist/src/services/asyncapi.explorer.js.map +1 -0
- package/dist/src/services/asyncapi.generator.d.ts +6 -0
- package/dist/src/services/asyncapi.generator.js +68 -0
- package/dist/src/services/asyncapi.generator.js.map +1 -0
- package/dist/src/services/asyncapi.scanner.d.ts +14 -0
- package/dist/src/services/asyncapi.scanner.js +71 -0
- package/dist/src/services/asyncapi.scanner.js.map +1 -0
- package/dist/src/services/asyncapi.transformer.d.ts +4 -0
- package/dist/src/services/asyncapi.transformer.js +33 -0
- package/dist/src/services/asyncapi.transformer.js.map +1 -0
- package/dist/src/services/index.d.ts +4 -0
- package/dist/src/services/index.js +21 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/operation-object.factory.d.ts +9 -0
- package/dist/src/services/operation-object.factory.js +37 -0
- package/dist/src/services/operation-object.factory.js.map +1 -0
- package/dist/test/configs/jest-base.config.d.ts +3 -0
- package/dist/test/configs/jest-base.config.js +20 -0
- package/dist/test/configs/jest-base.config.js.map +1 -0
- package/dist/test/configs/jest-e2e.config.d.ts +3 -0
- package/dist/test/configs/jest-e2e.config.js +16 -0
- package/dist/test/configs/jest-e2e.config.js.map +1 -0
- package/dist/test/express.e2e-spec.d.ts +1 -0
- package/dist/test/express.e2e-spec.js +89 -0
- package/dist/test/express.e2e-spec.js.map +1 -0
- package/dist/test/fastify.e2e-spec.d.ts +1 -0
- package/dist/test/fastify.e2e-spec.js +57 -0
- package/dist/test/fastify.e2e-spec.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/eslint.config.mjs +21 -0
- package/misc/references/ref.html +303 -0
- package/misc/references/ref.json +1 -0
- package/misc/references/ref.yaml +292 -0
- package/misc/take-snaphots.sh +8 -0
- package/package.json +48 -41
- package/sample/app.module.ts +7 -0
- package/sample/common.ts +49 -0
- package/sample/constants.ts +12 -0
- package/sample/felines/class/cat.class.ts +9 -0
- package/sample/felines/class/feline.class.ts +29 -0
- package/sample/felines/class/index.ts +5 -0
- package/sample/felines/class/lion.class.ts +5 -0
- package/sample/felines/class/message.class.ts +17 -0
- package/sample/felines/class/tiger.class.ts +5 -0
- package/sample/felines/dto/create-feline.dto.ts +13 -0
- package/sample/felines/dto/index.ts +2 -0
- package/sample/felines/dto/journaling-data.dto.ts +5 -0
- package/sample/felines/felines.constants.ts +1 -0
- package/sample/felines/felines.controller.ts +76 -0
- package/sample/felines/felines.gateway.ts +76 -0
- package/sample/felines/felines.module.ts +15 -0
- package/sample/felines/felines.service.ts +24 -0
- package/sample/felines/rto/feline.rto.ts +17 -0
- package/sample/felines/rto/index.ts +1 -0
- package/sample/index.ts +3 -0
- package/sample/main.ts +34 -0
- package/src/asyncapi-document.builder.ts +5 -19
- package/src/asyncapi.module.ts +5 -16
- package/src/decorators/asyncapi-operation-for-meta-key.decorator.ts +4 -16
- package/src/decorators/asyncapi-operation.decorator.ts +1 -3
- package/src/decorators/asyncapi-pub.decorator.ts +6 -13
- package/src/decorators/asyncapi-sub.decorator.ts +6 -13
- package/src/explorers/asyncapi-class.explorer.ts +2 -6
- package/src/explorers/asyncapi-operation.explorer.ts +3 -12
- package/src/interface/asyncapi-common.interfaces.ts +1 -4
- package/src/interface/asyncapi-operation-options.interface.ts +2 -4
- package/src/interface/asyncapi-operation-payload.interface.ts +1 -5
- package/src/interface/asyncapi-server.interface.ts +1 -4
- package/src/interface/asyncapi-template-options.interface.ts +5 -5
- package/src/interface/denormalized-doc.interface.ts +1 -5
- package/src/services/asyncapi.explorer.ts +25 -34
- package/src/services/asyncapi.generator.ts +28 -16
- package/src/services/asyncapi.scanner.ts +39 -89
- package/src/services/asyncapi.transformer.ts +2 -8
- package/src/services/index.ts +0 -1
- package/src/services/operation-object.factory.ts +0 -1
- package/test/__mocks__/@asyncapi/generator.js +41 -0
- package/test/configs/jest-base.config.ts +19 -0
- package/test/configs/jest-e2e.config.js +7 -0
- package/test/configs/jest-e2e.config.ts +19 -0
- package/test/configs/jest-swagger-plugin.js +16 -0
- package/test/express.e2e-spec.ts +64 -0
- package/test/fastify.e2e-spec.ts +65 -0
- package/.eslintrc.js +0 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-message.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-message.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-operation-headers.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-operation-headers.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AsyncOperationObject } from './asyncapi-common.interfaces';
|
|
2
|
+
import { AsyncOperationPayload } from './asyncapi-operation-payload.interface';
|
|
3
|
+
export interface RawAsyncApiMessage {
|
|
4
|
+
name?: string;
|
|
5
|
+
payload: {
|
|
6
|
+
type: AsyncOperationPayload;
|
|
7
|
+
};
|
|
8
|
+
headers?: {
|
|
9
|
+
type: 'object';
|
|
10
|
+
properties: {
|
|
11
|
+
[key: string]: {
|
|
12
|
+
description: string;
|
|
13
|
+
type: 'string';
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface AsyncApiOperationOptionsRaw extends AsyncOperationObject {
|
|
20
|
+
type: 'sub' | 'pub';
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-operation-options-raw.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-operation-options-raw.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AsyncOperationObject } from './asyncapi-common.interfaces';
|
|
2
|
+
import { AsyncApiMessage } from './asyncapi-message.interface';
|
|
3
|
+
export interface AsyncApiSpecificOperationOptions extends Omit<AsyncOperationObject, 'message'> {
|
|
4
|
+
message: AsyncApiMessage;
|
|
5
|
+
}
|
|
6
|
+
export interface AsyncApiOperationOptions extends AsyncApiSpecificOperationOptions {
|
|
7
|
+
type: 'pub' | 'sub';
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-operation-options.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-operation-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-operation-payload.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-operation-payload.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ServerObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
|
|
2
|
+
import { AmqpServerBinding, KafkaServerBinding } from '../binding';
|
|
3
|
+
import { AsyncServerVariableObject, SecurityObject } from './asyncapi-common.interfaces';
|
|
4
|
+
export interface AsyncServerObject extends Omit<ServerObject, 'variables'> {
|
|
5
|
+
variables?: Record<string, AsyncServerVariableObject>;
|
|
6
|
+
protocol: string;
|
|
7
|
+
protocolVersion?: string;
|
|
8
|
+
security?: SecurityObject[];
|
|
9
|
+
bindings?: Record<string, KafkaServerBinding | AmqpServerBinding>;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-server.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-server.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi-template-options.interface.js","sourceRoot":"","sources":["../../../src/interface/asyncapi-template-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denormalized-doc-resolvers.interface.js","sourceRoot":"","sources":["../../../src/interface/denormalized-doc-resolvers.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AsyncApiDocument, AsyncChannelObject, AsyncOperationObject } from './asyncapi-common.interfaces';
|
|
2
|
+
export interface DenormalizedDoc extends Partial<AsyncApiDocument> {
|
|
3
|
+
root?: {
|
|
4
|
+
name: string;
|
|
5
|
+
} & AsyncChannelObject;
|
|
6
|
+
operations?: {
|
|
7
|
+
pub: AsyncOperationObject;
|
|
8
|
+
sub: AsyncOperationObject;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"denormalized-doc.interface.js","sourceRoot":"","sources":["../../../src/interface/denormalized-doc.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { AsyncApiDocument } from './asyncapi-common.interfaces';
|
|
2
|
+
import { AsyncApiTemplateOptions } from './asyncapi-template-options.interface';
|
|
3
|
+
export interface GeneratorOptions {
|
|
4
|
+
templateName: string;
|
|
5
|
+
targetDir: string;
|
|
6
|
+
entrypoint?: string;
|
|
7
|
+
noOverwriteGlobs: string[];
|
|
8
|
+
disabledHooks: {
|
|
9
|
+
[key: string]: string | boolean | string[];
|
|
10
|
+
};
|
|
11
|
+
output: 'string' | 'fs';
|
|
12
|
+
forceWrite: boolean;
|
|
13
|
+
debug: boolean;
|
|
14
|
+
install: boolean;
|
|
15
|
+
templateConfig: Record<string, unknown>;
|
|
16
|
+
hooks: Record<string, unknown>;
|
|
17
|
+
templateParams: AsyncApiTemplateOptions;
|
|
18
|
+
generate: (document: AsyncApiDocument) => Promise<void>;
|
|
19
|
+
generateFromURL: (url: string) => Promise<void>;
|
|
20
|
+
generateFromFile: (path: string) => Promise<void>;
|
|
21
|
+
generateFromString: (yaml: string, args?: unknown) => Promise<string>;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator-options.interface.js","sourceRoot":"","sources":["../../../src/interface/generator-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from './asyncapi-common.interfaces';
|
|
2
|
+
export * from './asyncapi-template-options.interface';
|
|
3
|
+
export * from './asyncapi-operation-headers.interface';
|
|
4
|
+
export * from './asyncapi-operation-payload.interface';
|
|
5
|
+
export * from './asyncapi-operation-options.interface';
|
|
6
|
+
export * from './asyncapi-document-options.interface';
|
|
7
|
+
export * from './asyncapi-server.interface';
|
|
8
|
+
export * from './denormalized-doc.interface';
|
|
9
|
+
export * from './denormalized-doc-resolvers.interface';
|
|
10
|
+
export * from './generator-options.interface';
|
|
11
|
+
export * from './asyncapi-operation-options-raw.interface';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./asyncapi-common.interfaces"), exports);
|
|
18
|
+
__exportStar(require("./asyncapi-template-options.interface"), exports);
|
|
19
|
+
__exportStar(require("./asyncapi-operation-headers.interface"), exports);
|
|
20
|
+
__exportStar(require("./asyncapi-operation-payload.interface"), exports);
|
|
21
|
+
__exportStar(require("./asyncapi-operation-options.interface"), exports);
|
|
22
|
+
__exportStar(require("./asyncapi-document-options.interface"), exports);
|
|
23
|
+
__exportStar(require("./asyncapi-server.interface"), exports);
|
|
24
|
+
__exportStar(require("./denormalized-doc.interface"), exports);
|
|
25
|
+
__exportStar(require("./denormalized-doc-resolvers.interface"), exports);
|
|
26
|
+
__exportStar(require("./generator-options.interface"), exports);
|
|
27
|
+
__exportStar(require("./asyncapi-operation-options-raw.interface"), exports);
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,wEAAsD;AACtD,yEAAuD;AACvD,yEAAuD;AACvD,yEAAuD;AACvD,wEAAsD;AACtD,8DAA4C;AAC5C,+DAA6C;AAC7C,yEAAuD;AACvD,gEAA8C;AAE9C,6EAA2D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
|
|
2
|
+
import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
|
|
3
|
+
import { DenormalizedDoc } from '../interface';
|
|
4
|
+
export declare class AsyncApiExplorer {
|
|
5
|
+
private readonly metadataScanner;
|
|
6
|
+
private readonly schemas;
|
|
7
|
+
private readonly schemaRefsStack;
|
|
8
|
+
private operationIdFactory;
|
|
9
|
+
explorerAsyncapiServices(wrapper: InstanceWrapper, modulePath?: string, globalPrefix?: string, operationIdFactory?: (controllerKey: string, methodKey: string) => string): DenormalizedDoc[];
|
|
10
|
+
getSchemas(): Record<string, SchemaObject>;
|
|
11
|
+
private generateDenormalizedDocument;
|
|
12
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsyncApiExplorer = void 0;
|
|
4
|
+
const core_1 = require("@nestjs/core");
|
|
5
|
+
const lodash_1 = require("lodash");
|
|
6
|
+
const explorers_1 = require("../explorers");
|
|
7
|
+
class AsyncApiExplorer {
|
|
8
|
+
constructor() {
|
|
9
|
+
this.metadataScanner = new core_1.MetadataScanner();
|
|
10
|
+
this.schemas = [];
|
|
11
|
+
this.schemaRefsStack = [];
|
|
12
|
+
this.operationIdFactory = (controllerKey, methodKey) => controllerKey ? `${controllerKey}_${methodKey}` : methodKey;
|
|
13
|
+
}
|
|
14
|
+
explorerAsyncapiServices(wrapper, modulePath, globalPrefix, operationIdFactory) {
|
|
15
|
+
if (operationIdFactory) {
|
|
16
|
+
this.operationIdFactory = operationIdFactory;
|
|
17
|
+
}
|
|
18
|
+
const { instance, metatype } = wrapper;
|
|
19
|
+
if (!instance ||
|
|
20
|
+
!metatype ||
|
|
21
|
+
!Reflect.getMetadataKeys(metatype).find((label) => explorers_1.asyncApiClassAnnotationLabels.includes(label))) {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const prototype = Object.getPrototypeOf(instance);
|
|
25
|
+
const documentResolvers = {
|
|
26
|
+
root: [explorers_1.exploreAsyncapiClassMetadata, explorers_1.exploreControllerMetadata, explorers_1.exploreGatewayMetadata],
|
|
27
|
+
security: [],
|
|
28
|
+
tags: [],
|
|
29
|
+
operations: [explorers_1.exploreAsyncApiOperationMetadata],
|
|
30
|
+
};
|
|
31
|
+
return this.generateDenormalizedDocument(metatype, prototype, instance, documentResolvers, modulePath, globalPrefix);
|
|
32
|
+
}
|
|
33
|
+
getSchemas() {
|
|
34
|
+
const ret = Object.assign({}, this.schemas);
|
|
35
|
+
return ret;
|
|
36
|
+
}
|
|
37
|
+
generateDenormalizedDocument(metatype, prototype, instance, documentResolvers, _modulePath, _globalPrefix) {
|
|
38
|
+
const denormalizedAsyncapiServices = this.metadataScanner.scanFromPrototype(instance, prototype, (name) => {
|
|
39
|
+
const targetCallback = prototype[name];
|
|
40
|
+
const methodMetadata = documentResolvers.root.reduce((_metadata, fn) => {
|
|
41
|
+
const serviceMetadata = fn(metatype);
|
|
42
|
+
const channels = documentResolvers.operations.reduce((operationsParam, exploreOperationsMeta) => {
|
|
43
|
+
const operations = operationsParam;
|
|
44
|
+
const meta = exploreOperationsMeta(this.schemas, instance, prototype, targetCallback);
|
|
45
|
+
if (!meta) {
|
|
46
|
+
return operations;
|
|
47
|
+
}
|
|
48
|
+
meta.forEach((op) => {
|
|
49
|
+
if (Object.prototype.hasOwnProperty.call(operations, op.channel)) {
|
|
50
|
+
operations[op.channel] = Object.assign(Object.assign({}, operations[op.channel]), op);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
operations[op.channel] = op;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return operations;
|
|
57
|
+
}, {});
|
|
58
|
+
return Object.keys(channels).map((channel) => ({
|
|
59
|
+
root: Object.assign(Object.assign({}, serviceMetadata), { name: channel }),
|
|
60
|
+
operations: channels[channel],
|
|
61
|
+
}));
|
|
62
|
+
}, []);
|
|
63
|
+
return methodMetadata;
|
|
64
|
+
});
|
|
65
|
+
return (0, lodash_1.flatten)(denormalizedAsyncapiServices);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.AsyncApiExplorer = AsyncApiExplorer;
|
|
69
|
+
//# sourceMappingURL=asyncapi.explorer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi.explorer.js","sourceRoot":"","sources":["../../../src/services/asyncapi.explorer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AsyncApiDocument, AsyncApiTemplateOptions } from '../interface';
|
|
2
|
+
export declare class AsyncapiGenerator {
|
|
3
|
+
private readonly templateOptions?;
|
|
4
|
+
constructor(templateOptions?: AsyncApiTemplateOptions);
|
|
5
|
+
generate(contract: AsyncApiDocument): Promise<string>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AsyncapiGenerator = void 0;
|
|
40
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
41
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
42
|
+
const os_1 = __importDefault(require("os"));
|
|
43
|
+
const path_1 = __importDefault(require("path"));
|
|
44
|
+
class AsyncapiGenerator {
|
|
45
|
+
constructor(templateOptions) {
|
|
46
|
+
this.templateOptions = templateOptions;
|
|
47
|
+
}
|
|
48
|
+
async generate(contract) {
|
|
49
|
+
const { default: Generator } = await Promise.resolve().then(() => __importStar(require('@asyncapi/generator')));
|
|
50
|
+
const yaml = js_yaml_1.default.dump(contract);
|
|
51
|
+
const tmpDir = path_1.default.join(os_1.default.tmpdir(), `asyncapi-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
52
|
+
const generator = new Generator('@asyncapi/html-template', tmpDir, {
|
|
53
|
+
forceWrite: true,
|
|
54
|
+
templateParams: Object.assign({ singleFile: true }, this.templateOptions),
|
|
55
|
+
});
|
|
56
|
+
await generator.generateFromString(yaml, {
|
|
57
|
+
resolve: {
|
|
58
|
+
file: false,
|
|
59
|
+
},
|
|
60
|
+
});
|
|
61
|
+
const htmlPath = path_1.default.join(tmpDir, 'index.html');
|
|
62
|
+
const html = await promises_1.default.readFile(htmlPath, 'utf-8');
|
|
63
|
+
await promises_1.default.rm(tmpDir, { recursive: true, force: true }).catch(() => { });
|
|
64
|
+
return html;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.AsyncapiGenerator = AsyncapiGenerator;
|
|
68
|
+
//# sourceMappingURL=asyncapi.generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi.generator.js","sourceRoot":"","sources":["../../../src/services/asyncapi.generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2DAA6B;AAC7B,sDAA6B;AAC7B,4CAAoB;AACpB,gDAAwB;AAGxB,MAAa,iBAAiB;IAG5B,YAAY,eAAyC;QACnD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,QAA0B;QAI9C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;QAEnE,MAAM,IAAI,GAAG,iBAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAEvG,MAAM,SAAS,GAAqB,IAAI,SAAS,CAAC,yBAAyB,EAAE,MAAM,EAAE;YACnF,UAAU,EAAE,IAAI;YAChB,cAAc,kBACZ,UAAU,EAAE,IAAI,IACb,IAAI,CAAC,eAAe,CACxB;SACF,CAAC,CAAC;QAEH,MAAM,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE;gBACP,IAAI,EAAE,KAAK;aACZ;SACF,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAGlD,MAAM,kBAAE,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEtE,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAtCD,8CAsCC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { INestApplicationContext } from '@nestjs/common';
|
|
2
|
+
import { AsyncApiDocument, AsyncApiDocumentOptions } from '../interface';
|
|
3
|
+
export declare class AsyncapiScanner {
|
|
4
|
+
private readonly transformer;
|
|
5
|
+
private readonly explorer;
|
|
6
|
+
private readonly modelPropertiesAccessor;
|
|
7
|
+
private readonly swaggerTypesMapper;
|
|
8
|
+
private readonly schemaObjectFactory;
|
|
9
|
+
scanApplication(app: INestApplicationContext, options: AsyncApiDocumentOptions): Omit<AsyncApiDocument, 'asyncapi' | 'info'>;
|
|
10
|
+
private scanModuleProviders;
|
|
11
|
+
private getModules;
|
|
12
|
+
private getGlobalPrefix;
|
|
13
|
+
private addExtraModels;
|
|
14
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsyncapiScanner = void 0;
|
|
4
|
+
const constants_1 = require("@nestjs/common/constants");
|
|
5
|
+
const model_properties_accessor_1 = require("@nestjs/swagger/dist/services/model-properties-accessor");
|
|
6
|
+
const schema_object_factory_1 = require("@nestjs/swagger/dist/services/schema-object-factory");
|
|
7
|
+
const swagger_types_mapper_1 = require("@nestjs/swagger/dist/services/swagger-types-mapper");
|
|
8
|
+
const strip_last_slash_util_1 = require("@nestjs/swagger/dist/utils/strip-last-slash.util");
|
|
9
|
+
const lodash_1 = require("lodash");
|
|
10
|
+
const asyncapi_explorer_1 = require("./asyncapi.explorer");
|
|
11
|
+
const asyncapi_transformer_1 = require("./asyncapi.transformer");
|
|
12
|
+
class AsyncapiScanner {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.transformer = new asyncapi_transformer_1.AsyncapiTransformer();
|
|
15
|
+
this.explorer = new asyncapi_explorer_1.AsyncApiExplorer();
|
|
16
|
+
this.modelPropertiesAccessor = new model_properties_accessor_1.ModelPropertiesAccessor();
|
|
17
|
+
this.swaggerTypesMapper = new swagger_types_mapper_1.SwaggerTypesMapper();
|
|
18
|
+
this.schemaObjectFactory = new schema_object_factory_1.SchemaObjectFactory(this.modelPropertiesAccessor, this.swaggerTypesMapper);
|
|
19
|
+
}
|
|
20
|
+
scanApplication(app, options) {
|
|
21
|
+
const { deepScanRoutes, include: includedModules = [], extraModels = [], ignoreGlobalPrefix = false, operationIdFactory, } = options;
|
|
22
|
+
const { container } = app;
|
|
23
|
+
const modules = this.getModules(container.getModules(), includedModules);
|
|
24
|
+
const globalPrefix = !ignoreGlobalPrefix ? (0, strip_last_slash_util_1.stripLastSlash)(this.getGlobalPrefix(app)) : '';
|
|
25
|
+
const denormalizedChannels = modules.reduce((channels, { providers, metatype, imports, controllers }) => {
|
|
26
|
+
let allProviders = new Map([...providers, ...controllers]);
|
|
27
|
+
if (deepScanRoutes) {
|
|
28
|
+
const isGlobal = (module) => !container.isGlobalModule(module);
|
|
29
|
+
Array.from(imports.values())
|
|
30
|
+
.filter(isGlobal)
|
|
31
|
+
.map(({ providers: relatedProviders, controllers: relatedControllers }) => ({
|
|
32
|
+
relatedProviders,
|
|
33
|
+
relatedControllers,
|
|
34
|
+
}))
|
|
35
|
+
.forEach(({ relatedProviders, relatedControllers }) => {
|
|
36
|
+
allProviders = new Map([...allProviders, ...relatedProviders, ...relatedControllers]);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
const path = metatype ? Reflect.getMetadata(constants_1.MODULE_PATH, metatype) : undefined;
|
|
40
|
+
return [...channels, ...this.scanModuleProviders(allProviders, path, globalPrefix, operationIdFactory)];
|
|
41
|
+
}, []);
|
|
42
|
+
const schemas = this.explorer.getSchemas();
|
|
43
|
+
this.addExtraModels(schemas, extraModels);
|
|
44
|
+
const normalizedChannels = this.transformer.normalizeChannels((0, lodash_1.flatten)(denormalizedChannels));
|
|
45
|
+
return Object.assign(Object.assign({}, normalizedChannels), { components: { schemas } });
|
|
46
|
+
}
|
|
47
|
+
scanModuleProviders(providers, modulePath, globalPrefix, operationIdFactory) {
|
|
48
|
+
const denormalizedArray = [...providers.values()].reduce((denormalized, prov) => {
|
|
49
|
+
const object = this.explorer.explorerAsyncapiServices(prov, modulePath, globalPrefix, operationIdFactory);
|
|
50
|
+
return [...denormalized, ...object];
|
|
51
|
+
}, []);
|
|
52
|
+
return (0, lodash_1.flatten)(denormalizedArray);
|
|
53
|
+
}
|
|
54
|
+
getModules(modulesContainer, include) {
|
|
55
|
+
if (!include || (0, lodash_1.isEmpty)(include)) {
|
|
56
|
+
return [...modulesContainer.values()];
|
|
57
|
+
}
|
|
58
|
+
return [...modulesContainer.values()].filter(({ metatype }) => include.some((item) => item === metatype));
|
|
59
|
+
}
|
|
60
|
+
getGlobalPrefix(app) {
|
|
61
|
+
const internalConfigRef = app.config;
|
|
62
|
+
return (internalConfigRef === null || internalConfigRef === void 0 ? void 0 : internalConfigRef.getGlobalPrefix()) || '';
|
|
63
|
+
}
|
|
64
|
+
addExtraModels(schemas, extraModels) {
|
|
65
|
+
extraModels.forEach((item) => {
|
|
66
|
+
this.schemaObjectFactory.exploreModelSchema(item, schemas);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.AsyncapiScanner = AsyncapiScanner;
|
|
71
|
+
//# sourceMappingURL=asyncapi.scanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi.scanner.js","sourceRoot":"","sources":["../../../src/services/asyncapi.scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AsyncapiTransformer = void 0;
|
|
4
|
+
class AsyncapiTransformer {
|
|
5
|
+
normalizeChannels(denormalizedDocs) {
|
|
6
|
+
const flatChannels = denormalizedDocs.map((doc) => {
|
|
7
|
+
var _a, _b, _c, _d, _e, _f;
|
|
8
|
+
const key = (_a = doc.root) === null || _a === void 0 ? void 0 : _a.name;
|
|
9
|
+
const value = {
|
|
10
|
+
description: (_b = doc.root) === null || _b === void 0 ? void 0 : _b.description,
|
|
11
|
+
bindings: (_c = doc.root) === null || _c === void 0 ? void 0 : _c.bindings,
|
|
12
|
+
parameters: (_d = doc.root) === null || _d === void 0 ? void 0 : _d.parameters,
|
|
13
|
+
subscribe: (_e = doc.operations) === null || _e === void 0 ? void 0 : _e.sub,
|
|
14
|
+
publish: (_f = doc.operations) === null || _f === void 0 ? void 0 : _f.pub,
|
|
15
|
+
};
|
|
16
|
+
return { key, value };
|
|
17
|
+
});
|
|
18
|
+
const channels = flatChannels.reduce((acc, { key, value }) => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
if (!key)
|
|
21
|
+
return acc;
|
|
22
|
+
if (!acc[key]) {
|
|
23
|
+
acc[key] = value;
|
|
24
|
+
}
|
|
25
|
+
acc[key].publish = (_a = acc[key].publish) !== null && _a !== void 0 ? _a : value.publish;
|
|
26
|
+
acc[key].subscribe = (_b = acc[key].subscribe) !== null && _b !== void 0 ? _b : value.subscribe;
|
|
27
|
+
return acc;
|
|
28
|
+
}, {});
|
|
29
|
+
return { channels };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.AsyncapiTransformer = AsyncapiTransformer;
|
|
33
|
+
//# sourceMappingURL=asyncapi.transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncapi.transformer.js","sourceRoot":"","sources":["../../../src/services/asyncapi.transformer.ts"],"names":[],"mappings":";;;AAEA,MAAa,mBAAmB;IACvB,iBAAiB,CAAC,gBAAmC;QAC1D,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAoB,EAAE,EAAE;;YACjE,MAAM,GAAG,GAAG,MAAA,GAAG,CAAC,IAAI,0CAAE,IAAI,CAAC;YAC3B,MAAM,KAAK,GAAuB;gBAChC,WAAW,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,WAAW;gBAClC,QAAQ,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,QAAQ;gBAC5B,UAAU,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,UAAU;gBAChC,SAAS,EAAE,MAAA,GAAG,CAAC,UAAU,0CAAE,GAAG;gBAC9B,OAAO,EAAE,MAAA,GAAG,CAAC,UAAU,0CAAE,GAAG;aAC7B,CAAC;YACF,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;;YAE3D,IAAI,CAAC,GAAG;gBAAE,OAAO,GAAG,CAAC;YAErB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACd,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,CAAC;YAED,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,mCAAI,KAAK,CAAC,OAAO,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,mCAAI,KAAK,CAAC,SAAS,CAAC;YAE3D,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAyB,CAAC,CAAC;QAE9B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;CACF;AA9BD,kDA8BC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./asyncapi.generator"), exports);
|
|
18
|
+
__exportStar(require("./operation-object.factory"), exports);
|
|
19
|
+
__exportStar(require("./asyncapi.explorer"), exports);
|
|
20
|
+
__exportStar(require("./asyncapi.scanner"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,6DAA2C;AAC3C,sDAAoC;AACpC,qDAAmC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
|
|
2
|
+
import { AsyncApiOperationOptionsRaw, AsyncOperationObject } from '../interface';
|
|
3
|
+
export declare class OperationObjectFactory {
|
|
4
|
+
private readonly modelPropertiesAccessor;
|
|
5
|
+
private readonly swaggerTypesMapper;
|
|
6
|
+
private readonly schemaObjectFactory;
|
|
7
|
+
create(operation: AsyncApiOperationOptionsRaw, produces: string[], schemas: Record<string, SchemaObject>): AsyncOperationObject;
|
|
8
|
+
private getDtoName;
|
|
9
|
+
}
|