@nmxjs/api 1.0.1 → 1.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 (132) hide show
  1. package/dist/ApiRouterCore/ApiRouteCoreModule.d.ts +1 -1
  2. package/dist/ApiRouterCore/ApiRouteCoreModule.js +41 -11
  3. package/dist/ApiRouterCore/ApiRouteCoreModule.js.map +1 -1
  4. package/dist/ApiRouterCore/constants/apiRouterResolversKey.d.ts +1 -0
  5. package/dist/ApiRouterCore/constants/apiRouterResolversKey.js +5 -0
  6. package/dist/ApiRouterCore/constants/apiRouterResolversKey.js.map +1 -0
  7. package/dist/ApiRouterCore/constants/index.d.ts +2 -1
  8. package/dist/ApiRouterCore/constants/index.js +2 -1
  9. package/dist/ApiRouterCore/constants/index.js.map +1 -1
  10. package/dist/ApiRouterCore/constants/transporterOptionsKey.d.ts +1 -0
  11. package/dist/ApiRouterCore/constants/transporterOptionsKey.js +5 -0
  12. package/dist/ApiRouterCore/constants/transporterOptionsKey.js.map +1 -0
  13. package/dist/ApiRouterCore/decorators/ControllerEndpoints.js +1 -0
  14. package/dist/ApiRouterCore/decorators/ControllerEndpoints.js.map +1 -1
  15. package/dist/ApiRouterCore/interfaces/IApiRouterCoreModuleOptions.d.ts +2 -0
  16. package/dist/ApiRouterCore/interfaces/IWebApiAuthHandlerOptions.d.ts +5 -0
  17. package/dist/ApiRouterCore/interfaces/IWebApiAuthHandlerOptions.js +3 -0
  18. package/dist/ApiRouterCore/interfaces/IWebApiAuthHandlerOptions.js.map +1 -0
  19. package/dist/ApiRouterCore/interfaces/index.d.ts +1 -1
  20. package/dist/ApiRouterCore/interfaces/index.js +1 -1
  21. package/dist/ApiRouterCore/interfaces/index.js.map +1 -1
  22. package/dist/ApiRouterCore/utils/index.d.ts +0 -1
  23. package/dist/ApiRouterCore/utils/index.js +0 -1
  24. package/dist/ApiRouterCore/utils/index.js.map +1 -1
  25. package/dist/ApiService/ApiServiceModule.js +20 -0
  26. package/dist/ApiService/ApiServiceModule.js.map +1 -1
  27. package/dist/ApiService/constants/index.d.ts +2 -0
  28. package/dist/ApiService/constants/index.js +2 -0
  29. package/dist/ApiService/constants/index.js.map +1 -1
  30. package/dist/ApiService/constants/transportStrategyKey.d.ts +1 -0
  31. package/dist/ApiService/constants/transportStrategyKey.js +5 -0
  32. package/dist/ApiService/constants/transportStrategyKey.js.map +1 -0
  33. package/dist/ApiService/constants/webApiProperty.d.ts +1 -0
  34. package/dist/ApiService/constants/webApiProperty.js +5 -0
  35. package/dist/ApiService/constants/webApiProperty.js.map +1 -0
  36. package/dist/ApiService/index.d.ts +1 -0
  37. package/dist/ApiService/index.js +1 -0
  38. package/dist/ApiService/index.js.map +1 -1
  39. package/dist/ApiService/interfaces/IApiSchema.d.ts +2 -0
  40. package/dist/ApiService/interfaces/IApiService.d.ts +2 -1
  41. package/dist/ApiService/interfaces/IApiServiceOptions.d.ts +4 -0
  42. package/dist/{ApiRouterCore/interfaces/IBuildGrpcOptions.js → ApiService/interfaces/IApiServiceOptions.js} +1 -1
  43. package/dist/ApiService/interfaces/IApiServiceOptions.js.map +1 -0
  44. package/dist/ApiService/interfaces/IApiServiceWithInfo.d.ts +3 -6
  45. package/dist/ApiService/interfaces/ITransportStrategy.d.ts +7 -0
  46. package/dist/ApiService/interfaces/ITransportStrategy.js +3 -0
  47. package/dist/ApiService/interfaces/ITransportStrategy.js.map +1 -0
  48. package/dist/ApiService/interfaces/WebApiTypeEnum.d.ts +4 -0
  49. package/dist/ApiService/interfaces/WebApiTypeEnum.js +9 -0
  50. package/dist/ApiService/interfaces/WebApiTypeEnum.js.map +1 -0
  51. package/dist/ApiService/interfaces/index.d.ts +3 -0
  52. package/dist/ApiService/interfaces/index.js +3 -0
  53. package/dist/ApiService/interfaces/index.js.map +1 -1
  54. package/dist/ApiService/services/CreateApiService.d.ts +7 -5
  55. package/dist/ApiService/services/CreateApiService.js +50 -28
  56. package/dist/ApiService/services/CreateApiService.js.map +1 -1
  57. package/dist/ApiService/services/TrySetupWebApiService.d.ts +4 -0
  58. package/dist/ApiService/services/TrySetupWebApiService.js +35 -0
  59. package/dist/ApiService/services/TrySetupWebApiService.js.map +1 -0
  60. package/dist/ApiService/services/index.d.ts +1 -3
  61. package/dist/ApiService/services/index.js +1 -3
  62. package/dist/ApiService/services/index.js.map +1 -1
  63. package/dist/ApiService/utils/getQueryMutationByName.d.ts +5 -0
  64. package/dist/ApiService/utils/getQueryMutationByName.js +7 -0
  65. package/dist/ApiService/utils/getQueryMutationByName.js.map +1 -0
  66. package/dist/ApiService/utils/index.d.ts +1 -0
  67. package/dist/ApiService/utils/index.js +18 -0
  68. package/dist/ApiService/utils/index.js.map +1 -0
  69. package/dist/GrpcTransport/GrpcTransportModule.d.ts +2 -0
  70. package/dist/GrpcTransport/GrpcTransportModule.js +33 -0
  71. package/dist/GrpcTransport/GrpcTransportModule.js.map +1 -0
  72. package/dist/GrpcTransport/constants/grpcTransportStrategyKey.d.ts +1 -0
  73. package/dist/GrpcTransport/constants/grpcTransportStrategyKey.js +5 -0
  74. package/dist/GrpcTransport/constants/grpcTransportStrategyKey.js.map +1 -0
  75. package/dist/GrpcTransport/constants/index.d.ts +1 -0
  76. package/dist/GrpcTransport/constants/index.js +18 -0
  77. package/dist/GrpcTransport/constants/index.js.map +1 -0
  78. package/dist/GrpcTransport/index.d.ts +2 -0
  79. package/dist/GrpcTransport/index.js +19 -0
  80. package/dist/GrpcTransport/index.js.map +1 -0
  81. package/dist/GrpcTransport/interfaces/IGenerateProtoMessagesOptions.js.map +1 -0
  82. package/dist/GrpcTransport/interfaces/index.d.ts +1 -0
  83. package/dist/GrpcTransport/interfaces/index.js +18 -0
  84. package/dist/GrpcTransport/interfaces/index.js.map +1 -0
  85. package/dist/GrpcTransport/services/CreateApiService.d.ts +9 -0
  86. package/dist/GrpcTransport/services/CreateApiService.js +68 -0
  87. package/dist/GrpcTransport/services/CreateApiService.js.map +1 -0
  88. package/dist/{ApiService → GrpcTransport}/services/GenerateProtoMessagesService.d.ts +1 -1
  89. package/dist/{ApiService → GrpcTransport}/services/GenerateProtoMessagesService.js +1 -1
  90. package/dist/GrpcTransport/services/GenerateProtoMessagesService.js.map +1 -0
  91. package/dist/{ApiService → GrpcTransport}/services/GenerateProtoService.d.ts +2 -4
  92. package/dist/{ApiService → GrpcTransport}/services/GenerateProtoService.js +2 -8
  93. package/dist/GrpcTransport/services/GenerateProtoService.js.map +1 -0
  94. package/dist/GrpcTransport/services/GetPackageNameService.js.map +1 -0
  95. package/dist/GrpcTransport/services/index.d.ts +4 -0
  96. package/dist/GrpcTransport/services/index.js +21 -0
  97. package/dist/GrpcTransport/services/index.js.map +1 -0
  98. package/dist/NatsTransport/NatsTransportModule.d.ts +2 -0
  99. package/dist/NatsTransport/NatsTransportModule.js +33 -0
  100. package/dist/NatsTransport/NatsTransportModule.js.map +1 -0
  101. package/dist/NatsTransport/constants/index.d.ts +1 -0
  102. package/dist/NatsTransport/constants/index.js +18 -0
  103. package/dist/NatsTransport/constants/index.js.map +1 -0
  104. package/dist/NatsTransport/constants/natsTransportStrategyKey.d.ts +1 -0
  105. package/dist/NatsTransport/constants/natsTransportStrategyKey.js +5 -0
  106. package/dist/NatsTransport/constants/natsTransportStrategyKey.js.map +1 -0
  107. package/dist/NatsTransport/index.d.ts +2 -0
  108. package/dist/NatsTransport/index.js +19 -0
  109. package/dist/NatsTransport/index.js.map +1 -0
  110. package/dist/NatsTransport/services/CreateApiService.d.ts +7 -0
  111. package/dist/NatsTransport/services/CreateApiService.js +53 -0
  112. package/dist/NatsTransport/services/CreateApiService.js.map +1 -0
  113. package/dist/NatsTransport/services/index.d.ts +1 -0
  114. package/dist/NatsTransport/services/index.js +18 -0
  115. package/dist/NatsTransport/services/index.js.map +1 -0
  116. package/package.json +12 -3
  117. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.d.ts +0 -1
  118. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.js +0 -5
  119. package/dist/ApiRouterCore/constants/getGrpcOptionsKey.js.map +0 -1
  120. package/dist/ApiRouterCore/interfaces/IBuildGrpcOptions.d.ts +0 -6
  121. package/dist/ApiRouterCore/interfaces/IBuildGrpcOptions.js.map +0 -1
  122. package/dist/ApiRouterCore/utils/buildGrpcOptions.d.ts +0 -3
  123. package/dist/ApiRouterCore/utils/buildGrpcOptions.js +0 -29
  124. package/dist/ApiRouterCore/utils/buildGrpcOptions.js.map +0 -1
  125. package/dist/ApiService/interfaces/IGenerateProtoMessagesOptions.js.map +0 -1
  126. package/dist/ApiService/services/GenerateProtoMessagesService.js.map +0 -1
  127. package/dist/ApiService/services/GenerateProtoService.js.map +0 -1
  128. package/dist/ApiService/services/GetPackageNameService.js.map +0 -1
  129. /package/dist/{ApiService → GrpcTransport}/interfaces/IGenerateProtoMessagesOptions.d.ts +0 -0
  130. /package/dist/{ApiService → GrpcTransport}/interfaces/IGenerateProtoMessagesOptions.js +0 -0
  131. /package/dist/{ApiService → GrpcTransport}/services/GetPackageNameService.d.ts +0 -0
  132. /package/dist/{ApiService → GrpcTransport}/services/GetPackageNameService.js +0 -0
@@ -1,5 +1,5 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
2
  import { IApiRouterCoreModuleOptions } from './interfaces';
3
3
  export declare class ApiRouteCoreModule {
4
- static forRoot({ imports, apiRouterFactory, servicesKeys }: IApiRouterCoreModuleOptions): DynamicModule;
4
+ static forRoot({ imports, apiRouterFactory, servicesKeys, webApiAuthHandler }: IApiRouterCoreModuleOptions): DynamicModule;
5
5
  }
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ApiRouteCoreModule = void 0;
4
- const utils_1 = require("./utils");
4
+ const deepmerge = require("deepmerge");
5
+ const errors_1 = require("@nmxjs/errors");
6
+ const utils_1 = require("@nmxjs/utils");
5
7
  const constants_1 = require("./constants");
8
+ const ApiService_1 = require("../ApiService");
6
9
  class ApiRouteCoreModule {
7
- static forRoot({ imports, apiRouterFactory, servicesKeys }) {
10
+ static forRoot({ imports, apiRouterFactory, servicesKeys, webApiAuthHandler }) {
8
11
  return {
9
12
  global: true,
10
13
  imports,
@@ -16,24 +19,51 @@ class ApiRouteCoreModule {
16
19
  inject: servicesKeys,
17
20
  },
18
21
  {
19
- provide: constants_1.getGrpcOptionsKey,
22
+ provide: constants_1.transporterOptionsKey,
20
23
  useFactory: (...services) => (serviceName) => {
21
- var _a, _b;
22
24
  const servicesInfo = services.filter(v => (v === null || v === void 0 ? void 0 : v.serviceName) === serviceName);
23
25
  if (!servicesInfo.length) {
24
26
  return null;
25
27
  }
26
- return (0, utils_1.buildGrpcOptions)({
27
- host: (_a = servicesInfo.find(v => v.host)) === null || _a === void 0 ? void 0 : _a.host,
28
- port: (_b = servicesInfo.find(v => v.port)) === null || _b === void 0 ? void 0 : _b.port,
29
- packages: Array.from(new Set(servicesInfo.map(v => v.package))),
30
- protoPaths: servicesInfo.map(v => v.protoPath),
31
- });
28
+ return servicesInfo.reduce((res, v) => deepmerge(res, v.options));
32
29
  },
33
30
  inject: servicesKeys,
34
31
  },
32
+ {
33
+ provide: constants_1.apiRouterResolversKey,
34
+ useFactory: apiRouter => {
35
+ return Object.keys(apiRouter).reduce((res, apiRouterKey) => {
36
+ Object.keys(apiRouter[apiRouterKey]).forEach(key => {
37
+ const item = apiRouter[apiRouterKey];
38
+ const webApiType = Reflect.getMetadata(ApiService_1.webApiProperty, item[key]);
39
+ if (!webApiType) {
40
+ return;
41
+ }
42
+ if (webApiType === ApiService_1.WebApiTypeEnum.SECURED && !webApiAuthHandler) {
43
+ throw new Error('Web api auth handler is not setup!');
44
+ }
45
+ const fn = webApiType === ApiService_1.WebApiTypeEnum.FREE
46
+ ? (_, data) => item[key]((data === null || data === void 0 ? void 0 : data.request) || {})
47
+ : async (_, data, context) => {
48
+ const authResult = await webApiAuthHandler({
49
+ apiRouter,
50
+ req: context.req,
51
+ });
52
+ if (!authResult) {
53
+ throw new errors_1.ForbiddenError();
54
+ }
55
+ return item[key]((data === null || data === void 0 ? void 0 : data.request) || {});
56
+ };
57
+ const property = (0, ApiService_1.getQueryMutationByName)(key).type;
58
+ res[property] = Object.assign(Object.assign({}, res[property]), { [`${apiRouterKey}0${(0, utils_1.firstLetterUpperCase)({ str: key })}`]: fn });
59
+ });
60
+ return res;
61
+ }, {});
62
+ },
63
+ inject: [constants_1.apiRouterKey],
64
+ },
35
65
  ],
36
- exports: [constants_1.apiRouterKey, constants_1.getGrpcOptionsKey],
66
+ exports: [constants_1.apiRouterKey, constants_1.transporterOptionsKey, constants_1.apiRouterResolversKey],
37
67
  };
38
68
  }
39
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ApiRouteCoreModule.js","sourceRoot":"","sources":["../../src/ApiRouterCore/ApiRouteCoreModule.ts"],"names":[],"mappings":";;;AACA,mCAA2C;AAC3C,2CAA8D;AAI9D,MAAa,kBAAkB;IACtB,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAA+B;QAC5F,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,OAAO;YACP,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,wBAAY;oBACrB,UAAU,EAAE,gBAAgB;oBAC5B,MAAM,EAAE,YAAY;iBACrB;gBACD;oBACE,OAAO,EAAE,6BAAiB;oBAC1B,UAAU,EACR,CAAC,GAAG,QAA+B,EAAE,EAAE,CACvC,CAAC,WAAmB,EAAE,EAAE;;wBACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,WAAW,MAAK,WAAW,CAAC,CAAC;wBAE1E,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;4BACzB,OAAO,IAAI,CAAC;wBACd,CAAC;wBAED,OAAO,IAAA,wBAAgB,EAAC;4BACtB,IAAI,EAAE,MAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,0CAAE,IAAI;4BAC1C,IAAI,EAAE,MAAA,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,0CAAE,IAAI;4BAC1C,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;4BAC/D,UAAU,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;yBAC/C,CAAC,CAAC;oBACL,CAAC;oBACH,MAAM,EAAE,YAAY;iBACrB;aACF;YACD,OAAO,EAAE,CAAC,wBAAY,EAAE,6BAAiB,CAAC;SAC3C,CAAC;IACJ,CAAC;CACF;AApCD,gDAoCC"}
1
+ {"version":3,"file":"ApiRouteCoreModule.js","sourceRoot":"","sources":["../../src/ApiRouterCore/ApiRouteCoreModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const apiRouterResolversKey: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiRouterResolversKey = void 0;
4
+ exports.apiRouterResolversKey = Symbol('API_ROUTER_RESOLVERS_KEY');
5
+ //# sourceMappingURL=apiRouterResolversKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiRouterResolversKey.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/constants/apiRouterResolversKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './apiRouterKey';
2
2
  export * from './endErrorText';
3
- export * from './getGrpcOptionsKey';
3
+ export * from './transporterOptionsKey';
4
+ export * from './apiRouterResolversKey';
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./apiRouterKey"), exports);
18
18
  __exportStar(require("./endErrorText"), exports);
19
- __exportStar(require("./getGrpcOptionsKey"), exports);
19
+ __exportStar(require("./transporterOptionsKey"), exports);
20
+ __exportStar(require("./apiRouterResolversKey"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,iDAA+B;AAC/B,sDAAoC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,iDAA+B;AAC/B,0DAAwC;AACxC,0DAAwC"}
@@ -0,0 +1 @@
1
+ export declare const transporterOptionsKey: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transporterOptionsKey = void 0;
4
+ exports.transporterOptionsKey = Symbol('TRANSPORTER_OPTIONS_KEY');
5
+ //# sourceMappingURL=transporterOptionsKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transporterOptionsKey.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/constants/transporterOptionsKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC"}
@@ -12,6 +12,7 @@ const ControllerEndpoints = (serviceName) => (target) => {
12
12
  return;
13
13
  }
14
14
  (0, microservices_1.GrpcMethod)(serviceName, key)(target, key, Object.getOwnPropertyDescriptor(target.prototype, key));
15
+ (0, microservices_1.MessagePattern)(`${serviceName}.${key}`)(target, key, Object.getOwnPropertyDescriptor(target.prototype, key));
15
16
  });
16
17
  }
17
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ControllerEndpoints.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/decorators/ControllerEndpoints.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,yDAAmD;AACnD,wCAA2C;AAEpC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,CAAC,MAAgB,EAAE,EAAE;IAC/E,IAAA,mBAAU,GAAE,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,IAAA,mBAAW,GAAE,EAAE,CAAC;QACnB,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAA,0BAAU,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QACpG,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,mBAAmB,uBAU9B"}
1
+ {"version":3,"file":"ControllerEndpoints.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/decorators/ControllerEndpoints.ts"],"names":[],"mappings":";;;AAAA,2CAA4C;AAC5C,yDAAmE;AACnE,wCAA2C;AAEpC,MAAM,mBAAmB,GAAG,CAAC,WAAmB,EAAE,EAAE,CAAC,CAAC,MAAgB,EAAE,EAAE;IAC/E,IAAA,mBAAU,GAAE,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,IAAA,mBAAW,GAAE,EAAE,CAAC;QACnB,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACzD,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,IAAA,0BAAU,EAAC,WAAW,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;YAClG,IAAA,8BAAc,EAAC,GAAG,WAAW,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAXW,QAAA,mBAAmB,uBAW9B"}
@@ -1,5 +1,7 @@
1
1
  import { ModuleMetadata } from '@nestjs/common';
2
+ import { IWebApiAuthHandlerOptions } from './IWebApiAuthHandlerOptions';
2
3
  export interface IApiRouterCoreModuleOptions extends Required<Pick<ModuleMetadata, 'imports'>> {
3
4
  servicesKeys: Array<string | symbol>;
4
5
  apiRouterFactory(...any: any[]): object;
6
+ webApiAuthHandler?(options: IWebApiAuthHandlerOptions): Promise<boolean>;
5
7
  }
@@ -0,0 +1,5 @@
1
+ import type { Request } from 'express';
2
+ export interface IWebApiAuthHandlerOptions<T = any> {
3
+ req: Request;
4
+ apiRouter: T;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IWebApiAuthHandlerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IWebApiAuthHandlerOptions.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/interfaces/IWebApiAuthHandlerOptions.ts"],"names":[],"mappings":""}
@@ -1,3 +1,3 @@
1
1
  export * from './GetGrpcOptions';
2
- export * from './IBuildGrpcOptions';
3
2
  export * from './IApiRouterCoreModuleOptions';
3
+ export * from './IWebApiAuthHandlerOptions';
@@ -15,6 +15,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./GetGrpcOptions"), exports);
18
- __exportStar(require("./IBuildGrpcOptions"), exports);
19
18
  __exportStar(require("./IApiRouterCoreModuleOptions"), exports);
19
+ __exportStar(require("./IWebApiAuthHandlerOptions"), exports);
20
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,sDAAoC;AACpC,gEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,gEAA8C;AAC9C,8DAA4C"}
@@ -1,2 +1 @@
1
- export * from './buildGrpcOptions';
2
1
  export * from './RpcExceptionInterceptor';
@@ -14,6 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./buildGrpcOptions"), exports);
18
17
  __exportStar(require("./RpcExceptionInterceptor"), exports);
19
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,4DAA0C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiRouterCore/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
@@ -7,15 +7,21 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  };
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ApiServiceModule = void 0;
10
+ const errors_1 = require("@nmxjs/errors");
11
+ const config_1 = require("@nmxjs/config");
10
12
  const common_1 = require("@nestjs/common");
11
13
  const constants_1 = require("./constants");
12
14
  const Services = require("./services");
15
+ const constants_2 = require("./constants");
16
+ const NatsTransport_1 = require("../NatsTransport");
17
+ const GrpcTransport_1 = require("../GrpcTransport");
13
18
  let ApiServiceModule = class ApiServiceModule {
14
19
  };
15
20
  exports.ApiServiceModule = ApiServiceModule;
16
21
  exports.ApiServiceModule = ApiServiceModule = __decorate([
17
22
  (0, common_1.Global)(),
18
23
  (0, common_1.Module)({
24
+ imports: [GrpcTransport_1.GrpcTransportModule, NatsTransport_1.NatsTransportModule],
19
25
  providers: [
20
26
  ...Object.values(Services),
21
27
  {
@@ -25,6 +31,20 @@ exports.ApiServiceModule = ApiServiceModule = __decorate([
25
31
  }),
26
32
  inject: [Services.CreateApiService],
27
33
  },
34
+ {
35
+ provide: constants_2.transportStrategyKey,
36
+ useFactory: (config, ...strategies) => {
37
+ const strategy = strategies.find(v => v.type === config.transport.type);
38
+ if (!strategy) {
39
+ throw new errors_1.NotFoundError({
40
+ entityName: 'TransportStrategy',
41
+ searchValue: config.transport.type,
42
+ });
43
+ }
44
+ return strategy;
45
+ },
46
+ inject: [config_1.configKey, GrpcTransport_1.grpcTransportStrategyKey, NatsTransport_1.natsTransportStrategyKey],
47
+ },
28
48
  ],
29
49
  exports: [constants_1.apiServiceFactoryKey],
30
50
  })
@@ -1 +1 @@
1
- {"version":3,"file":"ApiServiceModule.js","sourceRoot":"","sources":["../../src/ApiService/ApiServiceModule.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAEhD,2CAAmD;AACnD,uCAAuC;AAgBhC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IAd5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC1B;gBACE,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,CAAC,gBAA2C,EAAsB,EAAE,CAAC,CAAC;oBAChF,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;iBACrD,CAAC;gBACF,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;aACpC;SACF;QACD,OAAO,EAAE,CAAC,gCAAoB,CAAC;KAChC,CAAC;GACW,gBAAgB,CAAG"}
1
+ {"version":3,"file":"ApiServiceModule.js","sourceRoot":"","sources":["../../src/ApiService/ApiServiceModule.ts"],"names":[],"mappings":";;;;;;;;;AAAA,0CAA8C;AAC9C,0CAAmD;AACnD,2CAAgD;AAEhD,2CAAmD;AACnD,uCAAuC;AAEvC,2CAAmD;AACnD,oDAAiF;AACjF,oDAAiF;AAiC1E,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,4CAAgB;2BAAhB,gBAAgB;IA/B5B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,mCAAmB,EAAE,mCAAmB,CAAC;QACnD,SAAS,EAAE;YACT,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC1B;gBACE,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,CAAC,gBAA2C,EAAsB,EAAE,CAAC,CAAC;oBAChF,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;iBACrD,CAAC;gBACF,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;aACpC;YACD;gBACE,OAAO,EAAE,gCAAoB;gBAC7B,UAAU,EAAE,CAAC,MAAe,EAAE,GAAG,UAAgC,EAAsB,EAAE;oBACvF,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAExE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,MAAM,IAAI,sBAAa,CAAC;4BACtB,UAAU,EAAE,mBAAmB;4BAC/B,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;yBACnC,CAAC,CAAC;oBACL,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;gBACD,MAAM,EAAE,CAAC,kBAAS,EAAE,wCAAwB,EAAE,wCAAwB,CAAC;aACxE;SACF;QACD,OAAO,EAAE,CAAC,gCAAoB,CAAC;KAChC,CAAC;GACW,gBAAgB,CAAG"}
@@ -1 +1,3 @@
1
+ export * from './webApiProperty';
1
2
  export * from './apiServiceFactoryKey';
3
+ export * from './transportStrategyKey';
@@ -14,5 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./webApiProperty"), exports);
17
18
  __exportStar(require("./apiServiceFactoryKey"), exports);
19
+ __exportStar(require("./transportStrategyKey"), exports);
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiService/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiService/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,yDAAuC;AACvC,yDAAuC"}
@@ -0,0 +1 @@
1
+ export declare const transportStrategyKey: unique symbol;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transportStrategyKey = void 0;
4
+ exports.transportStrategyKey = Symbol('TRANSPORT_STRATEGY_KEY');
5
+ //# sourceMappingURL=transportStrategyKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transportStrategyKey.js","sourceRoot":"","sources":["../../../src/ApiService/constants/transportStrategyKey.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const webApiProperty = "webApi";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.webApiProperty = void 0;
4
+ exports.webApiProperty = 'webApi';
5
+ //# sourceMappingURL=webApiProperty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webApiProperty.js","sourceRoot":"","sources":["../../../src/ApiService/constants/webApiProperty.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,QAAQ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from './constants';
2
2
  export * from './interfaces';
3
+ export * from './utils';
3
4
  export * from './ApiServiceModule';
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./constants"), exports);
18
18
  __exportStar(require("./interfaces"), exports);
19
+ __exportStar(require("./utils"), exports);
19
20
  __exportStar(require("./ApiServiceModule"), exports);
20
21
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiService/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B;AAC7B,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiService/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,+CAA6B;AAC7B,0CAAwB;AACxB,qDAAmC"}
@@ -1,4 +1,6 @@
1
+ import { WebApiTypeEnum } from './WebApiTypeEnum';
1
2
  export type IApiSchema = Record<string, {
2
3
  request?: object;
3
4
  response: object;
5
+ webApiType?: WebApiTypeEnum;
4
6
  }>;
@@ -1,4 +1,5 @@
1
1
  import { IApiSchema } from './IApiSchema';
2
+ import { IApiServiceOptions } from './IApiServiceOptions';
2
3
  export type IApiService<T extends IApiSchema> = {
3
- [key in keyof T]: T[key]['request'] extends object ? (request: T[key]['request']['prototype']) => Promise<T[key]['response']['prototype']> : () => Promise<T[key]['response']['prototype']>;
4
+ [key in keyof T]: T[key]['request'] extends object ? (request: T[key]['request']['prototype'], options?: IApiServiceOptions) => Promise<T[key]['response']['prototype']> : (options?: IApiServiceOptions) => Promise<T[key]['response']['prototype']>;
4
5
  };
@@ -0,0 +1,4 @@
1
+ export interface IApiServiceOptions {
2
+ cacheTtlMs?: number;
3
+ skipError?: boolean;
4
+ }
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=IBuildGrpcOptions.js.map
3
+ //# sourceMappingURL=IApiServiceOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IApiServiceOptions.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/IApiServiceOptions.ts"],"names":[],"mappings":""}
@@ -1,10 +1,7 @@
1
+ import { MicroserviceOptions } from '@nestjs/microservices';
1
2
  import { IApiService } from './IApiService';
2
3
  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
4
  service: T;
5
+ serviceName: string;
6
+ options: MicroserviceOptions;
10
7
  }
@@ -0,0 +1,7 @@
1
+ import { TransporterEnumType } from '@nmxjs/config';
2
+ import { ICreateApiServiceOptions } from './ICreateApiServiceOptions';
3
+ import { IApiServiceWithInfo } from './IApiServiceWithInfo';
4
+ export interface ITransportStrategy {
5
+ type: TransporterEnumType;
6
+ createService(options: ICreateApiServiceOptions): Promise<IApiServiceWithInfo>;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ITransportStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITransportStrategy.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/ITransportStrategy.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare enum WebApiTypeEnum {
2
+ FREE = "FREE",
3
+ SECURED = "SECURED"
4
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebApiTypeEnum = void 0;
4
+ var WebApiTypeEnum;
5
+ (function (WebApiTypeEnum) {
6
+ WebApiTypeEnum["FREE"] = "FREE";
7
+ WebApiTypeEnum["SECURED"] = "SECURED";
8
+ })(WebApiTypeEnum || (exports.WebApiTypeEnum = WebApiTypeEnum = {}));
9
+ //# sourceMappingURL=WebApiTypeEnum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebApiTypeEnum.js","sourceRoot":"","sources":["../../../src/ApiService/interfaces/WebApiTypeEnum.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,qCAAmB,CAAA;AACrB,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB"}
@@ -4,3 +4,6 @@ export * from './IApiServiceFactory';
4
4
  export * from './IGenerateProtoOptions';
5
5
  export * from './ICreateApiServiceOptions';
6
6
  export * from './IApiServiceWithInfo';
7
+ export * from './WebApiTypeEnum';
8
+ export * from './ITransportStrategy';
9
+ export * from './IApiServiceOptions';
@@ -20,4 +20,7 @@ __exportStar(require("./IApiServiceFactory"), exports);
20
20
  __exportStar(require("./IGenerateProtoOptions"), exports);
21
21
  __exportStar(require("./ICreateApiServiceOptions"), exports);
22
22
  __exportStar(require("./IApiServiceWithInfo"), exports);
23
+ __exportStar(require("./WebApiTypeEnum"), exports);
24
+ __exportStar(require("./ITransportStrategy"), exports);
25
+ __exportStar(require("./IApiServiceOptions"), exports);
23
26
  //# sourceMappingURL=index.js.map
@@ -1 +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"}
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;AACtC,mDAAiC;AACjC,uDAAqC;AACrC,uDAAqC"}
@@ -1,9 +1,11 @@
1
1
  import { IConfig } from '@nmxjs/config';
2
- import { GenerateProtoService } from './GenerateProtoService';
3
- import { ICreateApiServiceOptions, IApiServiceWithInfo } from '../interfaces';
2
+ import { ICreateApiServiceOptions, IApiServiceWithInfo, ITransportStrategy } from '../interfaces';
3
+ import { TrySetupWebApiService } from './TrySetupWebApiService';
4
4
  export declare class CreateApiService {
5
5
  protected readonly config: IConfig;
6
- protected readonly generateProtoService: GenerateProtoService;
7
- constructor(config: IConfig, generateProtoService: GenerateProtoService);
8
- call({ schema, service, subService }: ICreateApiServiceOptions): IApiServiceWithInfo;
6
+ protected readonly transportStrategy: ITransportStrategy;
7
+ protected readonly trySetupWebApiService: TrySetupWebApiService;
8
+ protected cache: any;
9
+ constructor(config: IConfig, transportStrategy: ITransportStrategy, trySetupWebApiService: TrySetupWebApiService);
10
+ call(options: ICreateApiServiceOptions): Promise<IApiServiceWithInfo>;
9
11
  }
@@ -13,44 +13,66 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.CreateApiService = void 0;
16
- const microservices_1 = require("@nestjs/microservices");
17
16
  const common_1 = require("@nestjs/common");
18
17
  const config_1 = require("@nmxjs/config");
19
- const utils_1 = require("../../ApiRouterCore/utils");
20
- const GenerateProtoService_1 = require("./GenerateProtoService");
18
+ const rxjs_1 = require("rxjs");
19
+ const constants_1 = require("../constants");
20
+ const TrySetupWebApiService_1 = require("./TrySetupWebApiService");
21
+ const errors_1 = require("@nmxjs/errors");
21
22
  let CreateApiService = class CreateApiService {
22
- constructor(config, generateProtoService) {
23
+ constructor(config, transportStrategy, trySetupWebApiService) {
23
24
  this.config = config;
24
- this.generateProtoService = generateProtoService;
25
+ this.transportStrategy = transportStrategy;
26
+ this.trySetupWebApiService = trySetupWebApiService;
27
+ this.cache = new NodeCache();
25
28
  }
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
- };
29
+ async call(options) {
30
+ this.trySetupWebApiService.call(options);
31
+ const result = await this.transportStrategy.createService(options);
32
+ const serviceName = options.subService || options.service;
33
+ const service = Object.keys(result.service).reduce((res, methodName) => {
34
+ res[methodName] = async (requestData = {}, methodOptions = {}) => {
35
+ const route = `${serviceName}.${methodName}`;
36
+ const getData = () => {
37
+ const payload = result.service[methodName](requestData);
38
+ return ((0, rxjs_1.isObservable)(payload) ? (0, rxjs_1.lastValueFrom)(payload) : payload).catch(e => {
39
+ if (requestData.skipError || methodOptions.skipError) {
40
+ return;
41
+ }
42
+ if (e.message.includes('Empty response. There are no subscribers listening to that message')) {
43
+ throw new errors_1.ServiceNotAvailableError(serviceName, methodName);
44
+ }
45
+ throw e;
46
+ });
47
+ };
48
+ const cacheTtlMs = requestData.cacheTtlMs || methodOptions.cacheTtlMs;
49
+ if (typeof cacheTtlMs !== 'number') {
50
+ return getData();
51
+ }
52
+ const key = objHash({
53
+ route,
54
+ requestData,
55
+ });
56
+ let result = this.cache.get(key);
57
+ if (!result) {
58
+ result = await getData();
59
+ this.cache.set(key, result, cacheTtlMs === Infinity ? undefined : Math.ceil(cacheTtlMs / 1000));
60
+ }
61
+ return result;
62
+ };
63
+ if (options.schema[methodName].webApiType) {
64
+ Reflect.defineMetadata(constants_1.webApiProperty, options.schema[methodName].webApiType, service[methodName]);
65
+ }
66
+ return res;
67
+ }, {});
68
+ return Object.assign(Object.assign({}, result), { service });
48
69
  }
49
70
  };
50
71
  exports.CreateApiService = CreateApiService;
51
72
  exports.CreateApiService = CreateApiService = __decorate([
52
73
  (0, common_1.Injectable)(),
53
74
  __param(0, (0, common_1.Inject)(config_1.configKey)),
54
- __metadata("design:paramtypes", [Object, GenerateProtoService_1.GenerateProtoService])
75
+ __param(1, (0, common_1.Inject)(constants_1.transportStrategyKey)),
76
+ __metadata("design:paramtypes", [Object, Object, TrySetupWebApiService_1.TrySetupWebApiService])
55
77
  ], CreateApiService);
56
78
  //# sourceMappingURL=CreateApiService.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"CreateApiService.js","sourceRoot":"","sources":["../../../src/ApiService/services/CreateApiService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAoD;AACpD,0CAAmD;AACnD,+BAAmD;AACnD,4CAAoE;AAEpE,mEAAgE;AAChE,0CAAyD;AAGlD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAI3B,YACqB,MAAkC,EACvB,iBAAwD,EACnE,qBAA4C;QAFzB,WAAM,GAAN,MAAM,CAAS;QACJ,sBAAiB,GAAjB,iBAAiB,CAAoB;QACnE,0BAAqB,GAArB,qBAAqB,CAAuB;QALvD,UAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAM/B,CAAC;IAEG,KAAK,CAAC,IAAI,CAAC,OAAiC;QACjD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;QAE1D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE;YACrE,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,EAAE,cAAuC,EAAE,EAAE,gBAAoC,EAAE,EAAE,EAAE;gBAC5G,MAAM,KAAK,GAAG,GAAG,WAAW,IAAI,UAAU,EAAE,CAAC;gBAE7C,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC;oBACxD,OAAO,CAAC,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBAC1E,IAAI,WAAW,CAAC,SAAS,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;4BACrD,OAAO;wBACT,CAAC;wBACD,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,oEAAoE,CAAC,EAAE,CAAC;4BAC7F,MAAM,IAAI,iCAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;wBAC9D,CAAC;wBACD,MAAM,CAAC,CAAC;oBACV,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBAEF,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,CAAC;gBAEtE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACnC,OAAO,OAAO,EAAE,CAAC;gBACnB,CAAC;gBAGD,MAAM,GAAG,GAAG,OAAO,CAAC;oBAClB,KAAK;oBACL,WAAW;iBACZ,CAAC,CAAC;gBAEH,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAEjC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;oBACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC;gBAClG,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC1C,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YACrG,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,uCACK,MAAM,KACT,OAAO,IACP;IACJ,CAAC;CACF,CAAA;AAlEY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,eAAM,EAAC,kBAAS,CAAC,CAAA;IACjB,WAAA,IAAA,eAAM,EAAC,gCAAoB,CAAC,CAAA;qDACa,6CAAqB;GAPtD,gBAAgB,CAkE5B"}
@@ -0,0 +1,4 @@
1
+ import { ICreateApiServiceOptions } from '../interfaces';
2
+ export declare class TrySetupWebApiService {
3
+ call({ schema, service, subService }: ICreateApiServiceOptions): void;
4
+ }