@hodfords/nestjs-grpc-helper 10.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/README.md +89 -0
  2. package/clients/custom-grpc.client.d.ts +27 -0
  3. package/clients/custom-grpc.client.js +265 -0
  4. package/clients/custom-grpc.client.js.map +1 -0
  5. package/commands/generate-sdk.command.d.ts +4 -0
  6. package/commands/generate-sdk.command.js +28 -0
  7. package/commands/generate-sdk.command.js.map +1 -0
  8. package/decorators/grpc-value.decorator.d.ts +1 -0
  9. package/decorators/grpc-value.decorator.js +12 -0
  10. package/decorators/grpc-value.decorator.js.map +1 -0
  11. package/decorators/microservice.decorator.d.ts +2 -0
  12. package/decorators/microservice.decorator.js +22 -0
  13. package/decorators/microservice.decorator.js.map +1 -0
  14. package/decorators/mock.decorator.d.ts +4 -0
  15. package/decorators/mock.decorator.js +34 -0
  16. package/decorators/mock.decorator.js.map +1 -0
  17. package/decorators/property.decorator.d.ts +2 -0
  18. package/decorators/property.decorator.js +21 -0
  19. package/decorators/property.decorator.js.map +1 -0
  20. package/documents/grpc-test.dto.d.ts +6 -0
  21. package/documents/grpc-test.dto.js +42 -0
  22. package/documents/grpc-test.dto.js.map +1 -0
  23. package/documents/microservice-document.controller.d.ts +10 -0
  24. package/documents/microservice-document.controller.js +59 -0
  25. package/documents/microservice-document.controller.js.map +1 -0
  26. package/documents/microservice-document.module.d.ts +5 -0
  27. package/documents/microservice-document.module.js +60 -0
  28. package/documents/microservice-document.module.js.map +1 -0
  29. package/frontend/3rdpartylicenses.txt +393 -0
  30. package/frontend/assets/config.json +1 -0
  31. package/frontend/chunk-5FZOKLP6.js +1 -0
  32. package/frontend/chunk-IKVALLPG.js +9 -0
  33. package/frontend/favicon.ico +0 -0
  34. package/frontend/index.html +14 -0
  35. package/frontend/main-GUJBJU47.js +21 -0
  36. package/frontend/polyfills-BJX5WH5B.js +2 -0
  37. package/frontend/styles-GLNRDJWV.css +1 -0
  38. package/helpers/api-property.helper.d.ts +2 -0
  39. package/helpers/api-property.helper.js +9 -0
  40. package/helpers/api-property.helper.js.map +1 -0
  41. package/helpers/generate.helper.d.ts +3 -0
  42. package/helpers/generate.helper.js +19 -0
  43. package/helpers/generate.helper.js.map +1 -0
  44. package/helpers/mock.helper.d.ts +1 -0
  45. package/helpers/mock.helper.js +61 -0
  46. package/helpers/mock.helper.js.map +1 -0
  47. package/helpers/property.helper.d.ts +8 -0
  48. package/helpers/property.helper.js +92 -0
  49. package/helpers/property.helper.js.map +1 -0
  50. package/helpers/proto-type.helper.d.ts +3 -0
  51. package/helpers/proto-type.helper.js +36 -0
  52. package/helpers/proto-type.helper.js.map +1 -0
  53. package/index.d.ts +11 -0
  54. package/index.js +28 -0
  55. package/index.js.map +1 -0
  56. package/package.json +107 -0
  57. package/sdk-stub/constants/multi-language-key.constant.d.ts +3 -0
  58. package/sdk-stub/constants/multi-language-key.constant.js +7 -0
  59. package/sdk-stub/constants/multi-language-key.constant.js.map +1 -0
  60. package/sdk-stub/constants/multi-language-key.constant.ts +3 -0
  61. package/sdk-stub/helpers/grpc.helper.d.ts +25 -0
  62. package/sdk-stub/helpers/grpc.helper.js +106 -0
  63. package/sdk-stub/helpers/grpc.helper.js.map +1 -0
  64. package/sdk-stub/helpers/grpc.helper.ts +129 -0
  65. package/sdk-stub/types/microservice-option.type.d.ts +12 -0
  66. package/sdk-stub/types/microservice-option.type.js +3 -0
  67. package/sdk-stub/types/microservice-option.type.js.map +1 -0
  68. package/sdk-stub/types/microservice-option.type.ts +13 -0
  69. package/services/generate-document.service.d.ts +12 -0
  70. package/services/generate-document.service.js +121 -0
  71. package/services/generate-document.service.js.map +1 -0
  72. package/services/generate-microservice.service.d.ts +23 -0
  73. package/services/generate-microservice.service.js +200 -0
  74. package/services/generate-microservice.service.js.map +1 -0
  75. package/services/generate-proto.service.d.ts +12 -0
  76. package/services/generate-proto.service.js +132 -0
  77. package/services/generate-proto.service.js.map +1 -0
  78. package/services/method-template.service.d.ts +5 -0
  79. package/services/method-template.service.js +50 -0
  80. package/services/method-template.service.js.map +1 -0
  81. package/services/mock-method-template.service.d.ts +5 -0
  82. package/services/mock-method-template.service.js +32 -0
  83. package/services/mock-method-template.service.js.map +1 -0
  84. package/services/mock-module-template.service.d.ts +6 -0
  85. package/services/mock-module-template.service.js +37 -0
  86. package/services/mock-module-template.service.js.map +1 -0
  87. package/services/module-template.service.d.ts +6 -0
  88. package/services/module-template.service.js +60 -0
  89. package/services/module-template.service.js.map +1 -0
  90. package/services/service-template.service.d.ts +10 -0
  91. package/services/service-template.service.js +105 -0
  92. package/services/service-template.service.js.map +1 -0
  93. package/storages/microservice.storage.d.ts +1 -0
  94. package/storages/microservice.storage.js +5 -0
  95. package/storages/microservice.storage.js.map +1 -0
  96. package/storages/property.storage.d.ts +3 -0
  97. package/storages/property.storage.js +6 -0
  98. package/storages/property.storage.js.map +1 -0
  99. package/types/document-module-option.type.d.ts +8 -0
  100. package/types/document-module-option.type.js +3 -0
  101. package/types/document-module-option.type.js.map +1 -0
  102. package/types/document.type.d.ts +40 -0
  103. package/types/document.type.js +3 -0
  104. package/types/document.type.js.map +1 -0
  105. package/types/mock-option.type.d.ts +12 -0
  106. package/types/mock-option.type.js +3 -0
  107. package/types/mock-option.type.js.map +1 -0
  108. package/types/property-option.type.d.ts +15 -0
  109. package/types/property-option.type.js +3 -0
  110. package/types/property-option.type.js.map +1 -0
@@ -0,0 +1,129 @@
1
+ import { ClientGrpc } from '@nestjs/microservices';
2
+ import { firstValueFrom, Observable, timeout } from 'rxjs';
3
+ import { HttpException, HttpStatus } from '@nestjs/common';
4
+ import { plainToInstance } from 'class-transformer';
5
+ import { CLS_TRANSLATION_NAMESPACE, currentLanguage, getLanguageByKey, trans } from '@hodfords/nestjs-cls-translation';
6
+ import { Metadata, status } from '@grpc/grpc-js';
7
+ import { MicroserviceClientOptionType } from '../types/microservice-option.type';
8
+ import {
9
+ COMMUNICATION_LANGUAGE,
10
+ PLATFORM_LANGUAGE_KEY,
11
+ REPORT_LANGUAGE_KEY
12
+ } from '../constants/multi-language-key.constant';
13
+
14
+ export class GrpcHelper<Model> {
15
+ private serviceGrpc: any;
16
+ private methodName: string;
17
+ private payload: any;
18
+ private metadata = new Metadata();
19
+
20
+ static with<Model>(
21
+ client: ClientGrpc,
22
+ model: { new (): Model },
23
+ options: MicroserviceClientOptionType
24
+ ): GrpcHelper<Model> {
25
+ return new GrpcHelper<Model>(client, model, options);
26
+ }
27
+
28
+ private constructor(
29
+ private client: ClientGrpc,
30
+ private model: { new (): Model },
31
+ private options: MicroserviceClientOptionType
32
+ ) {
33
+ if (this.options.enableLanguageMetaData) {
34
+ this.appendLanguages();
35
+ }
36
+ }
37
+
38
+ private currentPriorityLanguage(key = REPORT_LANGUAGE_KEY) {
39
+ return CLS_TRANSLATION_NAMESPACE.get(key);
40
+ }
41
+
42
+ private appendLanguages() {
43
+ const platformLanguage = currentLanguage();
44
+ const reportLanguage = this.currentPriorityLanguage();
45
+ const communicationLanguage = getLanguageByKey(COMMUNICATION_LANGUAGE);
46
+ if (platformLanguage) {
47
+ this.metadata.add(PLATFORM_LANGUAGE_KEY, platformLanguage);
48
+ }
49
+ if (reportLanguage) {
50
+ this.metadata.add(REPORT_LANGUAGE_KEY, reportLanguage);
51
+ }
52
+ if (communicationLanguage) {
53
+ this.metadata.add(COMMUNICATION_LANGUAGE, communicationLanguage);
54
+ }
55
+ }
56
+
57
+ service(name: string): GrpcHelper<Model> {
58
+ this.serviceGrpc = this.client.getService<any>(name);
59
+ return this;
60
+ }
61
+
62
+ method(name: string): GrpcHelper<Model> {
63
+ this.methodName = name;
64
+ return this;
65
+ }
66
+
67
+ data(data: any): GrpcHelper<Model> {
68
+ this.payload = data;
69
+ return this;
70
+ }
71
+
72
+ async getOne(): Promise<Model> {
73
+ const data = await this.getMany();
74
+ return data[0];
75
+ }
76
+
77
+ async getMany(): Promise<Model[]> {
78
+ try {
79
+ let data = await this.execute<any>();
80
+ if (data.grpcArray) {
81
+ data = data.items || [];
82
+ }
83
+ if (Array.isArray(data)) {
84
+ return plainToInstance(this.model, data);
85
+ } else {
86
+ return [plainToInstance(this.model, data)];
87
+ }
88
+ } catch (exception) {
89
+ console.log(this.methodName, exception);
90
+ throw exception;
91
+ }
92
+ }
93
+
94
+ private async execute<T>(): Promise<T> {
95
+ const handler = (): Promise<T> =>
96
+ this.toPromise<T>(
97
+ this.serviceGrpc[this.methodName](this.payload, this.metadata).pipe(timeout(this.options.timeout))
98
+ );
99
+
100
+ return handler();
101
+ }
102
+
103
+ // eslint-disable-next-line
104
+ // @ts-ignore
105
+ private async toPromise<T>(observe: Observable<T>): Promise<T> {
106
+ try {
107
+ return await firstValueFrom(observe);
108
+ } catch (error) {
109
+ this.handelError(error);
110
+ }
111
+ }
112
+
113
+ private handelError(error: any): void {
114
+ if (error.code) {
115
+ if (error.code == status.ABORTED) {
116
+ const responseError = JSON.parse(error.details);
117
+ const httpError: any = new HttpException(responseError.message, responseError.code);
118
+ httpError['response'] = responseError.errors;
119
+ httpError.message = responseError.message;
120
+ throw httpError;
121
+ } else {
122
+ console.error(error);
123
+ throw new HttpException(trans('error.an_error_occurred'), HttpStatus.INTERNAL_SERVER_ERROR);
124
+ }
125
+ } else {
126
+ throw error;
127
+ }
128
+ }
129
+ }
@@ -0,0 +1,12 @@
1
+ export type MicroserviceModuleOptionType = {
2
+ timeout: number;
3
+ url: string;
4
+ ssl?: boolean;
5
+ maxReceiveMessageLength?: number;
6
+ shouldLoadEmptyArray?: boolean;
7
+ enableLanguageMetaData?: boolean;
8
+ };
9
+ export type MicroserviceClientOptionType = {
10
+ timeout: number;
11
+ enableLanguageMetaData?: boolean;
12
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=microservice-option.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microservice-option.type.js","sourceRoot":"","sources":["../../../../libs/sdk-stub/types/microservice-option.type.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ export type MicroserviceModuleOptionType = {
2
+ timeout: number;
3
+ url: string;
4
+ ssl?: boolean;
5
+ maxReceiveMessageLength?: number;
6
+ shouldLoadEmptyArray?: boolean;
7
+ enableLanguageMetaData?: boolean;
8
+ };
9
+
10
+ export type MicroserviceClientOptionType = {
11
+ timeout: number;
12
+ enableLanguageMetaData?: boolean;
13
+ };
@@ -0,0 +1,12 @@
1
+ import { DocumentType, MethodDocumentType, MicroserviceDocumentType } from '../types/document.type';
2
+ export declare class GenerateDocumentService {
3
+ private packageName;
4
+ private document;
5
+ constructor(packageName: string);
6
+ generate(): DocumentType;
7
+ generateModels(): any[];
8
+ getProtoType(type: any): string;
9
+ generateMicroservices(): MicroserviceDocumentType[];
10
+ generateMicroservice(constructor: Function): MicroserviceDocumentType;
11
+ generateRpcMethod(constructor: any, propertyKey: string): MethodDocumentType;
12
+ }
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GenerateDocumentService = void 0;
7
+ const nestjs_response_1 = require("@hodfords/nestjs-response");
8
+ const path_1 = __importDefault(require("path"));
9
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
10
+ const microservice_storage_1 = require("../storages/microservice.storage");
11
+ const property_storage_1 = require("../storages/property.storage");
12
+ const lodash_1 = require("lodash");
13
+ const crypto_1 = require("crypto");
14
+ const property_helper_1 = require("../helpers/property.helper");
15
+ class GenerateDocumentService {
16
+ constructor(packageName) {
17
+ this.packageName = packageName;
18
+ }
19
+ generate() {
20
+ const moduleName = (0, lodash_1.upperFirst)((0, lodash_1.camelCase)(this.packageName));
21
+ const packageFile = require(path_1.default.join(process.cwd(), 'package.json'));
22
+ this.document = {
23
+ title: this.packageName,
24
+ package: this.packageName,
25
+ description: packageFile.description,
26
+ installDescription: `npm install --save ${packageFile.name}:${packageFile.version}`,
27
+ usageDescription: `
28
+ //Import module
29
+
30
+ ${moduleName}Module.register({
31
+ timeout: 5000,
32
+ url: 'localhost:50051'
33
+ })
34
+
35
+ // Use in service
36
+ export class ExampleService {
37
+ constructor(private ${(0, lodash_1.camelCase)(this.packageName)}Microservice: ${moduleName}Microservice) {
38
+
39
+ }
40
+
41
+ findOne() {
42
+ return this.${(0, lodash_1.camelCase)(this.packageName)}Microservice.findOne({ id: 1 });
43
+ }
44
+ }
45
+ `.replaceAll(' ', ''),
46
+ microservices: [],
47
+ models: []
48
+ };
49
+ this.document.models = this.generateModels();
50
+ this.document.microservices = this.generateMicroservices();
51
+ return this.document;
52
+ }
53
+ generateModels() {
54
+ const models = (0, lodash_1.cloneDeep)(Array.from(property_storage_1.propertyStorage.keys()).map((dto) => {
55
+ return {
56
+ classId: 'class#' + (0, crypto_1.randomUUID)(),
57
+ model: dto,
58
+ name: dto.name,
59
+ properties: (0, property_helper_1.getPropertiesOfClass)(dto)
60
+ };
61
+ }));
62
+ for (const model of models) {
63
+ for (const property of model.properties) {
64
+ if ((0, shared_utils_1.isFunction)(property.option.type)) {
65
+ const type = property.option.type.name === 'type' ? property.option.type() : property.option.type;
66
+ property.option.typeId = models.find((m) => m.model == type).classId;
67
+ property.option.type = type.name;
68
+ }
69
+ }
70
+ }
71
+ return models;
72
+ }
73
+ getProtoType(type) {
74
+ if ((0, shared_utils_1.isFunction)(type)) {
75
+ if (type.name === 'type') {
76
+ return type().name;
77
+ }
78
+ return type.name;
79
+ }
80
+ return type;
81
+ }
82
+ generateMicroservices() {
83
+ const content = [];
84
+ for (const constructor of microservice_storage_1.microserviceStorage) {
85
+ content.push(this.generateMicroservice(constructor));
86
+ }
87
+ return content;
88
+ }
89
+ generateMicroservice(constructor) {
90
+ const microserviceDocument = {
91
+ name: constructor.name,
92
+ description: Reflect.getMetadata('grpc:description', constructor.prototype),
93
+ methods: []
94
+ };
95
+ const propertyKeys = Object.getOwnPropertyNames(constructor.prototype);
96
+ microserviceDocument.methods = propertyKeys
97
+ .map((propertyKey) => this.generateRpcMethod(constructor, propertyKey))
98
+ .filter((method) => method);
99
+ return microserviceDocument;
100
+ }
101
+ generateRpcMethod(constructor, propertyKey) {
102
+ if (Reflect.hasMetadata('grpc:method', constructor.prototype, propertyKey)) {
103
+ const methodDocument = {};
104
+ const params = Reflect.getMetadata('design:paramtypes', constructor.prototype, propertyKey);
105
+ const parameterIndex = Reflect.getMetadata('grpc:parameter-index', constructor.prototype, propertyKey);
106
+ methodDocument.name = propertyKey;
107
+ methodDocument.description = Reflect.getMetadata('grpc:description', constructor.prototype, propertyKey);
108
+ methodDocument.sdkUsage = `const response = await ${(0, lodash_1.camelCase)(constructor.name)}.${propertyKey}({});`;
109
+ methodDocument.parameter = this.document.models.find((model) => model.model === params[parameterIndex])
110
+ ?.classId;
111
+ const response = Reflect.getMetadata(nestjs_response_1.RESPONSE_METADATA_KEY, constructor.prototype[propertyKey]);
112
+ if (response) {
113
+ methodDocument.response = this.document.models.find((model) => model.model === response.responseClass).classId;
114
+ methodDocument.isResponseArray = response.isArray;
115
+ }
116
+ return methodDocument;
117
+ }
118
+ }
119
+ }
120
+ exports.GenerateDocumentService = GenerateDocumentService;
121
+ //# sourceMappingURL=generate-document.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-document.service.js","sourceRoot":"","sources":["../../../libs/services/generate-document.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ResponseMetadata } from '@hodfords/nestjs-response';
2
+ export declare class GenerateMicroserviceService {
3
+ private packageName;
4
+ private dirPath;
5
+ private serviceTemplateService;
6
+ private moduleTemplateService;
7
+ private mockModuleTemplateService;
8
+ private fileName;
9
+ constructor(packageName: string, dirPath: string);
10
+ generate(): void;
11
+ copySdk(): void;
12
+ generatePackageFile(): void;
13
+ generateIndex(): void;
14
+ writeFile(content: string, filePath: string): void;
15
+ generateModule(): void;
16
+ generateModels(): string;
17
+ generateModel(dto: Function, properties: any): string;
18
+ generateEnums(): string;
19
+ generateServices(): string;
20
+ generateService(constructor: Function, isMock: boolean): string;
21
+ generateRpcMethod(constructor: any, propertyKey: string, isMock: boolean): string;
22
+ getReturnType(response: ResponseMetadata): string;
23
+ }
@@ -0,0 +1,200 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.GenerateMicroserviceService = void 0;
30
+ const nestjs_grpc_helper_1 = require("..");
31
+ const nestjs_response_1 = require("@hodfords/nestjs-response");
32
+ const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
33
+ const fs_1 = require("fs");
34
+ const fs = __importStar(require("fs-extra"));
35
+ const api_property_helper_1 = require("../helpers/api-property.helper");
36
+ const property_helper_1 = require("../helpers/property.helper");
37
+ const lodash_1 = require("lodash");
38
+ const path_1 = __importDefault(require("path"));
39
+ const proto_type_helper_1 = require("../helpers/proto-type.helper");
40
+ const microservice_storage_1 = require("../storages/microservice.storage");
41
+ const method_template_service_1 = require("./method-template.service");
42
+ const mock_method_template_service_1 = require("./mock-method-template.service");
43
+ const mock_module_template_service_1 = require("./mock-module-template.service");
44
+ const module_template_service_1 = require("./module-template.service");
45
+ const service_template_service_1 = require("./service-template.service");
46
+ class GenerateMicroserviceService {
47
+ constructor(packageName, dirPath) {
48
+ this.packageName = packageName;
49
+ this.dirPath = dirPath;
50
+ this.fileName = '';
51
+ this.fileName = (0, lodash_1.kebabCase)(this.packageName).toLowerCase();
52
+ this.serviceTemplateService = new service_template_service_1.ServiceTemplateService(packageName);
53
+ this.moduleTemplateService = new module_template_service_1.ModuleTemplateService(packageName, this.fileName);
54
+ this.mockModuleTemplateService = new mock_module_template_service_1.MockModuleTemplateService(packageName, this.fileName);
55
+ }
56
+ generate() {
57
+ (0, nestjs_grpc_helper_1.generateProtoService)(this.packageName, this.dirPath);
58
+ this.generateIndex();
59
+ let serviceContent = this.generateServices();
60
+ this.generateModule();
61
+ const modelContent = this.generateModels();
62
+ const enumContent = this.generateEnums();
63
+ serviceContent = this.serviceTemplateService.templateServiceAndModel(serviceContent, modelContent, enumContent);
64
+ this.writeFile(serviceContent, `services/${this.fileName}.service.ts`);
65
+ this.copySdk();
66
+ this.generatePackageFile();
67
+ }
68
+ copySdk() {
69
+ fs.ensureDirSync(path_1.default.join(this.dirPath, 'helpers'));
70
+ fs.ensureDirSync(path_1.default.join(this.dirPath, 'types'));
71
+ fs.ensureDirSync(path_1.default.join(this.dirPath, 'constants'));
72
+ let dirPath = __dirname;
73
+ if (fs.existsSync(path_1.default.join(__dirname, '../../sdk-stub/helpers/grpc.helper.ts'))) {
74
+ dirPath = path_1.default.join(__dirname, '../../sdk-stub');
75
+ }
76
+ else {
77
+ dirPath = path_1.default.join(__dirname, '../sdk-stub');
78
+ }
79
+ if (!fs.existsSync(path_1.default.join(this.dirPath, 'helpers/grpc.helper.ts'))) {
80
+ (0, fs_1.copyFileSync)(path_1.default.join(dirPath, 'helpers/grpc.helper.ts'), path_1.default.join(this.dirPath, 'helpers/grpc.helper.ts'));
81
+ }
82
+ (0, fs_1.copyFileSync)(path_1.default.join(dirPath, 'types/microservice-option.type.ts'), path_1.default.join(this.dirPath, 'types/microservice-option.type.ts'));
83
+ (0, fs_1.copyFileSync)(path_1.default.join(dirPath, 'constants/multi-language-key.constant.ts'), path_1.default.join(this.dirPath, 'constants/multi-language-key.constant.ts'));
84
+ }
85
+ generatePackageFile() {
86
+ const packageFile = require(path_1.default.join(process.cwd(), 'package.json'));
87
+ const sdkPackageFile = {
88
+ name: packageFile.name,
89
+ version: packageFile.version,
90
+ publishConfig: packageFile.publishConfig,
91
+ license: packageFile.license,
92
+ repository: packageFile.repository,
93
+ scripts: {
94
+ build: 'tsc'
95
+ }
96
+ };
97
+ this.writeFile(JSON.stringify(sdkPackageFile), `package.json`);
98
+ }
99
+ generateIndex() {
100
+ const indexContent = `
101
+ export * from './helpers/grpc.helper'
102
+ export * from './${this.fileName}.module'
103
+ export * from './${this.fileName}.mock.module'
104
+ export * from './services/${this.fileName}.service';
105
+ export * from './types/microservice-option.type';
106
+ `;
107
+ this.writeFile(indexContent, `index.ts`);
108
+ }
109
+ writeFile(content, filePath) {
110
+ const microserviceProtoPath = path_1.default.join(this.dirPath, filePath);
111
+ fs.ensureFileSync(microserviceProtoPath);
112
+ fs.writeFileSync(microserviceProtoPath, content);
113
+ }
114
+ generateModule() {
115
+ const services = [];
116
+ for (const constructor of microservice_storage_1.microserviceStorage) {
117
+ services.push(constructor.name);
118
+ }
119
+ this.writeFile(this.moduleTemplateService.template(services), `${this.fileName}.module.ts`);
120
+ this.writeFile(this.mockModuleTemplateService.template(services), `${this.fileName}.mock.module.ts`);
121
+ }
122
+ generateModels() {
123
+ const dtoWithProperties = (0, property_helper_1.extractProperties)();
124
+ const content = Object.keys(dtoWithProperties).map((name) => this.generateModel({ name }, dtoWithProperties[name]));
125
+ return content.reverse().join('\n');
126
+ }
127
+ generateModel(dto, properties) {
128
+ const propertyContents = properties.map((property) => {
129
+ const type = (0, proto_type_helper_1.convertProtoTypeToTypescript)(property.option, true);
130
+ return this.serviceTemplateService.propertyTemplate(property, type);
131
+ });
132
+ const parentClass = Object.getPrototypeOf(dto);
133
+ return this.serviceTemplateService.modelTemplate(dto.name, propertyContents, parentClass);
134
+ }
135
+ generateEnums() {
136
+ const dtoWithProperties = (0, property_helper_1.extractProperties)();
137
+ const properties = Object.values(dtoWithProperties).flat();
138
+ const generatedEnumAuditor = new Set();
139
+ const contents = [];
140
+ for (const { option } of properties) {
141
+ if (!(0, api_property_helper_1.isEnumProperty)(option)) {
142
+ continue;
143
+ }
144
+ const isEnumGenerated = generatedEnumAuditor.has(option.enumName);
145
+ if (isEnumGenerated) {
146
+ continue;
147
+ }
148
+ const content = this.serviceTemplateService.enumTemplate(option);
149
+ contents.push(content);
150
+ generatedEnumAuditor.add(option.enumName);
151
+ }
152
+ return contents.join('\n');
153
+ }
154
+ generateServices() {
155
+ const content = [];
156
+ for (const constructor of microservice_storage_1.microserviceStorage) {
157
+ content.push(this.generateService(constructor, false));
158
+ content.push(this.generateService(constructor, true));
159
+ }
160
+ return content.join('\n');
161
+ }
162
+ generateService(constructor, isMock) {
163
+ const propertyKeys = Object.getOwnPropertyNames(constructor.prototype);
164
+ const methods = propertyKeys
165
+ .map((propertyKey) => this.generateRpcMethod(constructor, propertyKey, isMock))
166
+ .filter((method) => method);
167
+ return this.serviceTemplateService.templateService(constructor.name, methods, isMock);
168
+ }
169
+ generateRpcMethod(constructor, propertyKey, isMock) {
170
+ if (!Reflect.hasMetadata('grpc:method', constructor.prototype, propertyKey)) {
171
+ return;
172
+ }
173
+ const params = Reflect.getMetadata('design:paramtypes', constructor.prototype, propertyKey);
174
+ const parameterIndex = Reflect.getMetadata('grpc:parameter-index', constructor.prototype, propertyKey);
175
+ let parameterName;
176
+ if (!(0, shared_utils_1.isUndefined)(parameterIndex)) {
177
+ parameterName = params[parameterIndex].name;
178
+ }
179
+ const response = Reflect.getMetadata(nestjs_response_1.RESPONSE_METADATA_KEY, constructor.prototype[propertyKey]);
180
+ const methodTemplateService = isMock ? new mock_method_template_service_1.MockMethodTemplateService() : new method_template_service_1.MethodTemplateService();
181
+ const body = methodTemplateService instanceof mock_method_template_service_1.MockMethodTemplateService
182
+ ? methodTemplateService.templateBody(response)
183
+ : methodTemplateService.templateBody(response, constructor.name, propertyKey, parameterName);
184
+ const returnType = this.getReturnType(response);
185
+ return methodTemplateService.methodTemplate(propertyKey, parameterName, returnType, body);
186
+ }
187
+ getReturnType(response) {
188
+ if (response) {
189
+ if (response.isArray) {
190
+ return `${response.responseClass.name}[]`;
191
+ }
192
+ else {
193
+ return response.responseClass.name;
194
+ }
195
+ }
196
+ return 'void';
197
+ }
198
+ }
199
+ exports.GenerateMicroserviceService = GenerateMicroserviceService;
200
+ //# sourceMappingURL=generate-microservice.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-microservice.service.js","sourceRoot":"","sources":["../../../libs/services/generate-microservice.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class GenerateProtoService {
2
+ private packageName;
3
+ private dirPath;
4
+ constructor(packageName: string, dirPath: string);
5
+ generate(): void;
6
+ generateModels(): string;
7
+ generateModel(dto: Function, properties: any): string;
8
+ getProtoType(type: any): string;
9
+ generateMicroservices(): string;
10
+ generateMicroservice(constructor: Function): string;
11
+ generateRpcMethod(constructor: any, propertyKey: string): string;
12
+ }