@nmxjs/api 1.0.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 (102) hide show
  1. package/.github/workflows/npm.yaml +31 -0
  2. package/README.md +1 -0
  3. package/dist/ApiRouterCore/ApiRouteCoreModule.d.ts +5 -0
  4. package/dist/ApiRouterCore/ApiRouteCoreModule.js +41 -0
  5. package/dist/ApiRouterCore/ApiRouteCoreModule.js.map +1 -0
  6. package/dist/ApiRouterCore/constants/apiRouterKey.d.ts +1 -0
  7. package/dist/ApiRouterCore/constants/apiRouterKey.js +5 -0
  8. package/dist/ApiRouterCore/constants/apiRouterKey.js.map +1 -0
  9. package/dist/ApiRouterCore/constants/endErrorText.d.ts +1 -0
  10. package/dist/ApiRouterCore/constants/endErrorText.js +5 -0
  11. package/dist/ApiRouterCore/constants/endErrorText.js.map +1 -0
  12. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.d.ts +1 -0
  13. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.js +5 -0
  14. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.js.map +1 -0
  15. package/dist/ApiRouterCore/constants/index.d.ts +3 -0
  16. package/dist/ApiRouterCore/constants/index.js +20 -0
  17. package/dist/ApiRouterCore/constants/index.js.map +1 -0
  18. package/dist/ApiRouterCore/decorators/ControllerEndpoints.d.ts +1 -0
  19. package/dist/ApiRouterCore/decorators/ControllerEndpoints.js +19 -0
  20. package/dist/ApiRouterCore/decorators/ControllerEndpoints.js.map +1 -0
  21. package/dist/ApiRouterCore/decorators/index.d.ts +1 -0
  22. package/dist/ApiRouterCore/decorators/index.js +18 -0
  23. package/dist/ApiRouterCore/decorators/index.js.map +1 -0
  24. package/dist/ApiRouterCore/index.d.ts +5 -0
  25. package/dist/ApiRouterCore/index.js +22 -0
  26. package/dist/ApiRouterCore/index.js.map +1 -0
  27. package/dist/ApiRouterCore/interfaces/GetGrpcOptions.d.ts +2 -0
  28. package/dist/ApiRouterCore/interfaces/GetGrpcOptions.js +3 -0
  29. package/dist/ApiRouterCore/interfaces/GetGrpcOptions.js.map +1 -0
  30. package/dist/ApiRouterCore/interfaces/IApiRouterCoreModuleOptions.d.ts +5 -0
  31. package/dist/ApiRouterCore/interfaces/IApiRouterCoreModuleOptions.js +3 -0
  32. package/dist/ApiRouterCore/interfaces/IApiRouterCoreModuleOptions.js.map +1 -0
  33. package/dist/ApiRouterCore/interfaces/IBuildGrpcOptions.d.ts +6 -0
  34. package/dist/ApiRouterCore/interfaces/IBuildGrpcOptions.js +3 -0
  35. package/dist/ApiRouterCore/interfaces/IBuildGrpcOptions.js.map +1 -0
  36. package/dist/ApiRouterCore/interfaces/index.d.ts +3 -0
  37. package/dist/ApiRouterCore/interfaces/index.js +20 -0
  38. package/dist/ApiRouterCore/interfaces/index.js.map +1 -0
  39. package/dist/ApiRouterCore/utils/RpcExceptionInterceptor.d.ts +4 -0
  40. package/dist/ApiRouterCore/utils/RpcExceptionInterceptor.js +44 -0
  41. package/dist/ApiRouterCore/utils/RpcExceptionInterceptor.js.map +1 -0
  42. package/dist/ApiRouterCore/utils/buildGrpcOptions.d.ts +3 -0
  43. package/dist/ApiRouterCore/utils/buildGrpcOptions.js +29 -0
  44. package/dist/ApiRouterCore/utils/buildGrpcOptions.js.map +1 -0
  45. package/dist/ApiRouterCore/utils/index.d.ts +2 -0
  46. package/dist/ApiRouterCore/utils/index.js +19 -0
  47. package/dist/ApiRouterCore/utils/index.js.map +1 -0
  48. package/dist/ApiService/ApiServiceModule.d.ts +2 -0
  49. package/dist/ApiService/ApiServiceModule.js +32 -0
  50. package/dist/ApiService/ApiServiceModule.js.map +1 -0
  51. package/dist/ApiService/constants/apiServiceFactoryKey.d.ts +1 -0
  52. package/dist/ApiService/constants/apiServiceFactoryKey.js +5 -0
  53. package/dist/ApiService/constants/apiServiceFactoryKey.js.map +1 -0
  54. package/dist/ApiService/constants/index.d.ts +1 -0
  55. package/dist/ApiService/constants/index.js +18 -0
  56. package/dist/ApiService/constants/index.js.map +1 -0
  57. package/dist/ApiService/index.d.ts +3 -0
  58. package/dist/ApiService/index.js +20 -0
  59. package/dist/ApiService/index.js.map +1 -0
  60. package/dist/ApiService/interfaces/IApiSchema.d.ts +4 -0
  61. package/dist/ApiService/interfaces/IApiSchema.js +3 -0
  62. package/dist/ApiService/interfaces/IApiSchema.js.map +1 -0
  63. package/dist/ApiService/interfaces/IApiService.d.ts +4 -0
  64. package/dist/ApiService/interfaces/IApiService.js +3 -0
  65. package/dist/ApiService/interfaces/IApiService.js.map +1 -0
  66. package/dist/ApiService/interfaces/IApiServiceFactory.d.ts +6 -0
  67. package/dist/ApiService/interfaces/IApiServiceFactory.js +3 -0
  68. package/dist/ApiService/interfaces/IApiServiceFactory.js.map +1 -0
  69. package/dist/ApiService/interfaces/IApiServiceWithInfo.d.ts +10 -0
  70. package/dist/ApiService/interfaces/IApiServiceWithInfo.js +3 -0
  71. package/dist/ApiService/interfaces/IApiServiceWithInfo.js.map +1 -0
  72. package/dist/ApiService/interfaces/ICreateApiServiceOptions.d.ts +6 -0
  73. package/dist/ApiService/interfaces/ICreateApiServiceOptions.js +3 -0
  74. package/dist/ApiService/interfaces/ICreateApiServiceOptions.js.map +1 -0
  75. package/dist/ApiService/interfaces/IGenerateProtoMessagesOptions.d.ts +4 -0
  76. package/dist/ApiService/interfaces/IGenerateProtoMessagesOptions.js +3 -0
  77. package/dist/ApiService/interfaces/IGenerateProtoMessagesOptions.js.map +1 -0
  78. package/dist/ApiService/interfaces/IGenerateProtoOptions.d.ts +5 -0
  79. package/dist/ApiService/interfaces/IGenerateProtoOptions.js +3 -0
  80. package/dist/ApiService/interfaces/IGenerateProtoOptions.js.map +1 -0
  81. package/dist/ApiService/interfaces/index.d.ts +6 -0
  82. package/dist/ApiService/interfaces/index.js +23 -0
  83. package/dist/ApiService/interfaces/index.js.map +1 -0
  84. package/dist/ApiService/services/CreateApiService.d.ts +9 -0
  85. package/dist/ApiService/services/CreateApiService.js +56 -0
  86. package/dist/ApiService/services/CreateApiService.js.map +1 -0
  87. package/dist/ApiService/services/GenerateProtoMessagesService.d.ts +4 -0
  88. package/dist/ApiService/services/GenerateProtoMessagesService.js +56 -0
  89. package/dist/ApiService/services/GenerateProtoMessagesService.js.map +1 -0
  90. package/dist/ApiService/services/GenerateProtoService.d.ts +15 -0
  91. package/dist/ApiService/services/GenerateProtoService.js +72 -0
  92. package/dist/ApiService/services/GenerateProtoService.js.map +1 -0
  93. package/dist/ApiService/services/GetPackageNameService.d.ts +3 -0
  94. package/dist/ApiService/services/GetPackageNameService.js +23 -0
  95. package/dist/ApiService/services/GetPackageNameService.js.map +1 -0
  96. package/dist/ApiService/services/index.d.ts +4 -0
  97. package/dist/ApiService/services/index.js +21 -0
  98. package/dist/ApiService/services/index.js.map +1 -0
  99. package/dist/index.d.ts +2 -0
  100. package/dist/index.js +19 -0
  101. package/dist/index.js.map +1 -0
  102. package/package.json +33 -0
@@ -0,0 +1,10 @@
1
+ import { IApiService } from './IApiService';
2
+ export interface IApiServiceWithInfo<T extends IApiService<any> = IApiService<any>> {
3
+ port: number;
4
+ host?: string;
5
+ protoPath: string;
6
+ package: string;
7
+ serviceName: string;
8
+ subServiceName?: string;
9
+ service: T;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IApiServiceWithInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IApiServiceWithInfo.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/IApiServiceWithInfo.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IApiSchema } from './IApiSchema';
2
+ export interface ICreateApiServiceOptions {
3
+ service: string;
4
+ schema: IApiSchema;
5
+ subService?: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ICreateApiServiceOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICreateApiServiceOptions.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/ICreateApiServiceOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export interface IGenerateProtoMessagesOptions {
2
+ messageName: string;
3
+ objSchema: object;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IGenerateProtoMessagesOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IGenerateProtoMessagesOptions.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/IGenerateProtoMessagesOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { IApiSchema } from './IApiSchema';
2
+ export interface IGenerateProtoOptions {
3
+ serviceName: string;
4
+ schema: IApiSchema;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IGenerateProtoOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IGenerateProtoOptions.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/IGenerateProtoOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './IApiSchema';
2
+ export * from './IApiService';
3
+ export * from './IApiServiceFactory';
4
+ export * from './IGenerateProtoOptions';
5
+ export * from './ICreateApiServiceOptions';
6
+ export * from './IApiServiceWithInfo';
@@ -0,0 +1,23 @@
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("./IApiSchema"), exports);
18
+ __exportStar(require("./IApiService"), exports);
19
+ __exportStar(require("./IApiServiceFactory"), exports);
20
+ __exportStar(require("./IGenerateProtoOptions"), exports);
21
+ __exportStar(require("./ICreateApiServiceOptions"), exports);
22
+ __exportStar(require("./IApiServiceWithInfo"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,gDAA8B;AAC9B,uDAAqC;AACrC,0DAAwC;AACxC,6DAA2C;AAC3C,wDAAsC"}
@@ -0,0 +1,9 @@
1
+ import { IConfig } from '@nmxjs/config';
2
+ import { GenerateProtoService } from './GenerateProtoService';
3
+ import { ICreateApiServiceOptions, IApiServiceWithInfo } from '../interfaces';
4
+ export declare class CreateApiService {
5
+ protected readonly config: IConfig;
6
+ protected readonly generateProtoService: GenerateProtoService;
7
+ constructor(config: IConfig, generateProtoService: GenerateProtoService);
8
+ call({ schema, service, subService }: ICreateApiServiceOptions): IApiServiceWithInfo;
9
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.CreateApiService = void 0;
16
+ const microservices_1 = require("@nestjs/microservices");
17
+ const common_1 = require("@nestjs/common");
18
+ const config_1 = require("@nmxjs/config");
19
+ const utils_1 = require("../../ApiRouterCore/utils");
20
+ const GenerateProtoService_1 = require("./GenerateProtoService");
21
+ let CreateApiService = class CreateApiService {
22
+ constructor(config, generateProtoService) {
23
+ this.config = config;
24
+ this.generateProtoService = generateProtoService;
25
+ }
26
+ call({ schema, service, subService }) {
27
+ var _a;
28
+ const serviceInfo = (_a = this.config.grpc) === null || _a === void 0 ? void 0 : _a.services.find(v => v.name === service);
29
+ if (!serviceInfo) {
30
+ return;
31
+ }
32
+ const serviceName = subService || service;
33
+ const { protoPath, packageName, protoServiceName } = this.generateProtoService.call({ schema, service: serviceName });
34
+ return {
35
+ serviceName: service,
36
+ subServiceName: subService,
37
+ port: serviceInfo.port,
38
+ host: serviceInfo.host,
39
+ package: packageName,
40
+ protoPath: protoPath,
41
+ service: microservices_1.ClientProxyFactory.create((0, utils_1.buildGrpcOptions)({
42
+ port: serviceInfo.port,
43
+ host: serviceInfo.host,
44
+ packages: [packageName],
45
+ protoPaths: [protoPath],
46
+ })).getService(protoServiceName),
47
+ };
48
+ }
49
+ };
50
+ exports.CreateApiService = CreateApiService;
51
+ exports.CreateApiService = CreateApiService = __decorate([
52
+ (0, common_1.Injectable)(),
53
+ __param(0, (0, common_1.Inject)(config_1.configKey)),
54
+ __metadata("design:paramtypes", [Object, GenerateProtoService_1.GenerateProtoService])
55
+ ], CreateApiService);
56
+ //# sourceMappingURL=CreateApiService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateApiService.js","sourceRoot":"","sources":["../../../src/ApiService/services/CreateApiService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAuE;AACvE,2CAAoD;AACpD,0CAAmD;AACnD,qDAA6D;AAC7D,iEAA8D;AAIvD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAAkD,MAAe,EAAqB,oBAA0C;QAA9E,WAAM,GAAN,MAAM,CAAS;QAAqB,yBAAoB,GAApB,oBAAoB,CAAsB;IAAG,CAAC;IAE7H,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAA4B;;QACnE,MAAM,WAAW,GAAG,MAAA,IAAI,CAAC,MAAM,CAAC,IAAI,0CAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QAE7E,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,GAAG,UAAU,IAAI,OAAO,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtH,OAAO;YACL,WAAW,EAAE,OAAO;YACpB,cAAc,EAAE,UAAU;YAC1B,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,SAAS;YACpB,OAAO,EACL,kCAAkB,CAAC,MAAM,CACvB,IAAA,wBAAgB,EAAC;gBACf,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,QAAQ,EAAE,CAAC,WAAW,CAAC;gBACvB,UAAU,EAAE,CAAC,SAAS,CAAC;aACxB,CAAC,CAEL,CAAC,UAAU,CAAC,gBAAgB,CAAC;SAC/B,CAAC;IACJ,CAAC;CACF,CAAA;AAhCY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,kBAAS,CAAC,CAAA;6CAA8E,2CAAoB;GADrH,gBAAgB,CAgC5B"}
@@ -0,0 +1,4 @@
1
+ import { IGenerateProtoMessagesOptions } from '../interfaces/IGenerateProtoMessagesOptions';
2
+ export declare class GenerateProtoMessagesService {
3
+ call({ messageName, objSchema }: IGenerateProtoMessagesOptions): string[];
4
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GenerateProtoMessagesService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let GenerateProtoMessagesService = class GenerateProtoMessagesService {
12
+ call({ messageName, objSchema }) {
13
+ if (!objSchema) {
14
+ return [`message ${messageName} {}\n\n`];
15
+ }
16
+ const fieldsResult = [`message ${messageName} {\n`];
17
+ const nestedResult = [];
18
+ const metaDataFields = Reflect.getMetadataKeys(objSchema).filter(v => v.includes('field:'));
19
+ metaDataFields.forEach((metaDataField, i) => {
20
+ const [, fieldName] = metaDataField.split(':');
21
+ const fieldData = Reflect.getMetadata(metaDataField, objSchema);
22
+ let fieldStr = ' ';
23
+ if (fieldData.array) {
24
+ fieldStr += `repeated `;
25
+ }
26
+ if (fieldData.type === String || fieldData.enum) {
27
+ fieldStr += `string `;
28
+ }
29
+ else if (fieldData.type === Number) {
30
+ fieldStr += `float `;
31
+ }
32
+ else if (fieldData.type === Boolean) {
33
+ fieldStr += `bool `;
34
+ }
35
+ else if (fieldData.type === Object) {
36
+ fieldStr += `google.protobuf.Struct `;
37
+ }
38
+ else {
39
+ fieldStr += `${fieldData.type.name} `;
40
+ nestedResult.push(...this.call({
41
+ messageName: fieldData.type.name,
42
+ objSchema: fieldData.type,
43
+ }));
44
+ }
45
+ fieldStr += `${fieldName} = ${i + 1};\n`;
46
+ fieldsResult.push(fieldStr);
47
+ });
48
+ fieldsResult.push('}\n\n');
49
+ return [...fieldsResult.join(''), ...nestedResult];
50
+ }
51
+ };
52
+ exports.GenerateProtoMessagesService = GenerateProtoMessagesService;
53
+ exports.GenerateProtoMessagesService = GenerateProtoMessagesService = __decorate([
54
+ (0, common_1.Injectable)()
55
+ ], GenerateProtoMessagesService);
56
+ //# sourceMappingURL=GenerateProtoMessagesService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateProtoMessagesService.js","sourceRoot":"","sources":["../../../src/ApiService/services/GenerateProtoMessagesService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAIrC,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IAChC,IAAI,CAAC,EAAE,WAAW,EAAE,SAAS,EAAiC;QACnE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,WAAW,WAAW,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,YAAY,GAAa,CAAC,WAAW,WAAW,MAAM,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,MAAM,cAAc,GAAa,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtG,cAAc,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAChE,IAAI,QAAQ,GAAG,MAAM,CAAC;YAEtB,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,QAAQ,IAAI,WAAW,CAAC;YAC1B,CAAC;YAED,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBAChD,QAAQ,IAAI,SAAS,CAAC;YACxB,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrC,QAAQ,IAAI,QAAQ,CAAC;YACvB,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACtC,QAAQ,IAAI,OAAO,CAAC;YACtB,CAAC;iBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrC,QAAQ,IAAI,yBAAyB,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,QAAQ,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;gBACtC,YAAY,CAAC,IAAI,CACf,GAAG,IAAI,CAAC,IAAI,CAAC;oBACX,WAAW,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI;oBAChC,SAAS,EAAE,SAAS,CAAC,IAAI;iBAC1B,CAAC,CACH,CAAC;YACJ,CAAC;YAED,QAAQ,IAAI,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;YAEzC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE3B,OAAO,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AA/CY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;GACA,4BAA4B,CA+CxC"}
@@ -0,0 +1,15 @@
1
+ import { IConfig } from '@nmxjs/config';
2
+ import { ICreateApiServiceOptions } from '../interfaces';
3
+ import { GetPackageNameService } from './GetPackageNameService';
4
+ import { GenerateProtoMessagesService } from './GenerateProtoMessagesService';
5
+ export declare class GenerateProtoService {
6
+ protected readonly config: IConfig;
7
+ protected readonly getPackageNameService: GetPackageNameService;
8
+ protected readonly generateProtoMessagesService: GenerateProtoMessagesService;
9
+ constructor(config: IConfig, getPackageNameService: GetPackageNameService, generateProtoMessagesService: GenerateProtoMessagesService);
10
+ call({ schema, service }: ICreateApiServiceOptions): {
11
+ protoPath: string;
12
+ packageName: string;
13
+ protoServiceName: string;
14
+ };
15
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.GenerateProtoService = void 0;
16
+ const fs = require("fs");
17
+ const os = require("os");
18
+ const path = require("path");
19
+ const common_1 = require("@nestjs/common");
20
+ const config_1 = require("@nmxjs/config");
21
+ const utils_1 = require("@nmxjs/utils");
22
+ const GetPackageNameService_1 = require("./GetPackageNameService");
23
+ const GenerateProtoMessagesService_1 = require("./GenerateProtoMessagesService");
24
+ let GenerateProtoService = class GenerateProtoService {
25
+ constructor(config, getPackageNameService, generateProtoMessagesService) {
26
+ this.config = config;
27
+ this.getPackageNameService = getPackageNameService;
28
+ this.generateProtoMessagesService = generateProtoMessagesService;
29
+ }
30
+ call({ schema, service }) {
31
+ const packageName = this.getPackageNameService.call(service);
32
+ const upperName = (0, utils_1.firstLetterUpperCase)({ str: packageName });
33
+ const protoPath = path.join(os.tmpdir(), `${upperName}.proto`);
34
+ const protoServiceName = `${upperName}Service`;
35
+ const protoFileData = [
36
+ 'syntax = "proto3";\n\n',
37
+ `package ${packageName};\n\n`,
38
+ 'import "google/protobuf/struct.proto";\n\n',
39
+ `service ${protoServiceName} {\n`,
40
+ ];
41
+ const protoMessages = [];
42
+ for (const methodName of Object.keys(schema)) {
43
+ const upperMethodName = (0, utils_1.firstLetterUpperCase)({ str: methodName });
44
+ const requestMethodName = `${upperMethodName}Request`;
45
+ const responseMethodName = `${upperMethodName}Response`;
46
+ protoFileData.push(` rpc ${methodName} (${requestMethodName}) returns (${responseMethodName}) {}\n`);
47
+ protoMessages.push(...this.generateProtoMessagesService.call({
48
+ messageName: requestMethodName,
49
+ objSchema: schema[methodName].request,
50
+ }));
51
+ protoMessages.push(...this.generateProtoMessagesService.call({
52
+ messageName: responseMethodName,
53
+ objSchema: schema[methodName].response,
54
+ }));
55
+ }
56
+ protoFileData.push('}\n\n');
57
+ fs.writeFileSync(protoPath, [...protoFileData, ...protoMessages.join('')].join(''));
58
+ return {
59
+ protoPath,
60
+ packageName,
61
+ protoServiceName,
62
+ };
63
+ }
64
+ };
65
+ exports.GenerateProtoService = GenerateProtoService;
66
+ exports.GenerateProtoService = GenerateProtoService = __decorate([
67
+ (0, common_1.Injectable)(),
68
+ __param(0, (0, common_1.Inject)(config_1.configKey)),
69
+ __metadata("design:paramtypes", [Object, GetPackageNameService_1.GetPackageNameService,
70
+ GenerateProtoMessagesService_1.GenerateProtoMessagesService])
71
+ ], GenerateProtoService);
72
+ //# sourceMappingURL=GenerateProtoService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenerateProtoService.js","sourceRoot":"","sources":["../../../src/ApiService/services/GenerateProtoService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yBAAyB;AACzB,yBAAyB;AACzB,6BAA6B;AAC7B,2CAAoD;AACpD,0CAAmD;AACnD,wCAAoD;AAEpD,mEAAgE;AAChE,iFAA8E;AAGvE,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAC/B,YACwC,MAAe,EAClC,qBAA4C,EAC5C,4BAA0D;QAFvC,WAAM,GAAN,MAAM,CAAS;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,iCAA4B,GAA5B,4BAA4B,CAA8B;IAC5E,CAAC;IAEG,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAA4B;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAA,4BAAoB,EAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QAC/D,MAAM,gBAAgB,GAAG,GAAG,SAAS,SAAS,CAAC;QAC/C,MAAM,aAAa,GAAG;YACpB,wBAAwB;YACxB,WAAW,WAAW,OAAO;YAC7B,4CAA4C;YAC5C,WAAW,gBAAgB,MAAM;SAClC,CAAC;QACF,MAAM,aAAa,GAAa,EAAE,CAAC;QAEnC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7C,MAAM,eAAe,GAAG,IAAA,4BAAoB,EAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;YAClE,MAAM,iBAAiB,GAAG,GAAG,eAAe,SAAS,CAAC;YACtD,MAAM,kBAAkB,GAAG,GAAG,eAAe,UAAU,CAAC;YACxD,aAAa,CAAC,IAAI,CAAC,WAAW,UAAU,KAAK,iBAAiB,cAAc,kBAAkB,QAAQ,CAAC,CAAC;YAExG,aAAa,CAAC,IAAI,CAChB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;gBACxC,WAAW,EAAE,iBAAiB;gBAC9B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO;aACtC,CAAC,CACH,CAAC;YAEF,aAAa,CAAC,IAAI,CAChB,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC;gBACxC,WAAW,EAAE,kBAAkB;gBAC/B,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ;aACvC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpF,OAAO;YACL,SAAS;YACT,WAAW;YACX,gBAAgB;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAnDY,oDAAoB;+BAApB,oBAAoB;IADhC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,eAAM,EAAC,kBAAS,CAAC,CAAA;6CACwB,6CAAqB;QACd,2DAA4B;GAJpE,oBAAoB,CAmDhC"}
@@ -0,0 +1,3 @@
1
+ export declare class GetPackageNameService {
2
+ call: (serviceName: string) => string;
3
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.GetPackageNameService = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ let GetPackageNameService = class GetPackageNameService {
12
+ constructor() {
13
+ this.call = (serviceName) => serviceName
14
+ .split('-')
15
+ .map((v, i) => (i === 0 ? v : `${v[0].toUpperCase()}${v.slice(1)}`))
16
+ .join('');
17
+ }
18
+ };
19
+ exports.GetPackageNameService = GetPackageNameService;
20
+ exports.GetPackageNameService = GetPackageNameService = __decorate([
21
+ (0, common_1.Injectable)()
22
+ ], GetPackageNameService);
23
+ //# sourceMappingURL=GetPackageNameService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GetPackageNameService.js","sourceRoot":"","sources":["../../../src/ApiService/services/GetPackageNameService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAGrC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAA3B;QACE,SAAI,GAAG,CAAC,WAAmB,EAAE,EAAE,CACpC,WAAW;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACnE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;CAAA,CAAA;AANY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;GACA,qBAAqB,CAMjC"}
@@ -0,0 +1,4 @@
1
+ export * from './CreateApiService';
2
+ export * from './GenerateProtoService';
3
+ export * from './GetPackageNameService';
4
+ export * from './GenerateProtoMessagesService';
@@ -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("./CreateApiService"), exports);
18
+ __exportStar(require("./GenerateProtoService"), exports);
19
+ __exportStar(require("./GetPackageNameService"), exports);
20
+ __exportStar(require("./GenerateProtoMessagesService"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiService/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,yDAAuC;AACvC,0DAAwC;AACxC,iEAA+C"}
@@ -0,0 +1,2 @@
1
+ export * from './ApiService';
2
+ export * from './ApiRouterCore';
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
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("./ApiService"), exports);
18
+ __exportStar(require("./ApiRouterCore"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@nmxjs/api",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "start": "echo [@nmxjs/api has no start script]",
9
+ "clear": "rm -rf dist",
10
+ "build": "yarn clear; tsc",
11
+ "test": "jest --config=jest.config.js --runInBand --passWithNoTests"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/n1ghtm6r9/nm-api.git"
16
+ },
17
+ "keywords": [],
18
+ "author": "N1ghtm6r9",
19
+ "license": "ISC",
20
+ "bugs": {
21
+ "url": "https://github.com/n1ghtm6r9/nm-api/issues"
22
+ },
23
+ "homepage": "https://github.com/n1ghtm6r9/nm-api#readme",
24
+ "devDependencies": {
25
+ "@types/node": "^20.10.4",
26
+ "typescript": "^5.1.6"
27
+ },
28
+ "dependencies": {
29
+ "@nestjs/common": "^10.2.10",
30
+ "@nmxjs/config": "^1.0.0",
31
+ "@nmxjs/utils": "^1.0.0"
32
+ }
33
+ }