@revisium/endpoint 0.9.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 (190) hide show
  1. package/LICENSE +204 -0
  2. package/README.md +9 -0
  3. package/dist/endpoint-microservice/commands/handlers/base-endpoint.handler.d.ts +6 -0
  4. package/dist/endpoint-microservice/commands/handlers/base-endpoint.handler.js +17 -0
  5. package/dist/endpoint-microservice/commands/handlers/base-endpoint.handler.js.map +1 -0
  6. package/dist/endpoint-microservice/commands/handlers/create-endpoint.handler.d.ts +10 -0
  7. package/dist/endpoint-microservice/commands/handlers/create-endpoint.handler.js +41 -0
  8. package/dist/endpoint-microservice/commands/handlers/create-endpoint.handler.js.map +1 -0
  9. package/dist/endpoint-microservice/commands/handlers/delete-endpoint.handler.d.ts +10 -0
  10. package/dist/endpoint-microservice/commands/handlers/delete-endpoint.handler.js +40 -0
  11. package/dist/endpoint-microservice/commands/handlers/delete-endpoint.handler.js.map +1 -0
  12. package/dist/endpoint-microservice/commands/handlers/index.d.ts +5 -0
  13. package/dist/endpoint-microservice/commands/handlers/index.js +14 -0
  14. package/dist/endpoint-microservice/commands/handlers/index.js.map +1 -0
  15. package/dist/endpoint-microservice/commands/handlers/run-all-endpoints.handler.d.ts +16 -0
  16. package/dist/endpoint-microservice/commands/handlers/run-all-endpoints.handler.js +44 -0
  17. package/dist/endpoint-microservice/commands/handlers/run-all-endpoints.handler.js.map +1 -0
  18. package/dist/endpoint-microservice/commands/handlers/update-endpoint.handler.d.ts +10 -0
  19. package/dist/endpoint-microservice/commands/handlers/update-endpoint.handler.js +41 -0
  20. package/dist/endpoint-microservice/commands/handlers/update-endpoint.handler.js.map +1 -0
  21. package/dist/endpoint-microservice/commands/impl/create-endpoint.command.d.ts +4 -0
  22. package/dist/endpoint-microservice/commands/impl/create-endpoint.command.js +10 -0
  23. package/dist/endpoint-microservice/commands/impl/create-endpoint.command.js.map +1 -0
  24. package/dist/endpoint-microservice/commands/impl/delete-endpoint.command.d.ts +6 -0
  25. package/dist/endpoint-microservice/commands/impl/delete-endpoint.command.js +11 -0
  26. package/dist/endpoint-microservice/commands/impl/delete-endpoint.command.js.map +1 -0
  27. package/dist/endpoint-microservice/commands/impl/index.d.ts +3 -0
  28. package/dist/endpoint-microservice/commands/impl/index.js +20 -0
  29. package/dist/endpoint-microservice/commands/impl/index.js.map +1 -0
  30. package/dist/endpoint-microservice/commands/impl/run-all-endpoints.command.d.ts +3 -0
  31. package/dist/endpoint-microservice/commands/impl/run-all-endpoints.command.js +8 -0
  32. package/dist/endpoint-microservice/commands/impl/run-all-endpoints.command.js.map +1 -0
  33. package/dist/endpoint-microservice/commands/impl/update-endpoint.command.d.ts +4 -0
  34. package/dist/endpoint-microservice/commands/impl/update-endpoint.command.js +10 -0
  35. package/dist/endpoint-microservice/commands/impl/update-endpoint.command.js.map +1 -0
  36. package/dist/endpoint-microservice/core-api/core-api.module.d.ts +2 -0
  37. package/dist/endpoint-microservice/core-api/core-api.module.js +25 -0
  38. package/dist/endpoint-microservice/core-api/core-api.module.js.map +1 -0
  39. package/dist/endpoint-microservice/core-api/generated/api.d.ts +390 -0
  40. package/dist/endpoint-microservice/core-api/generated/api.js +550 -0
  41. package/dist/endpoint-microservice/core-api/generated/api.js.map +1 -0
  42. package/dist/endpoint-microservice/core-api/internal-core-api.service.d.ts +13 -0
  43. package/dist/endpoint-microservice/core-api/internal-core-api.service.js +87 -0
  44. package/dist/endpoint-microservice/core-api/internal-core-api.service.js.map +1 -0
  45. package/dist/endpoint-microservice/core-api/proxy-core-api.service.d.ts +5 -0
  46. package/dist/endpoint-microservice/core-api/proxy-core-api.service.js +32 -0
  47. package/dist/endpoint-microservice/core-api/proxy-core-api.service.js.map +1 -0
  48. package/dist/endpoint-microservice/core-api/utils/transformFromPrismaToRowModel.d.ts +4 -0
  49. package/dist/endpoint-microservice/core-api/utils/transformFromPrismaToRowModel.js +24 -0
  50. package/dist/endpoint-microservice/core-api/utils/transformFromPrismaToRowModel.js.map +1 -0
  51. package/dist/endpoint-microservice/database/database.module.d.ts +2 -0
  52. package/dist/endpoint-microservice/database/database.module.js +21 -0
  53. package/dist/endpoint-microservice/database/database.module.js.map +1 -0
  54. package/dist/endpoint-microservice/database/prisma.service.d.ts +5 -0
  55. package/dist/endpoint-microservice/database/prisma.service.js +21 -0
  56. package/dist/endpoint-microservice/database/prisma.service.js.map +1 -0
  57. package/dist/endpoint-microservice/endpoint-listener.controller.d.ts +12 -0
  58. package/dist/endpoint-microservice/endpoint-listener.controller.js +54 -0
  59. package/dist/endpoint-microservice/endpoint-listener.controller.js.map +1 -0
  60. package/dist/endpoint-microservice/endpoint-microservice.module.d.ts +9 -0
  61. package/dist/endpoint-microservice/endpoint-microservice.module.js +58 -0
  62. package/dist/endpoint-microservice/endpoint-microservice.module.js.map +1 -0
  63. package/dist/endpoint-microservice/graphql/commands/handlers/create-graphql-endpoint.handler.d.ts +8 -0
  64. package/dist/endpoint-microservice/graphql/commands/handlers/create-graphql-endpoint.handler.js +32 -0
  65. package/dist/endpoint-microservice/graphql/commands/handlers/create-graphql-endpoint.handler.js.map +1 -0
  66. package/dist/endpoint-microservice/graphql/commands/handlers/delete-graphql-endpoint.handler.d.ts +8 -0
  67. package/dist/endpoint-microservice/graphql/commands/handlers/delete-graphql-endpoint.handler.js +32 -0
  68. package/dist/endpoint-microservice/graphql/commands/handlers/delete-graphql-endpoint.handler.js.map +1 -0
  69. package/dist/endpoint-microservice/graphql/commands/handlers/index.d.ts +4 -0
  70. package/dist/endpoint-microservice/graphql/commands/handlers/index.js +12 -0
  71. package/dist/endpoint-microservice/graphql/commands/handlers/index.js.map +1 -0
  72. package/dist/endpoint-microservice/graphql/commands/handlers/update-graphql-endpoint.handler.d.ts +8 -0
  73. package/dist/endpoint-microservice/graphql/commands/handlers/update-graphql-endpoint.handler.js +33 -0
  74. package/dist/endpoint-microservice/graphql/commands/handlers/update-graphql-endpoint.handler.js.map +1 -0
  75. package/dist/endpoint-microservice/graphql/commands/impl/create-graphql-endpoint.command.d.ts +4 -0
  76. package/dist/endpoint-microservice/graphql/commands/impl/create-graphql-endpoint.command.js +10 -0
  77. package/dist/endpoint-microservice/graphql/commands/impl/create-graphql-endpoint.command.js.map +1 -0
  78. package/dist/endpoint-microservice/graphql/commands/impl/delete-graphql-endpoint.command.d.ts +4 -0
  79. package/dist/endpoint-microservice/graphql/commands/impl/delete-graphql-endpoint.command.js +10 -0
  80. package/dist/endpoint-microservice/graphql/commands/impl/delete-graphql-endpoint.command.js.map +1 -0
  81. package/dist/endpoint-microservice/graphql/commands/impl/index.d.ts +4 -0
  82. package/dist/endpoint-microservice/graphql/commands/impl/index.js +21 -0
  83. package/dist/endpoint-microservice/graphql/commands/impl/index.js.map +1 -0
  84. package/dist/endpoint-microservice/graphql/commands/impl/update-graphql-endpoint.command.d.ts +4 -0
  85. package/dist/endpoint-microservice/graphql/commands/impl/update-graphql-endpoint.command.js +10 -0
  86. package/dist/endpoint-microservice/graphql/commands/impl/update-graphql-endpoint.command.js.map +1 -0
  87. package/dist/endpoint-microservice/graphql/graphql-endpoint.controller.d.ts +9 -0
  88. package/dist/endpoint-microservice/graphql/graphql-endpoint.controller.js +85 -0
  89. package/dist/endpoint-microservice/graphql/graphql-endpoint.controller.js.map +1 -0
  90. package/dist/endpoint-microservice/graphql/graphql-endpoint.service.d.ts +20 -0
  91. package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js +138 -0
  92. package/dist/endpoint-microservice/graphql/graphql-endpoint.service.js.map +1 -0
  93. package/dist/endpoint-microservice/graphql/graphql.module.d.ts +2 -0
  94. package/dist/endpoint-microservice/graphql/graphql.module.js +28 -0
  95. package/dist/endpoint-microservice/graphql/graphql.module.js.map +1 -0
  96. package/dist/endpoint-microservice/graphql/index.d.ts +1 -0
  97. package/dist/endpoint-microservice/graphql/index.js +18 -0
  98. package/dist/endpoint-microservice/graphql/index.js.map +1 -0
  99. package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.d.ts +26 -0
  100. package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.js +234 -0
  101. package/dist/endpoint-microservice/graphql/queries/handlers/get-graphql-schema.handler.js.map +1 -0
  102. package/dist/endpoint-microservice/graphql/queries/handlers/index.d.ts +2 -0
  103. package/dist/endpoint-microservice/graphql/queries/handlers/index.js +6 -0
  104. package/dist/endpoint-microservice/graphql/queries/handlers/index.js.map +1 -0
  105. package/dist/endpoint-microservice/graphql/queries/impl/get-graphql-schema.query.d.ts +8 -0
  106. package/dist/endpoint-microservice/graphql/queries/impl/get-graphql-schema.query.js +10 -0
  107. package/dist/endpoint-microservice/graphql/queries/impl/get-graphql-schema.query.js.map +1 -0
  108. package/dist/endpoint-microservice/graphql/queries/impl/index.d.ts +1 -0
  109. package/dist/endpoint-microservice/graphql/queries/impl/index.js +18 -0
  110. package/dist/endpoint-microservice/graphql/queries/impl/index.js.map +1 -0
  111. package/dist/endpoint-microservice/graphql/queries/types/index.d.ts +0 -0
  112. package/dist/endpoint-microservice/graphql/queries/types/index.js +1 -0
  113. package/dist/endpoint-microservice/graphql/queries/types/index.js.map +1 -0
  114. package/dist/endpoint-microservice/restapi/commands/handlers/create-restapi-endpoint.handler.d.ts +8 -0
  115. package/dist/endpoint-microservice/restapi/commands/handlers/create-restapi-endpoint.handler.js +32 -0
  116. package/dist/endpoint-microservice/restapi/commands/handlers/create-restapi-endpoint.handler.js.map +1 -0
  117. package/dist/endpoint-microservice/restapi/commands/handlers/delete-restapi-endpoint.handler.d.ts +8 -0
  118. package/dist/endpoint-microservice/restapi/commands/handlers/delete-restapi-endpoint.handler.js +32 -0
  119. package/dist/endpoint-microservice/restapi/commands/handlers/delete-restapi-endpoint.handler.js.map +1 -0
  120. package/dist/endpoint-microservice/restapi/commands/handlers/index.d.ts +4 -0
  121. package/dist/endpoint-microservice/restapi/commands/handlers/index.js +12 -0
  122. package/dist/endpoint-microservice/restapi/commands/handlers/index.js.map +1 -0
  123. package/dist/endpoint-microservice/restapi/commands/handlers/update-restapi-endpoint.handler.d.ts +8 -0
  124. package/dist/endpoint-microservice/restapi/commands/handlers/update-restapi-endpoint.handler.js +33 -0
  125. package/dist/endpoint-microservice/restapi/commands/handlers/update-restapi-endpoint.handler.js.map +1 -0
  126. package/dist/endpoint-microservice/restapi/commands/impl/create-restapi-endpoint.command.d.ts +4 -0
  127. package/dist/endpoint-microservice/restapi/commands/impl/create-restapi-endpoint.command.js +10 -0
  128. package/dist/endpoint-microservice/restapi/commands/impl/create-restapi-endpoint.command.js.map +1 -0
  129. package/dist/endpoint-microservice/restapi/commands/impl/delete-restapi-endpoint.command.d.ts +4 -0
  130. package/dist/endpoint-microservice/restapi/commands/impl/delete-restapi-endpoint.command.js +10 -0
  131. package/dist/endpoint-microservice/restapi/commands/impl/delete-restapi-endpoint.command.js.map +1 -0
  132. package/dist/endpoint-microservice/restapi/commands/impl/index.d.ts +3 -0
  133. package/dist/endpoint-microservice/restapi/commands/impl/index.js +20 -0
  134. package/dist/endpoint-microservice/restapi/commands/impl/index.js.map +1 -0
  135. package/dist/endpoint-microservice/restapi/commands/impl/update-restapi-endpoint.command.d.ts +4 -0
  136. package/dist/endpoint-microservice/restapi/commands/impl/update-restapi-endpoint.command.js +10 -0
  137. package/dist/endpoint-microservice/restapi/commands/impl/update-restapi-endpoint.command.js.map +1 -0
  138. package/dist/endpoint-microservice/restapi/index.d.ts +1 -0
  139. package/dist/endpoint-microservice/restapi/index.js +18 -0
  140. package/dist/endpoint-microservice/restapi/index.js.map +1 -0
  141. package/dist/endpoint-microservice/restapi/queries/handlers/get-open-api-schema.handler.d.ts +12 -0
  142. package/dist/endpoint-microservice/restapi/queries/handlers/get-open-api-schema.handler.js +396 -0
  143. package/dist/endpoint-microservice/restapi/queries/handlers/get-open-api-schema.handler.js.map +1 -0
  144. package/dist/endpoint-microservice/restapi/queries/handlers/index.d.ts +2 -0
  145. package/dist/endpoint-microservice/restapi/queries/handlers/index.js +6 -0
  146. package/dist/endpoint-microservice/restapi/queries/handlers/index.js.map +1 -0
  147. package/dist/endpoint-microservice/restapi/queries/impl/get-open-api-schema.query.d.ts +8 -0
  148. package/dist/endpoint-microservice/restapi/queries/impl/get-open-api-schema.query.js +10 -0
  149. package/dist/endpoint-microservice/restapi/queries/impl/get-open-api-schema.query.js.map +1 -0
  150. package/dist/endpoint-microservice/restapi/queries/impl/index.d.ts +1 -0
  151. package/dist/endpoint-microservice/restapi/queries/impl/index.js +18 -0
  152. package/dist/endpoint-microservice/restapi/queries/impl/index.js.map +1 -0
  153. package/dist/endpoint-microservice/restapi/restapi-endpoint.controller.d.ts +12 -0
  154. package/dist/endpoint-microservice/restapi/restapi-endpoint.controller.js +170 -0
  155. package/dist/endpoint-microservice/restapi/restapi-endpoint.controller.js.map +1 -0
  156. package/dist/endpoint-microservice/restapi/restapi-endpoint.service.d.ts +36 -0
  157. package/dist/endpoint-microservice/restapi/restapi-endpoint.service.js +173 -0
  158. package/dist/endpoint-microservice/restapi/restapi-endpoint.service.js.map +1 -0
  159. package/dist/endpoint-microservice/restapi/restapi.module.d.ts +2 -0
  160. package/dist/endpoint-microservice/restapi/restapi.module.js +33 -0
  161. package/dist/endpoint-microservice/restapi/restapi.module.js.map +1 -0
  162. package/dist/endpoint-microservice/restapi/swagger-endpoint.controller.d.ts +8 -0
  163. package/dist/endpoint-microservice/restapi/swagger-endpoint.controller.js +98 -0
  164. package/dist/endpoint-microservice/restapi/swagger-endpoint.controller.js.map +1 -0
  165. package/dist/endpoint-microservice/shared/default-port.d.ts +1 -0
  166. package/dist/endpoint-microservice/shared/default-port.js +5 -0
  167. package/dist/endpoint-microservice/shared/default-port.js.map +1 -0
  168. package/dist/endpoint-microservice/shared/types/json-schema-type.d.ts +24 -0
  169. package/dist/endpoint-microservice/shared/types/json-schema-type.js +3 -0
  170. package/dist/endpoint-microservice/shared/types/json-schema-type.js.map +1 -0
  171. package/dist/endpoint-microservice/shared/types/open-api-schema.d.ts +2 -0
  172. package/dist/endpoint-microservice/shared/types/open-api-schema.js +3 -0
  173. package/dist/endpoint-microservice/shared/types/open-api-schema.js.map +1 -0
  174. package/dist/endpoint-microservice/shared/types/pagination.interface.d.ts +15 -0
  175. package/dist/endpoint-microservice/shared/types/pagination.interface.js +3 -0
  176. package/dist/endpoint-microservice/shared/types/pagination.interface.js.map +1 -0
  177. package/dist/endpoint-microservice/shared/utils/getOffsetPagination.d.ts +18 -0
  178. package/dist/endpoint-microservice/shared/utils/getOffsetPagination.js +45 -0
  179. package/dist/endpoint-microservice/shared/utils/getOffsetPagination.js.map +1 -0
  180. package/dist/endpoint-microservice/shared/utils/parseHeaders.d.ts +3 -0
  181. package/dist/endpoint-microservice/shared/utils/parseHeaders.js +12 -0
  182. package/dist/endpoint-microservice/shared/utils/parseHeaders.js.map +1 -0
  183. package/dist/index.d.ts +1 -0
  184. package/dist/index.js +6 -0
  185. package/dist/index.js.map +1 -0
  186. package/dist/main.d.ts +1 -0
  187. package/dist/main.js +33 -0
  188. package/dist/main.js.map +1 -0
  189. package/dist/tsconfig.build.tsbuildinfo +1 -0
  190. package/package.json +100 -0
@@ -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("./create-graphql-endpoint.command"), exports);
18
+ __exportStar(require("./delete-graphql-endpoint.command"), exports);
19
+ __exportStar(require("./update-graphql-endpoint.command"), exports);
20
+ __exportStar(require("./update-graphql-endpoint.command"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/endpoint-microservice/graphql/commands/impl/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oEAAgG;AAChG,oEAAgG;AAChG,oEAAgG;AAChG,oEAAgG"}
@@ -0,0 +1,4 @@
1
+ export declare class UpdateGraphqlEndpointCommand {
2
+ readonly endpointId: string;
3
+ constructor(endpointId: string);
4
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpdateGraphqlEndpointCommand = void 0;
4
+ class UpdateGraphqlEndpointCommand {
5
+ constructor(endpointId) {
6
+ this.endpointId = endpointId;
7
+ }
8
+ }
9
+ exports.UpdateGraphqlEndpointCommand = UpdateGraphqlEndpointCommand;
10
+ //# sourceMappingURL=update-graphql-endpoint.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-graphql-endpoint.command.js","sourceRoot":"","sources":["../../../../../src/endpoint-microservice/graphql/commands/impl/update-graphql-endpoint.command.ts"],"names":[],"mappings":";;;AAAA,MAAa,4BAA4B;IACvC,YAAmC,UAAkB;QAAlB,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;CAC1D;AAFD,oEAEC"}
@@ -0,0 +1,9 @@
1
+ import { NextFunction, Request, Response } from 'express';
2
+ import { GraphqlEndpointService } from 'src/endpoint-microservice/graphql/graphql-endpoint.service';
3
+ export declare class GraphqlEndpointController {
4
+ private readonly endpointService;
5
+ constructor(endpointService: GraphqlEndpointService);
6
+ get(organizationId: string, projectName: string, branchName: string, postfix: string, req: Request, res: Response, next: NextFunction): void;
7
+ post(organizationId: string, projectName: string, branchName: string, postfix: string | undefined, req: Request, res: Response, next: NextFunction): void;
8
+ private run;
9
+ }
@@ -0,0 +1,85 @@
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.GraphqlEndpointController = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const swagger_1 = require("@nestjs/swagger");
18
+ const graphql_endpoint_service_1 = require("./graphql-endpoint.service");
19
+ let GraphqlEndpointController = class GraphqlEndpointController {
20
+ constructor(endpointService) {
21
+ this.endpointService = endpointService;
22
+ }
23
+ get(organizationId, projectName, branchName, postfix, req, res, next) {
24
+ this.run({
25
+ organizationId,
26
+ projectName,
27
+ branchName,
28
+ postfix,
29
+ req,
30
+ res,
31
+ next,
32
+ });
33
+ }
34
+ post(organizationId, projectName, branchName, postfix, req, res, next) {
35
+ this.run({
36
+ organizationId,
37
+ projectName,
38
+ branchName,
39
+ postfix,
40
+ req,
41
+ res,
42
+ next,
43
+ });
44
+ }
45
+ run({ organizationId, projectName, branchName, postfix, req, res, next, }) {
46
+ const endpointMiddleware = this.endpointService.getEndpointMiddleware(organizationId, projectName, branchName, postfix);
47
+ if (!endpointMiddleware) {
48
+ return res.status(common_1.HttpStatus.NOT_FOUND).send();
49
+ }
50
+ endpointMiddleware(req, res, next);
51
+ }
52
+ };
53
+ exports.GraphqlEndpointController = GraphqlEndpointController;
54
+ __decorate([
55
+ (0, common_1.Get)(),
56
+ __param(0, (0, common_1.Param)('organizationId')),
57
+ __param(1, (0, common_1.Param)('projectName')),
58
+ __param(2, (0, common_1.Param)('branchName')),
59
+ __param(3, (0, common_1.Param)('postfix')),
60
+ __param(4, (0, common_1.Req)()),
61
+ __param(5, (0, common_1.Res)()),
62
+ __param(6, (0, common_1.Next)()),
63
+ __metadata("design:type", Function),
64
+ __metadata("design:paramtypes", [String, String, String, String, Object, Object, Function]),
65
+ __metadata("design:returntype", void 0)
66
+ ], GraphqlEndpointController.prototype, "get", null);
67
+ __decorate([
68
+ (0, common_1.Post)(),
69
+ __param(0, (0, common_1.Param)('organizationId')),
70
+ __param(1, (0, common_1.Param)('projectName')),
71
+ __param(2, (0, common_1.Param)('branchName')),
72
+ __param(3, (0, common_1.Param)('postfix')),
73
+ __param(4, (0, common_1.Req)()),
74
+ __param(5, (0, common_1.Res)()),
75
+ __param(6, (0, common_1.Next)()),
76
+ __metadata("design:type", Function),
77
+ __metadata("design:paramtypes", [String, String, String, String, Object, Object, Function]),
78
+ __metadata("design:returntype", void 0)
79
+ ], GraphqlEndpointController.prototype, "post", null);
80
+ exports.GraphqlEndpointController = GraphqlEndpointController = __decorate([
81
+ (0, swagger_1.ApiExcludeController)(),
82
+ (0, common_1.Controller)('endpoint/graphql/:organizationId/:projectName/:branchName/:postfix'),
83
+ __metadata("design:paramtypes", [graphql_endpoint_service_1.GraphqlEndpointService])
84
+ ], GraphqlEndpointController);
85
+ //# sourceMappingURL=graphql-endpoint.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-endpoint.controller.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CASwB;AACxB,6CAAuD;AAEvD,yEAAoG;AAM7F,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAA6B,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAGxE,GAAG,CACwB,cAAsB,EACzB,WAAmB,EACpB,UAAkB,EAEvC,OAAe,EAEf,GAAY,EACL,GAAa,EACZ,IAAkB;QAE1B,IAAI,CAAC,GAAG,CAAC;YACP,cAAc;YACd,WAAW;YACX,UAAU;YACV,OAAO;YACP,GAAG;YACH,GAAG;YACH,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CACuB,cAAsB,EACzB,WAAmB,EACpB,UAAkB,EAEvC,OAA2B,EACpB,GAAY,EACZ,GAAa,EACZ,IAAkB;QAE1B,IAAI,CAAC,GAAG,CAAC;YACP,cAAc;YACd,WAAW;YACX,UAAU;YACV,OAAO;YACP,GAAG;YACH,GAAG;YACH,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAEO,GAAG,CAAC,EACV,cAAc,EACd,WAAW,EACX,UAAU,EACV,OAAO,EACP,GAAG,EACH,GAAG,EACH,IAAI,GASL;QACC,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CACnE,cAAc,EACd,WAAW,EACX,UAAU,EACV,OAAO,CACR,CAAC;QAEF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,MAAM,CAAC,mBAAU,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,CAAC;QAED,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;CACF,CAAA;AA9EY,8DAAyB;AAIpC;IADC,IAAA,YAAG,GAAE;IAEH,WAAA,IAAA,cAAK,EAAC,gBAAgB,CAAC,CAAA;IACvB,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;IACpB,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAEhB,WAAA,IAAA,YAAG,GAAE,CAAA;IAEL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;oDAWR;AAGD;IADC,IAAA,aAAI,GAAE;IAEJ,WAAA,IAAA,cAAK,EAAC,gBAAgB,CAAC,CAAA;IACvB,WAAA,IAAA,cAAK,EAAC,aAAa,CAAC,CAAA;IACpB,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;IACnB,WAAA,IAAA,cAAK,EAAC,SAAS,CAAC,CAAA;IAEhB,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,YAAG,GAAE,CAAA;IACL,WAAA,IAAA,aAAI,GAAE,CAAA;;;;qDAWR;oCA9CU,yBAAyB;IAJrC,IAAA,8BAAoB,GAAE;IACtB,IAAA,mBAAU,EACT,oEAAoE,CACrE;qCAE+C,iDAAsB;GADzD,yBAAyB,CA8ErC"}
@@ -0,0 +1,20 @@
1
+ /// <reference types="qs" />
2
+ import { QueryBus } from '@nestjs/cqrs';
3
+ import { RequestHandler } from 'express';
4
+ import { PrismaService } from 'src/endpoint-microservice/database/prisma.service';
5
+ export declare class GraphqlEndpointService {
6
+ private prisma;
7
+ private queryBus;
8
+ private readonly logger;
9
+ private map;
10
+ private startedEndpointIds;
11
+ constructor(prisma: PrismaService, queryBus: QueryBus);
12
+ getEndpointMiddleware(organizationId: string, projectName: string, branchName: string, postfix: string): RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
13
+ existEndpoint(endpointId: string): boolean;
14
+ stopEndpoint(endpointId: string): Promise<void>;
15
+ runEndpoint(endpointId: string): Promise<void>;
16
+ private _run;
17
+ private getPostfix;
18
+ private getUrl;
19
+ private getDbEndpoint;
20
+ }
@@ -0,0 +1,138 @@
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 GraphqlEndpointService_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.GraphqlEndpointService = void 0;
14
+ const server_1 = require("@apollo/server");
15
+ const default_1 = require("@apollo/server/plugin/landingPage/default");
16
+ const express4_1 = require("@apollo/server/express4");
17
+ const common_1 = require("@nestjs/common");
18
+ const cqrs_1 = require("@nestjs/cqrs");
19
+ const prisma_service_1 = require("../database/prisma.service");
20
+ const impl_1 = require("./queries/impl");
21
+ const parseHeaders_1 = require("../shared/utils/parseHeaders");
22
+ let GraphqlEndpointService = GraphqlEndpointService_1 = class GraphqlEndpointService {
23
+ constructor(prisma, queryBus) {
24
+ this.prisma = prisma;
25
+ this.queryBus = queryBus;
26
+ this.logger = new common_1.Logger(GraphqlEndpointService_1.name);
27
+ this.map = new Map();
28
+ this.startedEndpointIds = [];
29
+ }
30
+ getEndpointMiddleware(organizationId, projectName, branchName, postfix) {
31
+ const item = this.map.get(this.getUrl(organizationId, projectName, branchName, postfix));
32
+ return item?.middleware;
33
+ }
34
+ existEndpoint(endpointId) {
35
+ return this.startedEndpointIds.includes(endpointId);
36
+ }
37
+ async stopEndpoint(endpointId) {
38
+ if (!this.startedEndpointIds.includes(endpointId)) {
39
+ throw new Error(`${endpointId} is not started`);
40
+ }
41
+ const [url, item] = [...this.map.entries()].find(([_, mapValue]) => mapValue.endpointId === endpointId);
42
+ if (item) {
43
+ await item.apollo.stop();
44
+ this.map.delete(url);
45
+ }
46
+ this.startedEndpointIds = this.startedEndpointIds.filter((id) => id !== endpointId);
47
+ this.logger.log(`stopped endpoint name=${url} endpointId=${endpointId}`);
48
+ }
49
+ async runEndpoint(endpointId) {
50
+ if (this.startedEndpointIds.includes(endpointId)) {
51
+ throw new Error(`${endpointId} already started`);
52
+ }
53
+ const dbEndpoint = await this.getDbEndpoint(endpointId);
54
+ const { revision: { branch, ...revision }, } = dbEndpoint;
55
+ const url = this.getUrl(branch.project.organizationId, branch.project.name, branch.name, this.getPostfix(revision));
56
+ const apollo = await this._run(revision.id);
57
+ this.startedEndpointIds.push(endpointId);
58
+ this.map.set(url, {
59
+ middleware: (0, express4_1.expressMiddleware)(apollo, {
60
+ context: async ({ req }) => {
61
+ return { headers: (0, parseHeaders_1.parseHeaders)(req.headers) };
62
+ },
63
+ }),
64
+ apollo,
65
+ endpointId,
66
+ });
67
+ this.logger.log(`started endpoint name=${url} endpointId=${endpointId}`);
68
+ }
69
+ async _run(revisionId) {
70
+ const graphqlSchema = await this.queryBus.execute(new impl_1.GetGraphqlSchemaQuery({
71
+ revisionId,
72
+ }));
73
+ const tables = Object.keys(graphqlSchema.getQueryType().getFields()).filter((field) => field !== '_service');
74
+ const table = tables[0] || 'Table';
75
+ const server = new server_1.ApolloServer({
76
+ schema: graphqlSchema,
77
+ introspection: true,
78
+ plugins: [
79
+ (0, default_1.ApolloServerPluginLandingPageLocalDefault)({
80
+ document: `query ExampleQuery {
81
+ ${table} {
82
+ edges {
83
+ node {
84
+ id
85
+ }
86
+ }
87
+ pageInfo {
88
+ startCursor
89
+ endCursor
90
+ hasPreviousPage
91
+ hasNextPage
92
+ }
93
+ totalCount
94
+ }
95
+ }
96
+ `,
97
+ }),
98
+ ],
99
+ });
100
+ await server.start();
101
+ return server;
102
+ }
103
+ getPostfix(revision) {
104
+ if (revision.isHead) {
105
+ return 'head';
106
+ }
107
+ if (revision.isDraft) {
108
+ return 'draft';
109
+ }
110
+ return revision.id;
111
+ }
112
+ getUrl(organizationId, projectName, branchName, postfix) {
113
+ return `${organizationId}/${projectName}/${branchName}/${postfix}`;
114
+ }
115
+ getDbEndpoint(endpointId) {
116
+ return this.prisma.endpoint.findUniqueOrThrow({
117
+ where: { id: endpointId },
118
+ include: {
119
+ revision: {
120
+ include: {
121
+ branch: {
122
+ include: {
123
+ project: true,
124
+ },
125
+ },
126
+ },
127
+ },
128
+ },
129
+ });
130
+ }
131
+ };
132
+ exports.GraphqlEndpointService = GraphqlEndpointService;
133
+ exports.GraphqlEndpointService = GraphqlEndpointService = GraphqlEndpointService_1 = __decorate([
134
+ (0, common_1.Injectable)(),
135
+ __metadata("design:paramtypes", [prisma_service_1.PrismaService,
136
+ cqrs_1.QueryBus])
137
+ ], GraphqlEndpointService);
138
+ //# sourceMappingURL=graphql-endpoint.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql-endpoint.service.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql-endpoint.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare class GraphqlModule {
2
+ }
@@ -0,0 +1,28 @@
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.GraphqlModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const cqrs_1 = require("@nestjs/cqrs");
12
+ const core_api_module_1 = require("../core-api/core-api.module");
13
+ const database_module_1 = require("../database/database.module");
14
+ const handlers_1 = require("./commands/handlers");
15
+ const graphql_endpoint_controller_1 = require("./graphql-endpoint.controller");
16
+ const graphql_endpoint_service_1 = require("./graphql-endpoint.service");
17
+ const handlers_2 = require("./queries/handlers");
18
+ let GraphqlModule = class GraphqlModule {
19
+ };
20
+ exports.GraphqlModule = GraphqlModule;
21
+ exports.GraphqlModule = GraphqlModule = __decorate([
22
+ (0, common_1.Module)({
23
+ imports: [cqrs_1.CqrsModule, database_module_1.DatabaseModule, core_api_module_1.CoreApiModule],
24
+ providers: [graphql_endpoint_service_1.GraphqlEndpointService, ...handlers_1.GRAPHQL_COMMANDS, ...handlers_2.GRAPHQL_QUERIES],
25
+ controllers: [graphql_endpoint_controller_1.GraphqlEndpointController],
26
+ })
27
+ ], GraphqlModule);
28
+ //# sourceMappingURL=graphql.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.module.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/graphql.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,uCAA0C;AAC1C,iEAAmF;AACnF,iEAAoF;AACpF,kDAAuF;AACvF,+EAA0G;AAC1G,yEAAoG;AACpG,iDAAqF;AAO9E,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,sCAAa;wBAAb,aAAa;IALzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,iBAAU,EAAE,gCAAc,EAAE,+BAAa,CAAC;QACpD,SAAS,EAAE,CAAC,iDAAsB,EAAE,GAAG,2BAAgB,EAAE,GAAG,0BAAe,CAAC;QAC5E,WAAW,EAAE,CAAC,uDAAyB,CAAC;KACzC,CAAC;GACW,aAAa,CAAG"}
@@ -0,0 +1 @@
1
+ export * from 'src/endpoint-microservice/graphql/commands/impl';
@@ -0,0 +1,18 @@
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("./commands/impl"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/endpoint-microservice/graphql/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgE"}
@@ -0,0 +1,26 @@
1
+ import { IQueryHandler } from '@nestjs/cqrs';
2
+ import { GraphQLSchema } from 'graphql/type';
3
+ import { InternalCoreApiService } from 'src/endpoint-microservice/core-api/internal-core-api.service';
4
+ import { ProxyCoreApiService } from 'src/endpoint-microservice/core-api/proxy-core-api.service';
5
+ import { GetGraphqlSchemaQuery } from 'src/endpoint-microservice/graphql/queries/impl';
6
+ import { JsonSchemaType } from 'src/endpoint-microservice/shared/types/json-schema-type';
7
+ export type GetJsonSchemasReturnType = {
8
+ id: string;
9
+ versionId: string;
10
+ data: JsonSchemaType;
11
+ }[];
12
+ export declare class GetGraphqlSchemaHandler implements IQueryHandler<GetGraphqlSchemaQuery> {
13
+ private readonly internalCoreApi;
14
+ private readonly proxyCoreApi;
15
+ constructor(internalCoreApi: InternalCoreApiService, proxyCoreApi: ProxyCoreApiService);
16
+ execute({ data, }: GetGraphqlSchemaQuery): Promise<GraphQLSchema>;
17
+ private getNodeType;
18
+ private getEdgeType;
19
+ private getTableConnection;
20
+ private getTableInput;
21
+ private getQueryFields;
22
+ private getRootSchema;
23
+ private getArrayItems;
24
+ private getObjectSchema;
25
+ private getSchemas;
26
+ }
@@ -0,0 +1,234 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GetGraphqlSchemaHandler = void 0;
13
+ const cqrs_1 = require("@nestjs/cqrs");
14
+ const type_1 = require("graphql/type");
15
+ const utilities_1 = require("graphql/utilities");
16
+ const internal_core_api_service_1 = require("../../../core-api/internal-core-api.service");
17
+ const proxy_core_api_service_1 = require("../../../core-api/proxy-core-api.service");
18
+ const impl_1 = require("../impl");
19
+ const DateTimeType = new type_1.GraphQLScalarType({
20
+ name: 'DataTime',
21
+ });
22
+ const PageInfo = new type_1.GraphQLObjectType({
23
+ name: 'PageInfo',
24
+ fields: {
25
+ startCursor: { type: type_1.GraphQLString },
26
+ endCursor: { type: type_1.GraphQLString },
27
+ hasNextPage: { type: new type_1.GraphQLNonNull(type_1.GraphQLBoolean) },
28
+ hasPreviousPage: { type: new type_1.GraphQLNonNull(type_1.GraphQLBoolean) },
29
+ },
30
+ });
31
+ const ServiceType = new type_1.GraphQLObjectType({
32
+ name: '_Service',
33
+ fields: {
34
+ sdl: { type: type_1.GraphQLString },
35
+ },
36
+ });
37
+ const DEFAULT_FIRST = 100;
38
+ let GetGraphqlSchemaHandler = class GetGraphqlSchemaHandler {
39
+ constructor(internalCoreApi, proxyCoreApi) {
40
+ this.internalCoreApi = internalCoreApi;
41
+ this.proxyCoreApi = proxyCoreApi;
42
+ }
43
+ async execute({ data, }) {
44
+ let cachedSdl = undefined;
45
+ const schema = new type_1.GraphQLSchema({
46
+ query: new type_1.GraphQLObjectType({
47
+ name: 'Query',
48
+ fields: {
49
+ ...(await this.getQueryFields(data)),
50
+ _service: {
51
+ type: ServiceType,
52
+ resolve: () => {
53
+ if (!cachedSdl) {
54
+ cachedSdl = (0, utilities_1.printSchema)(schema);
55
+ }
56
+ return { sdl: cachedSdl };
57
+ },
58
+ },
59
+ },
60
+ }),
61
+ });
62
+ return schema;
63
+ }
64
+ getNodeType(data, safetyTableId) {
65
+ return new type_1.GraphQLObjectType({
66
+ name: safetyTableId,
67
+ fields: () => ({
68
+ versionId: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
69
+ id: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
70
+ createdAt: { type: new type_1.GraphQLNonNull(DateTimeType) },
71
+ data: {
72
+ type: this.getRootSchema(`Data${safetyTableId}`, data.data),
73
+ },
74
+ }),
75
+ });
76
+ }
77
+ getEdgeType(data, safetyTableId) {
78
+ return new type_1.GraphQLObjectType({
79
+ name: `${safetyTableId}Edge`,
80
+ fields: {
81
+ node: {
82
+ type: new type_1.GraphQLNonNull(this.getNodeType(data, safetyTableId)),
83
+ },
84
+ cursor: { type: new type_1.GraphQLNonNull(type_1.GraphQLString) },
85
+ },
86
+ });
87
+ }
88
+ getTableConnection(data, safetyTableId) {
89
+ return new type_1.GraphQLObjectType({
90
+ name: `${safetyTableId}Connection`,
91
+ fields: {
92
+ edges: {
93
+ type: new type_1.GraphQLNonNull(new type_1.GraphQLList(new type_1.GraphQLNonNull(this.getEdgeType(data, safetyTableId)))),
94
+ },
95
+ pageInfo: { type: new type_1.GraphQLNonNull(PageInfo) },
96
+ totalCount: { type: new type_1.GraphQLNonNull(type_1.GraphQLFloat) },
97
+ },
98
+ });
99
+ }
100
+ getTableInput(name) {
101
+ return new type_1.GraphQLInputObjectType({
102
+ name: `Get${name}Input`,
103
+ fields: {
104
+ first: { type: type_1.GraphQLFloat },
105
+ after: { type: type_1.GraphQLString },
106
+ },
107
+ });
108
+ }
109
+ async getQueryFields({ revisionId, }) {
110
+ const mapper = {};
111
+ for (const rowSchema of await this.getSchemas(revisionId)) {
112
+ if (isEmptyObject(rowSchema.data)) {
113
+ continue;
114
+ }
115
+ const safetyTableId = getSafetyName(rowSchema.id, 'INVALID_TABLE_NAME');
116
+ mapper[safetyTableId] = {
117
+ type: new type_1.GraphQLNonNull(this.getTableConnection(rowSchema, safetyTableId)),
118
+ args: {
119
+ data: { type: this.getTableInput(safetyTableId) },
120
+ },
121
+ resolve: async (_, { data }, context) => {
122
+ return this.proxyCoreApi.rows({
123
+ revisionId,
124
+ tableId: rowSchema.id,
125
+ first: data?.first || DEFAULT_FIRST,
126
+ after: data?.after,
127
+ }, { headers: context.headers });
128
+ },
129
+ };
130
+ }
131
+ return mapper;
132
+ }
133
+ getRootSchema(name, schema) {
134
+ switch (schema.type) {
135
+ case 'object':
136
+ return new type_1.GraphQLNonNull(this.getObjectSchema(name, schema));
137
+ case 'array':
138
+ return new type_1.GraphQLNonNull(new type_1.GraphQLList(this.getArrayItems(name, schema.items)));
139
+ case 'string':
140
+ return new type_1.GraphQLNonNull(type_1.GraphQLString);
141
+ case 'number':
142
+ return new type_1.GraphQLNonNull(type_1.GraphQLFloat);
143
+ case 'boolean':
144
+ return new type_1.GraphQLNonNull(type_1.GraphQLBoolean);
145
+ default:
146
+ throw new Error('Invalid type');
147
+ }
148
+ }
149
+ getArrayItems(name, schema) {
150
+ switch (schema.type) {
151
+ case 'string':
152
+ return new type_1.GraphQLNonNull(type_1.GraphQLString);
153
+ case 'number':
154
+ return new type_1.GraphQLNonNull(type_1.GraphQLFloat);
155
+ case 'boolean':
156
+ return new type_1.GraphQLNonNull(type_1.GraphQLBoolean);
157
+ case 'object':
158
+ return new type_1.GraphQLNonNull(this.getObjectSchema(`${name}_Items`, schema));
159
+ case 'array':
160
+ return new type_1.GraphQLNonNull(new type_1.GraphQLList(this.getArrayItems(`${name}_Items`, schema.items)));
161
+ default:
162
+ throw new Error('Invalid type');
163
+ }
164
+ }
165
+ getObjectSchema(name, schema) {
166
+ const fields = {};
167
+ Object.entries(schema.properties)
168
+ .filter((property) => !isEmptyObject(property[1]))
169
+ .forEach(([key, itemSchema]) => {
170
+ if (getSafetyName(key, 'field') !== key) {
171
+ }
172
+ else {
173
+ if (itemSchema.type === 'string') {
174
+ fields[key] = { type: new type_1.GraphQLNonNull(type_1.GraphQLString) };
175
+ }
176
+ else if (itemSchema.type === 'number') {
177
+ fields[key] = { type: new type_1.GraphQLNonNull(type_1.GraphQLFloat) };
178
+ }
179
+ else if (itemSchema.type === 'boolean') {
180
+ fields[key] = { type: new type_1.GraphQLNonNull(type_1.GraphQLBoolean) };
181
+ }
182
+ else if (itemSchema.type === 'object') {
183
+ fields[key] = {
184
+ type: new type_1.GraphQLNonNull(this.getObjectSchema(`${name}_${key}`, itemSchema)),
185
+ };
186
+ }
187
+ else if (itemSchema.type === 'array') {
188
+ fields[key] = {
189
+ type: new type_1.GraphQLNonNull(new type_1.GraphQLList(this.getArrayItems(`${name}_${key}`, itemSchema.items))),
190
+ };
191
+ }
192
+ }
193
+ });
194
+ return new type_1.GraphQLObjectType({
195
+ name,
196
+ fields: () => fields,
197
+ });
198
+ }
199
+ async getSchemas(revisionId) {
200
+ const result = await this.internalCoreApi.rows({
201
+ revisionId,
202
+ tableId: 'schema',
203
+ first: 1000,
204
+ });
205
+ return result.edges.map((edge) => edge.node);
206
+ }
207
+ };
208
+ exports.GetGraphqlSchemaHandler = GetGraphqlSchemaHandler;
209
+ exports.GetGraphqlSchemaHandler = GetGraphqlSchemaHandler = __decorate([
210
+ (0, cqrs_1.QueryHandler)(impl_1.GetGraphqlSchemaQuery),
211
+ __metadata("design:paramtypes", [internal_core_api_service_1.InternalCoreApiService,
212
+ proxy_core_api_service_1.ProxyCoreApiService])
213
+ ], GetGraphqlSchemaHandler);
214
+ const isEmptyObject = (schema) => {
215
+ if (schema.type === 'object' && !Object.keys(schema.properties).length) {
216
+ return true;
217
+ }
218
+ if (schema.type === 'array') {
219
+ return isEmptyObject(schema.items);
220
+ }
221
+ return false;
222
+ };
223
+ const startName = /[_a-zA-Z]/;
224
+ const containName = /^[_a-zA-Z0-9]+$/;
225
+ const getSafetyName = (name, prefix) => {
226
+ if (!startName.test(name[0])) {
227
+ return getSafetyName(`${prefix}_${name}`, prefix);
228
+ }
229
+ if (!containName.test(name)) {
230
+ return getSafetyName(name.replace(/[^_a-zA-Z0-9]/g, '_'), prefix);
231
+ }
232
+ return name;
233
+ };
234
+ //# sourceMappingURL=get-graphql-schema.handler.js.map