@hodfords/nestjs-grpc-helper 11.0.0 → 11.1.0

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 (50) hide show
  1. package/README.md +1 -1
  2. package/decorators/property.decorator.js +0 -3
  3. package/decorators/property.decorator.js.map +1 -1
  4. package/helpers/proto-type.helper.js +0 -4
  5. package/helpers/proto-type.helper.js.map +1 -1
  6. package/package.json +8 -7
  7. package/services/generate-document.service.d.ts +2 -1
  8. package/services/generate-document.service.js +7 -20
  9. package/services/generate-document.service.js.map +1 -1
  10. package/services/generate-microservice.service.d.ts +19 -6
  11. package/services/generate-microservice.service.js +14 -16
  12. package/services/generate-microservice.service.js.map +1 -1
  13. package/services/generate-proto.service.d.ts +4 -2
  14. package/services/generate-proto.service.js +24 -28
  15. package/services/generate-proto.service.js.map +1 -1
  16. package/services/hbs-generator.service.d.ts +3 -0
  17. package/services/hbs-generator.service.js +48 -0
  18. package/services/hbs-generator.service.js.map +1 -0
  19. package/services/method-template.service.d.ts +3 -1
  20. package/services/method-template.service.js +13 -40
  21. package/services/method-template.service.js.map +1 -1
  22. package/services/mock-module-template.service.d.ts +2 -1
  23. package/services/mock-module-template.service.js +13 -22
  24. package/services/mock-module-template.service.js.map +1 -1
  25. package/services/module-template.service.d.ts +2 -1
  26. package/services/module-template.service.js +9 -46
  27. package/services/module-template.service.js.map +1 -1
  28. package/services/service-template.service.d.ts +12 -5
  29. package/services/service-template.service.js +28 -55
  30. package/services/service-template.service.js.map +1 -1
  31. package/templates/body-method-template.hbs +21 -0
  32. package/templates/grpc-service-template.hbs +5 -0
  33. package/templates/index-template.hbs +5 -0
  34. package/templates/method-template.hbs +9 -0
  35. package/templates/mock-module-template.hbs +12 -0
  36. package/templates/mock-providers-template.hbs +6 -0
  37. package/templates/module-template.hbs +44 -0
  38. package/templates/proto-service-definition.hbs +6 -0
  39. package/templates/service-interface.hbs +7 -0
  40. package/templates/service-template.hbs +45 -0
  41. package/templates/usage-doc-template.hbs +17 -0
  42. package/frontend/3rdpartylicenses.txt +0 -393
  43. package/frontend/assets/config.json +0 -1
  44. package/frontend/chunk-5FZOKLP6.js +0 -1
  45. package/frontend/chunk-IKVALLPG.js +0 -9
  46. package/frontend/favicon.ico +0 -0
  47. package/frontend/index.html +0 -14
  48. package/frontend/main-GUJBJU47.js +0 -21
  49. package/frontend/polyfills-BJX5WH5B.js +0 -2
  50. package/frontend/styles-GLNRDJWV.css +0 -1
@@ -2,35 +2,26 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MockModuleTemplateService = void 0;
4
4
  const lodash_1 = require("lodash");
5
- class MockModuleTemplateService {
5
+ const hbs_generator_service_1 = require("./hbs-generator.service");
6
+ class MockModuleTemplateService extends hbs_generator_service_1.HbsGeneratorService {
6
7
  constructor(packageName, fileName) {
8
+ super();
7
9
  this.packageName = packageName;
8
10
  this.fileName = fileName;
9
11
  }
10
12
  template(services) {
11
13
  const moduleName = (0, lodash_1.upperFirst)((0, lodash_1.camelCase)(this.packageName));
12
- const providers = services
13
- .map((service) => `{
14
- provide: ${service},
15
- useClass: Mock${service}
16
- }`)
17
- .join(',');
14
+ const providers = this.compileTemplate('mock-providers-template.hbs', { services });
18
15
  const mockServices = services.map((service) => `Mock${service}`);
19
- const importServices = [...services, ...mockServices].join(',');
20
- return `
21
- import { Module, Global } from '@nestjs/common';
22
- import { ${importServices} } from './services/${this.fileName}.service';
23
-
24
- @Global()
25
- @Module({
26
- providers: [
27
- ${providers}
28
- ],
29
- exports: [${services.join(',')}]
30
- })
31
- export class Mock${moduleName}Module {
32
- }
33
- `;
16
+ const importServices = [...services, ...mockServices];
17
+ return this.compileTemplate('mock-module-template.hbs', {
18
+ moduleName,
19
+ providers,
20
+ importServices,
21
+ packageName: this.packageName,
22
+ services,
23
+ fileName: this.fileName
24
+ });
34
25
  }
35
26
  }
36
27
  exports.MockModuleTemplateService = MockModuleTemplateService;
@@ -1 +1 @@
1
- {"version":3,"file":"mock-module-template.service.js","sourceRoot":"","sources":["../../../lib/services/mock-module-template.service.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C,MAAa,yBAAyB;IAClC,YACY,WAAmB,EACnB,QAAgB;QADhB,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IACzB,CAAC;IAEJ,QAAQ,CAAC,QAAkB;QACvB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,QAAQ;aACrB,GAAG,CACA,CAAC,OAAO,EAAE,EAAE,CAAC;+BACE,OAAO;oCACF,OAAO;kBACzB,CACL;aACA,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhE,OAAO;;mBAEI,cAAc,uBAAuB,IAAI,CAAC,QAAQ;;;;;kBAKnD,SAAS;;wBAEH,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;2BAEf,UAAU;;SAE5B,CAAC;IACN,CAAC;CACJ;AAlCD,8DAkCC"}
1
+ {"version":3,"file":"mock-module-template.service.js","sourceRoot":"","sources":["../../../lib/services/mock-module-template.service.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAC/C,mEAA8D;AAE9D,MAAa,yBAA0B,SAAQ,2CAAmB;IAC9D,YACY,WAAmB,EACnB,QAAgB;QAExB,KAAK,EAAE,CAAC;QAHA,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IAG5B,CAAC;IAED,QAAQ,CAAC,QAAkB;QACvB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,6BAA6B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAC,eAAe,CAAC,0BAA0B,EAAE;YACpD,UAAU;YACV,SAAS;YACT,cAAc;YACd,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACP,CAAC;CACJ;AAvBD,8DAuBC"}
@@ -1,4 +1,5 @@
1
- export declare class ModuleTemplateService {
1
+ import { HbsGeneratorService } from './hbs-generator.service';
2
+ export declare class ModuleTemplateService extends HbsGeneratorService {
2
3
  private packageName;
3
4
  private fileName;
4
5
  constructor(packageName: string, fileName: string);
@@ -2,58 +2,21 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModuleTemplateService = void 0;
4
4
  const lodash_1 = require("lodash");
5
- class ModuleTemplateService {
5
+ const hbs_generator_service_1 = require("./hbs-generator.service");
6
+ class ModuleTemplateService extends hbs_generator_service_1.HbsGeneratorService {
6
7
  constructor(packageName, fileName) {
8
+ super();
7
9
  this.packageName = packageName;
8
10
  this.fileName = fileName;
9
11
  }
10
12
  template(services) {
11
13
  const moduleName = (0, lodash_1.upperFirst)((0, lodash_1.camelCase)(this.packageName));
12
- return `
13
- import { DynamicModule, Module, Global } from '@nestjs/common';
14
- import { ClientsModule } from '@nestjs/microservices';
15
- import path from 'path';
16
- import { MicroserviceModuleOptionType } from './types/microservice-option.type';
17
- import { ${services.join(',')} } from './services/${this.fileName}.service';
18
- import { CustomGrpcClient } from '@hodfords/nestjs-grpc-helper';
19
- import * as grpc from '@grpc/grpc-js';
20
-
21
- @Global()
22
- @Module({})
23
- export class ${moduleName}Module {
24
- static register(options: MicroserviceModuleOptionType): DynamicModule {
25
- return {
26
- module: ${moduleName}Module,
27
- providers: [
28
- ${services.join(',')},
29
- {
30
- provide: '${this.packageName}_OPTIONS',
31
- useValue: options
32
- }
33
- ],
34
- exports: [${services.join(',')}],
35
- imports: [
36
- ClientsModule.register([
37
- {
38
- name: '${this.packageName}_PACKAGE',
39
- customClass: CustomGrpcClient,
40
- options: {
41
- url: options.url,
42
- package: '${this.packageName}',
43
- protoPath: path.join(__dirname, 'microservice.proto'),
44
- credentials: options.ssl ? grpc.credentials.createSsl() : undefined,
45
- maxReceiveMessageLength: options.maxReceiveMessageLength ?? 4 * 1024 * 1024,
46
- loader: {
47
- arrays: options.shouldLoadEmptyArray ?? false
48
- }
49
- }
50
- }
51
- ])
52
- ]
53
- };
54
- }
55
- }
56
- `;
14
+ return this.compileTemplate('module-template.hbs', {
15
+ moduleName,
16
+ services,
17
+ packageName: this.packageName,
18
+ fileName: this.fileName
19
+ });
57
20
  }
58
21
  }
59
22
  exports.ModuleTemplateService = ModuleTemplateService;
@@ -1 +1 @@
1
- {"version":3,"file":"module-template.service.js","sourceRoot":"","sources":["../../../lib/services/module-template.service.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAE/C,MAAa,qBAAqB;IAC9B,YACY,WAAmB,EACnB,QAAgB;QADhB,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IACzB,CAAC;IAEJ,QAAQ,CAAC,QAAkB;QACvB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,OAAO;;;;;mBAKI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,QAAQ;;;;;;uBAMlD,UAAU;;;8BAGH,UAAU;;0BAEd,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;wCAEJ,IAAI,CAAC,WAAW;;;;gCAIxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;;;;yCAIT,IAAI,CAAC,WAAW;;;;gDAIT,IAAI,CAAC,WAAW;;;;;;;;;;;;;;SAcvD,CAAC;IACN,CAAC;CACJ;AAtDD,sDAsDC"}
1
+ {"version":3,"file":"module-template.service.js","sourceRoot":"","sources":["../../../lib/services/module-template.service.ts"],"names":[],"mappings":";;;AAAA,mCAA+C;AAC/C,mEAA8D;AAE9D,MAAa,qBAAsB,SAAQ,2CAAmB;IAC1D,YACY,WAAmB,EACnB,QAAgB;QAExB,KAAK,EAAE,CAAC;QAHA,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IAG5B,CAAC;IAED,QAAQ,CAAC,QAAkB;QACvB,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,IAAA,kBAAS,EAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,EAAE;YAC/C,UAAU;YACV,QAAQ;YACR,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACP,CAAC;CACJ;AAjBD,sDAiBC"}
@@ -1,10 +1,17 @@
1
1
  import { ApiPropertyOptions } from '@nestjs/swagger';
2
- export declare class ServiceTemplateService {
2
+ import { HbsGeneratorService } from './hbs-generator.service';
3
+ export declare class ServiceTemplateService extends HbsGeneratorService {
3
4
  private packageName;
4
5
  constructor(packageName: string);
5
- templateServiceAndModel(serviceContent: string, modelContent: string, enumContent: string): string;
6
- templateService(serviceName: string, method: string[], isMock: boolean): string;
7
- modelTemplate(name: string, properties: string[], parentClass: Function): string;
8
- enumTemplate(options: ApiPropertyOptions): string;
6
+ templateServiceAndModel(serviceContent: any, modelContent: any, enumContent: any): string;
7
+ modelTemplate(name: string, properties: string[], parentClass: Function): {
8
+ name: string;
9
+ properties: string[];
10
+ extendClass: string;
11
+ };
12
+ enumTemplate(options: ApiPropertyOptions): {
13
+ enumName: string;
14
+ keys: string[];
15
+ };
9
16
  propertyTemplate(property: any, type: string): string;
10
17
  }
@@ -3,87 +3,60 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServiceTemplateService = void 0;
4
4
  const shared_utils_1 = require("@nestjs/common/utils/shared.utils");
5
5
  const api_property_helper_1 = require("../helpers/api-property.helper");
6
- class ServiceTemplateService {
6
+ const hbs_generator_service_1 = require("./hbs-generator.service");
7
+ class ServiceTemplateService extends hbs_generator_service_1.HbsGeneratorService {
7
8
  constructor(packageName) {
9
+ super();
8
10
  this.packageName = packageName;
9
11
  }
10
12
  templateServiceAndModel(serviceContent, modelContent, enumContent) {
11
- return `
12
- import { GrpcHelper } from '../helpers/grpc.helper';
13
- import { Inject, Injectable } from '@nestjs/common';
14
- import { ClientGrpc } from '@nestjs/microservices';
15
- import { MicroserviceModuleOptionType } from '../types/microservice-option.type';
16
- import { Type } from 'class-transformer';
17
- import { Property, sample, AnyType } from '@hodfords/nestjs-grpc-helper';
18
-
19
- ${enumContent}
20
-
21
- ${modelContent}
22
-
23
- ${serviceContent}
24
- `;
25
- }
26
- templateService(serviceName, method, isMock) {
27
- if (isMock) {
28
- return `
29
- export class Mock${serviceName} {
30
- ${method.join('\n')}
31
- }
32
- `;
33
- }
34
- return `
35
- @Injectable()
36
- export class ${serviceName} {
37
- constructor(
38
- @Inject('${this.packageName}_PACKAGE') private client: ClientGrpc,
39
- @Inject('${this.packageName}_OPTIONS') private options: MicroserviceModuleOptionType
40
- ) {}
41
- ${method.join('\n')}
42
- }
43
- `;
13
+ const data = {
14
+ enumContent,
15
+ modelContent,
16
+ serviceContent
17
+ };
18
+ return this.compileTemplate('./service-template.hbs', data);
44
19
  }
45
20
  modelTemplate(name, properties, parentClass) {
46
21
  let extendClass = '';
47
22
  if (parentClass.name) {
48
23
  extendClass = `extends ${parentClass.name}`;
49
24
  }
50
- return `
51
- export class ${name} ${extendClass} {
52
- ${properties.join('\n')}
53
- }
54
- `;
25
+ return { name, properties, extendClass };
55
26
  }
56
27
  enumTemplate(options) {
57
28
  const { enum: properties, enumName, type } = options;
58
29
  const valueFormatter = (value) => (type === 'string' ? `'${value}'` : value);
59
- return `
60
- export enum ${enumName} {
61
- ${Object.keys(properties)
62
- .filter((key) => !parseInt(key))
63
- .map((key) => `${key} = ${valueFormatter(properties[key])}`)
64
- .join(',\n')}
65
- }
66
- `;
30
+ return {
31
+ enumName,
32
+ keys: Object.keys(properties)
33
+ .filter((key) => !parseInt(key))
34
+ .map((key) => `${key} = ${valueFormatter(properties[key])}`)
35
+ };
67
36
  }
68
37
  propertyTemplate(property, type) {
69
- const isPrimitiveType = ['object', 'string', 'number', 'bool', 'boolean', 'any'].includes(type);
70
- const isEnumType = (0, api_property_helper_1.isEnumProperty)(property.option);
38
+ const options = { ...property.option, isAutoGenerated: true };
39
+ const isPrimitiveType = ['object', 'string', 'number', 'bool', 'boolean'].includes(type);
40
+ const isAnyType = type === 'string' && options.format === 'any';
41
+ const isEnumType = (0, api_property_helper_1.isEnumProperty)(options);
71
42
  const isNestedType = !isPrimitiveType && !isEnumType;
72
43
  let propertyType = '';
73
44
  if (isNestedType) {
74
- propertyType = `ReturnType<() => ${type} ${property.option.isArray ? '[]' : ''}>`;
45
+ propertyType = `ReturnType<() => ${type} ${options.isArray ? '[]' : ''}>`;
46
+ }
47
+ else if (isAnyType) {
48
+ propertyType = `any ${options.isArray ? '[]' : ''}`;
75
49
  }
76
50
  else {
77
- propertyType = `${type} ${property.option.isArray ? '[]' : ''}`;
51
+ propertyType = `${type} ${options.isArray ? '[]' : ''}`;
78
52
  }
79
- const propertyName = `${property.name}${property.option.required === false ? '?' : ''}: ${propertyType}`;
53
+ const propertyName = `${property.name}${options.required === false ? '?' : ''}: ${propertyType}`;
80
54
  let typeDecorator = '';
81
55
  if (isNestedType) {
82
56
  typeDecorator = `@Type(() => ${type})`;
83
57
  }
84
- const options = { ...property.option, isAutoGenerated: true };
85
58
  let propertyOption = JSON.stringify(options);
86
- if ((0, shared_utils_1.isFunction)(property.option.type)) {
59
+ if ((0, shared_utils_1.isFunction)(options.type)) {
87
60
  if (isNestedType) {
88
61
  propertyOption = JSON.stringify({ ...options, type: type }).replaceAll(`"type":"${type}"`, `"type": () => ${type}`);
89
62
  }
@@ -94,7 +67,7 @@ class ServiceTemplateService {
94
67
  let propertyDecorator = `
95
68
  @Property(${propertyOption})
96
69
  `;
97
- if (type === 'any') {
70
+ if (isAnyType) {
98
71
  propertyDecorator += `
99
72
  @AnyType()
100
73
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"service-template.service.js","sourceRoot":"","sources":["../../../lib/services/service-template.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-template.service.js","sourceRoot":"","sources":["../../../lib/services/service-template.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ {{#if response}}
2
+ {{#if response.isArray}}
3
+ return await GrpcHelper.with(this.client, {{{response.responseClass.name}}}, this.options)
4
+ .service('{{{serviceName}}}')
5
+ .method('{{{method}}}')
6
+ .data({{#if parameterName}}param{{else}}{}{{/if}}{{#if parameterType}}, {{{parameterType}}}{{/if}})
7
+ .getMany();
8
+ {{else}}
9
+ return await GrpcHelper.with(this.client, {{{response.responseClass.name}}}, this.options)
10
+ .service('{{{serviceName}}}')
11
+ .method('{{{method}}}')
12
+ .data({{#if parameterName}}param{{else}}{}{{/if}}{{#if parameterType}}, {{{parameterType}}}{{/if}})
13
+ .getOne();
14
+ {{/if}}
15
+ {{else}}
16
+ await GrpcHelper.with(this.client, null as any, this.options)
17
+ .service('{{{serviceName}}}')
18
+ .method('{{{method}}}')
19
+ .data({{#if parameterName}}param{{else}}{}{{/if}}{{#if parameterType}}, {{{parameterType}}}{{/if}})
20
+ .getMany();
21
+ {{/if}}
@@ -0,0 +1,5 @@
1
+ service {{name}} {
2
+ {{#each rpcMethods}}
3
+ {{this}}
4
+ {{/each}}
5
+ }
@@ -0,0 +1,5 @@
1
+ export * from './helpers/grpc.helper'
2
+ export * from './{{{ fileName }}}.module'
3
+ export * from './/{{{ fileName }}}.mock.module'
4
+ export * from './services/{{{ fileName }}}.service';
5
+ export * from './types/microservice-option.type';
@@ -0,0 +1,9 @@
1
+ {{#if params}}
2
+ async {{method}}(param: {{params}}): Promise<{{returnType}}> {
3
+ {{{body}}}
4
+ }
5
+ {{else}}
6
+ async {{method}}(): Promise<{{returnType}}> {
7
+ {{{body}}}
8
+ }
9
+ {{/if}}
@@ -0,0 +1,12 @@
1
+ import { Module, Global } from '@nestjs/common';
2
+ import { {{#each importServices}}{{this}}{{#unless @last}},{{/unless}}{{/each}} } from './services/{{fileName}}.service';
3
+
4
+ @Global()
5
+ @Module({
6
+ providers: [
7
+ {{providers}}
8
+ ],
9
+ exports: [{{#each services}}{{this}}{{#unless @last}},{{/unless}}{{/each}}]
10
+ })
11
+ export class Mock{{moduleName}}Module {
12
+ }
@@ -0,0 +1,6 @@
1
+ {{#each services}}
2
+ {
3
+ provide: {{this}},
4
+ useClass: Mock{{this}}
5
+ }{{#unless @last}},{{/unless}}
6
+ {{/each}}
@@ -0,0 +1,44 @@
1
+ import { DynamicModule, Module, Global } from '@nestjs/common';
2
+ import { ClientsModule } from '@nestjs/microservices';
3
+ import path from 'path';
4
+ import { MicroserviceModuleOptionType } from './types/microservice-option.type';
5
+ import { {{#each services}}{{this}}{{#unless @last}},{{/unless}}{{/each}} } from './services/{{fileName}}.service';
6
+ import { CustomGrpcClient } from '@hodfords/nestjs-grpc-helper';
7
+ import * as grpc from '@grpc/grpc-js';
8
+
9
+
10
+ @Global()
11
+ @Module({})
12
+ export class {{moduleName}}Module {
13
+ static register(options: MicroserviceModuleOptionType): DynamicModule {
14
+ return {
15
+ module: {{moduleName}}Module,
16
+ providers: [
17
+ {{#each services}}{{this}}{{#unless @last}},{{/unless}}{{/each}},
18
+ {
19
+ provide: '{{packageName}}_OPTIONS',
20
+ useValue: options
21
+ }
22
+ ],
23
+ exports: [{{#each services}}{{this}}{{#unless @last}},{{/unless}}{{/each}}],
24
+ imports: [
25
+ ClientsModule.register([
26
+ {
27
+ name: '{{packageName}}_PACKAGE',
28
+ customClass: CustomGrpcClient,
29
+ options: {
30
+ url: options.url,
31
+ package: '{{packageName}}',
32
+ protoPath: path.join(__dirname, 'microservice.proto'),
33
+ credentials: options.ssl ? grpc.credentials.createSsl() : undefined,
34
+ maxReceiveMessageLength: options.maxReceiveMessageLength ?? 4 * 1024 * 1024,
35
+ loader: {
36
+ arrays: options.shouldLoadEmptyArray ?? false
37
+ }
38
+ }
39
+ }
40
+ ])
41
+ ]
42
+ };
43
+ }
44
+ }
@@ -0,0 +1,6 @@
1
+ syntax = "proto3";
2
+ import "google/protobuf/empty.proto";
3
+ package {{packageName}};
4
+
5
+ {{{ microserviceContent}}}
6
+ {{{ modelContent }}}
@@ -0,0 +1,7 @@
1
+ message {{{name}}} {
2
+ {{{propertyContent}}}
3
+ }
4
+ message Proto{{{name}}}List {
5
+ repeated {{{name}}} items = 1;
6
+ bool grpcArray = 2;
7
+ }
@@ -0,0 +1,45 @@
1
+ import { GrpcHelper } from '../helpers/grpc.helper';
2
+ import { Inject, Injectable } from '@nestjs/common';
3
+ import { ClientGrpc } from '@nestjs/microservices';
4
+ import { MicroserviceModuleOptionType } from '../types/microservice-option.type';
5
+ import { Type } from 'class-transformer';
6
+ import { Property, AnyType, sample } from '@hodfords/nestjs-grpc-helper';
7
+
8
+ {{#each serviceContent}}
9
+ {{#if isMock}}
10
+ export class Mock{{ serviceName }} {
11
+ {{#each methods}}
12
+ {{{this}}}
13
+ {{/each}}
14
+ }
15
+ {{else}}
16
+ @Injectable()
17
+ export class {{ serviceName }} {
18
+ constructor(
19
+ @Inject('{{ ../packageName }}_PACKAGE') private client: ClientGrpc,
20
+ @Inject('{{ ../packageName }}_OPTIONS') private options: MicroserviceModuleOptionType
21
+ ) {}
22
+
23
+ {{#each methods}}
24
+ {{{this}}}
25
+ {{/each}}
26
+ }
27
+ {{/if}}
28
+ {{/each}}
29
+
30
+ {{#each modelContent}}
31
+ export class {{ name }} {
32
+ {{#each properties}}
33
+ {{{this}}}
34
+ {{/each}}
35
+ }
36
+ {{/each}}
37
+
38
+
39
+ {{#each enumContent}}
40
+ export enum {{ enumName }} {
41
+ {{#each keys}}
42
+ {{{this}}},
43
+ {{/each}}
44
+ }
45
+ {{/each}}
@@ -0,0 +1,17 @@
1
+ // Import module
2
+
3
+ {{moduleName}}Module.register({
4
+ timeout: 5000,
5
+ url: 'localhost:50051'
6
+ })
7
+
8
+ // Use in service
9
+ export class ExampleService {
10
+ constructor(private {{packageName}}Microservice: {{moduleName}}Microservice) {
11
+
12
+ }
13
+
14
+ findOne() {
15
+ return this.{{packageName}}Microservice.findOne({ id: 1 });
16
+ }
17
+ }