@restorecommerce/facade 1.2.0 → 1.3.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 (254) hide show
  1. package/.eslintignore +3 -0
  2. package/.eslintrc.cjs +13 -0
  3. package/CHANGELOG.md +11 -0
  4. package/codegen/index.d.ts +1 -1
  5. package/codegen/index.js +18 -44
  6. package/debug-run.ts +7 -6
  7. package/dist/gql/index.d.ts +1 -1
  8. package/dist/gql/index.js +1 -17
  9. package/dist/gql/protos/federation.d.ts +3 -3
  10. package/dist/gql/protos/federation.js +16 -24
  11. package/dist/gql/protos/graphql.d.ts +4 -4
  12. package/dist/gql/protos/graphql.js +64 -42
  13. package/dist/gql/protos/index.d.ts +6 -6
  14. package/dist/gql/protos/index.js +6 -22
  15. package/dist/gql/protos/registry.d.ts +6 -6
  16. package/dist/gql/protos/registry.js +157 -176
  17. package/dist/gql/protos/resolvers.d.ts +3 -3
  18. package/dist/gql/protos/resolvers.js +78 -104
  19. package/dist/gql/protos/schema.d.ts +4 -4
  20. package/dist/gql/protos/schema.js +40 -53
  21. package/dist/gql/protos/types.d.ts +3 -3
  22. package/dist/gql/protos/types.js +1 -4
  23. package/dist/gql/protos/utils.d.ts +3 -3
  24. package/dist/gql/protos/utils.js +23 -62
  25. package/dist/gql/types/AccessControlTypes.js +13 -16
  26. package/dist/gql/types/DateType.js +4 -7
  27. package/dist/gql/types/FilterType.js +7 -10
  28. package/dist/gql/types/MetaType.js +8 -11
  29. package/dist/gql/types/ScopeType.js +4 -7
  30. package/dist/gql/types/SortType.js +5 -8
  31. package/dist/gql/types/StatusType.js +4 -7
  32. package/dist/gql/types/index.d.ts +7 -7
  33. package/dist/gql/types/index.js +7 -23
  34. package/dist/index.d.ts +14 -14
  35. package/dist/index.js +195 -207
  36. package/dist/interfaces.d.ts +8 -8
  37. package/dist/interfaces.js +1 -2
  38. package/dist/middlewares/index.d.ts +1 -1
  39. package/dist/middlewares/index.js +1 -17
  40. package/dist/middlewares/req-res-logger/index.d.ts +2 -2
  41. package/dist/middlewares/req-res-logger/index.js +33 -31
  42. package/dist/modules/access-control/gql/federation.d.ts +1 -1
  43. package/dist/modules/access-control/gql/federation.js +10 -17
  44. package/dist/modules/access-control/gql/schema.d.ts +1 -1
  45. package/dist/modules/access-control/gql/schema.generated.d.ts +136 -110
  46. package/dist/modules/access-control/gql/schema.generated.js +22 -25
  47. package/dist/modules/access-control/gql/schema.js +5 -9
  48. package/dist/modules/access-control/gql/types.d.ts +2 -2
  49. package/dist/modules/access-control/gql/types.js +13 -17
  50. package/dist/modules/access-control/grpc/index.d.ts +5 -5
  51. package/dist/modules/access-control/grpc/index.js +10 -14
  52. package/dist/modules/access-control/index.d.ts +2 -2
  53. package/dist/modules/access-control/index.js +20 -17
  54. package/dist/modules/access-control/interfaces.d.ts +3 -3
  55. package/dist/modules/access-control/interfaces.js +1 -4
  56. package/dist/modules/catalog/gql/federation.d.ts +1 -1
  57. package/dist/modules/catalog/gql/federation.js +10 -17
  58. package/dist/modules/catalog/gql/schema.d.ts +1 -1
  59. package/dist/modules/catalog/gql/schema.generated.d.ts +252 -226
  60. package/dist/modules/catalog/gql/schema.generated.js +20 -23
  61. package/dist/modules/catalog/gql/schema.js +5 -9
  62. package/dist/modules/catalog/gql/types.d.ts +2 -2
  63. package/dist/modules/catalog/gql/types.js +15 -19
  64. package/dist/modules/catalog/grpc/index.d.ts +6 -6
  65. package/dist/modules/catalog/grpc/index.js +12 -16
  66. package/dist/modules/catalog/index.d.ts +2 -2
  67. package/dist/modules/catalog/index.js +20 -17
  68. package/dist/modules/catalog/interfaces.d.ts +3 -3
  69. package/dist/modules/catalog/interfaces.js +1 -4
  70. package/dist/modules/facade-status/gql/index.js +8 -14
  71. package/dist/modules/facade-status/gql/resolvers.d.ts +1 -1
  72. package/dist/modules/facade-status/gql/resolvers.js +14 -8
  73. package/dist/modules/facade-status/gql/schema.d.ts +1 -1
  74. package/dist/modules/facade-status/gql/schema.generated.d.ts +34 -11
  75. package/dist/modules/facade-status/gql/schema.generated.js +1 -2
  76. package/dist/modules/facade-status/gql/schema.js +6 -9
  77. package/dist/modules/facade-status/gql/types.js +3 -6
  78. package/dist/modules/facade-status/index.d.ts +1 -1
  79. package/dist/modules/facade-status/index.js +4 -7
  80. package/dist/modules/facade-status/interfaces.d.ts +1 -1
  81. package/dist/modules/facade-status/interfaces.js +1 -2
  82. package/dist/modules/fulfillment/gql/federation.d.ts +1 -1
  83. package/dist/modules/fulfillment/gql/federation.js +10 -17
  84. package/dist/modules/fulfillment/gql/schema.d.ts +1 -1
  85. package/dist/modules/fulfillment/gql/schema.generated.d.ts +249 -223
  86. package/dist/modules/fulfillment/gql/schema.generated.js +20 -23
  87. package/dist/modules/fulfillment/gql/schema.js +5 -9
  88. package/dist/modules/fulfillment/gql/types.d.ts +2 -2
  89. package/dist/modules/fulfillment/gql/types.js +11 -15
  90. package/dist/modules/fulfillment/grpc/index.d.ts +3 -3
  91. package/dist/modules/fulfillment/grpc/index.js +6 -10
  92. package/dist/modules/fulfillment/index.d.ts +2 -2
  93. package/dist/modules/fulfillment/index.js +20 -17
  94. package/dist/modules/fulfillment/interfaces.d.ts +3 -3
  95. package/dist/modules/fulfillment/interfaces.js +1 -4
  96. package/dist/modules/identity/api-key/api-key.d.ts +2 -2
  97. package/dist/modules/identity/api-key/api-key.js +45 -65
  98. package/dist/modules/identity/gql/federation.d.ts +2 -2
  99. package/dist/modules/identity/gql/federation.js +5 -9
  100. package/dist/modules/identity/gql/schema.d.ts +1 -1
  101. package/dist/modules/identity/gql/schema.generated.d.ts +284 -255
  102. package/dist/modules/identity/gql/schema.generated.js +20 -23
  103. package/dist/modules/identity/gql/schema.js +5 -9
  104. package/dist/modules/identity/gql/types.d.ts +2 -2
  105. package/dist/modules/identity/gql/types.js +17 -21
  106. package/dist/modules/identity/grpc/index.d.ts +6 -6
  107. package/dist/modules/identity/grpc/index.js +12 -16
  108. package/dist/modules/identity/index.d.ts +4 -4
  109. package/dist/modules/identity/index.js +24 -21
  110. package/dist/modules/identity/interfaces.d.ts +5 -5
  111. package/dist/modules/identity/interfaces.js +1 -4
  112. package/dist/modules/identity/oauth/oauth.d.ts +4 -4
  113. package/dist/modules/identity/oauth/oauth.js +109 -135
  114. package/dist/modules/identity/oidc/adapter.d.ts +3 -3
  115. package/dist/modules/identity/oidc/adapter.js +111 -92
  116. package/dist/modules/identity/oidc/in-memory-adapter.d.ts +1 -1
  117. package/dist/modules/identity/oidc/in-memory-adapter.js +64 -50
  118. package/dist/modules/identity/oidc/index.d.ts +6 -6
  119. package/dist/modules/identity/oidc/index.js +29 -30
  120. package/dist/modules/identity/oidc/interfaces.d.ts +6 -6
  121. package/dist/modules/identity/oidc/interfaces.js +2 -6
  122. package/dist/modules/identity/oidc/password-grant.d.ts +1 -1
  123. package/dist/modules/identity/oidc/password-grant.js +43 -66
  124. package/dist/modules/identity/oidc/router.d.ts +6 -6
  125. package/dist/modules/identity/oidc/router.js +31 -26
  126. package/dist/modules/identity/oidc/templates.d.ts +1 -1
  127. package/dist/modules/identity/oidc/templates.js +45 -41
  128. package/dist/modules/identity/oidc/user.d.ts +4 -4
  129. package/dist/modules/identity/oidc/user.js +31 -29
  130. package/dist/modules/identity/oidc/utils.d.ts +2 -2
  131. package/dist/modules/identity/oidc/utils.js +6 -13
  132. package/dist/modules/index.d.ts +13 -13
  133. package/dist/modules/index.js +13 -29
  134. package/dist/modules/indexing/gql/federation.d.ts +1 -1
  135. package/dist/modules/indexing/gql/federation.js +10 -17
  136. package/dist/modules/indexing/gql/schema.d.ts +1 -1
  137. package/dist/modules/indexing/gql/schema.generated.d.ts +45 -19
  138. package/dist/modules/indexing/gql/schema.generated.js +2 -5
  139. package/dist/modules/indexing/gql/schema.js +5 -9
  140. package/dist/modules/indexing/gql/types.d.ts +2 -2
  141. package/dist/modules/indexing/gql/types.js +7 -11
  142. package/dist/modules/indexing/grpc/index.d.ts +2 -2
  143. package/dist/modules/indexing/grpc/index.js +4 -8
  144. package/dist/modules/indexing/index.d.ts +2 -2
  145. package/dist/modules/indexing/index.js +20 -17
  146. package/dist/modules/indexing/interfaces.d.ts +3 -3
  147. package/dist/modules/indexing/interfaces.js +1 -4
  148. package/dist/modules/invoicing/gql/federation.d.ts +1 -1
  149. package/dist/modules/invoicing/gql/federation.js +10 -17
  150. package/dist/modules/invoicing/gql/schema.d.ts +1 -1
  151. package/dist/modules/invoicing/gql/schema.generated.d.ts +209 -183
  152. package/dist/modules/invoicing/gql/schema.generated.js +20 -23
  153. package/dist/modules/invoicing/gql/schema.js +5 -9
  154. package/dist/modules/invoicing/gql/types.d.ts +2 -2
  155. package/dist/modules/invoicing/gql/types.js +7 -11
  156. package/dist/modules/invoicing/grpc/index.d.ts +2 -2
  157. package/dist/modules/invoicing/grpc/index.js +4 -8
  158. package/dist/modules/invoicing/index.d.ts +2 -2
  159. package/dist/modules/invoicing/index.js +20 -17
  160. package/dist/modules/invoicing/interfaces.d.ts +3 -3
  161. package/dist/modules/invoicing/interfaces.js +1 -4
  162. package/dist/modules/notification/gql/federation.d.ts +1 -1
  163. package/dist/modules/notification/gql/federation.js +10 -17
  164. package/dist/modules/notification/gql/schema.d.ts +1 -1
  165. package/dist/modules/notification/gql/schema.generated.d.ts +100 -74
  166. package/dist/modules/notification/gql/schema.generated.js +18 -21
  167. package/dist/modules/notification/gql/schema.js +5 -9
  168. package/dist/modules/notification/gql/types.d.ts +2 -2
  169. package/dist/modules/notification/gql/types.js +7 -11
  170. package/dist/modules/notification/grpc/index.d.ts +2 -2
  171. package/dist/modules/notification/grpc/index.js +4 -8
  172. package/dist/modules/notification/index.d.ts +2 -2
  173. package/dist/modules/notification/index.js +20 -17
  174. package/dist/modules/notification/interfaces.d.ts +3 -3
  175. package/dist/modules/notification/interfaces.js +1 -4
  176. package/dist/modules/ordering/gql/federation.d.ts +1 -1
  177. package/dist/modules/ordering/gql/federation.js +10 -17
  178. package/dist/modules/ordering/gql/schema.d.ts +1 -1
  179. package/dist/modules/ordering/gql/schema.generated.d.ts +221 -195
  180. package/dist/modules/ordering/gql/schema.generated.js +22 -25
  181. package/dist/modules/ordering/gql/schema.js +5 -9
  182. package/dist/modules/ordering/gql/types.d.ts +2 -2
  183. package/dist/modules/ordering/gql/types.js +7 -11
  184. package/dist/modules/ordering/grpc/index.d.ts +2 -2
  185. package/dist/modules/ordering/grpc/index.js +4 -8
  186. package/dist/modules/ordering/index.d.ts +2 -2
  187. package/dist/modules/ordering/index.js +20 -17
  188. package/dist/modules/ordering/interfaces.d.ts +3 -3
  189. package/dist/modules/ordering/interfaces.js +1 -4
  190. package/dist/modules/ostorage/gql/federation.d.ts +1 -1
  191. package/dist/modules/ostorage/gql/federation.js +10 -17
  192. package/dist/modules/ostorage/gql/schema.d.ts +1 -1
  193. package/dist/modules/ostorage/gql/schema.generated.d.ts +126 -94
  194. package/dist/modules/ostorage/gql/schema.generated.js +8 -11
  195. package/dist/modules/ostorage/gql/schema.js +5 -9
  196. package/dist/modules/ostorage/gql/types.d.ts +2 -2
  197. package/dist/modules/ostorage/gql/types.js +7 -11
  198. package/dist/modules/ostorage/grpc/index.d.ts +2 -2
  199. package/dist/modules/ostorage/grpc/index.js +4 -8
  200. package/dist/modules/ostorage/index.d.ts +2 -2
  201. package/dist/modules/ostorage/index.js +20 -17
  202. package/dist/modules/ostorage/interfaces.d.ts +3 -3
  203. package/dist/modules/ostorage/interfaces.js +1 -4
  204. package/dist/modules/payment/gql/federation.d.ts +1 -1
  205. package/dist/modules/payment/gql/federation.js +10 -17
  206. package/dist/modules/payment/gql/schema.d.ts +1 -1
  207. package/dist/modules/payment/gql/schema.generated.d.ts +67 -44
  208. package/dist/modules/payment/gql/schema.generated.js +4 -7
  209. package/dist/modules/payment/gql/schema.js +5 -9
  210. package/dist/modules/payment/gql/types.d.ts +2 -2
  211. package/dist/modules/payment/gql/types.js +7 -11
  212. package/dist/modules/payment/grpc/index.d.ts +2 -2
  213. package/dist/modules/payment/grpc/index.js +4 -8
  214. package/dist/modules/payment/index.d.ts +2 -2
  215. package/dist/modules/payment/index.js +20 -17
  216. package/dist/modules/payment/interfaces.d.ts +3 -3
  217. package/dist/modules/payment/interfaces.js +1 -4
  218. package/dist/modules/resource/gql/federation.d.ts +1 -1
  219. package/dist/modules/resource/gql/federation.js +10 -17
  220. package/dist/modules/resource/gql/schema.d.ts +1 -1
  221. package/dist/modules/resource/gql/schema.generated.d.ts +348 -322
  222. package/dist/modules/resource/gql/schema.generated.js +28 -31
  223. package/dist/modules/resource/gql/schema.js +5 -9
  224. package/dist/modules/resource/gql/types.d.ts +2 -2
  225. package/dist/modules/resource/gql/types.js +31 -35
  226. package/dist/modules/resource/grpc/index.d.ts +13 -13
  227. package/dist/modules/resource/grpc/index.js +28 -32
  228. package/dist/modules/resource/index.d.ts +2 -2
  229. package/dist/modules/resource/index.js +20 -17
  230. package/dist/modules/resource/interfaces.d.ts +3 -3
  231. package/dist/modules/resource/interfaces.js +1 -4
  232. package/dist/modules/scheduling/gql/federation.d.ts +1 -1
  233. package/dist/modules/scheduling/gql/federation.js +10 -17
  234. package/dist/modules/scheduling/gql/schema.d.ts +1 -1
  235. package/dist/modules/scheduling/gql/schema.generated.d.ts +109 -83
  236. package/dist/modules/scheduling/gql/schema.generated.js +10 -13
  237. package/dist/modules/scheduling/gql/schema.js +5 -9
  238. package/dist/modules/scheduling/gql/types.d.ts +2 -2
  239. package/dist/modules/scheduling/gql/types.js +7 -11
  240. package/dist/modules/scheduling/grpc/index.d.ts +2 -2
  241. package/dist/modules/scheduling/grpc/index.js +4 -8
  242. package/dist/modules/scheduling/index.d.ts +2 -2
  243. package/dist/modules/scheduling/index.js +20 -17
  244. package/dist/modules/scheduling/interfaces.d.ts +3 -3
  245. package/dist/modules/scheduling/interfaces.js +1 -4
  246. package/dist/utils.d.ts +3 -3
  247. package/dist/utils.js +4 -9
  248. package/generate.ts +42 -42
  249. package/jest.config.cjs +23 -0
  250. package/package.json +17 -12
  251. package/tsconfig-base.json +8 -0
  252. package/tsconfig.debug.json +5 -1
  253. package/tsconfig.test.json +17 -2
  254. package/jest.config.js +0 -14
package/dist/index.js CHANGED
@@ -1,62 +1,42 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
27
9
  };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.createFacade = exports.RestoreCommerceFacade = void 0;
33
- const logger_1 = require("@restorecommerce/logger");
34
- const http_1 = require("http");
35
- const koa_1 = __importDefault(require("koa"));
36
- const bodyParser = require('koa-bodyparser');
37
- const cors = require('@koa/cors');
38
- const server_1 = require("@apollo/server");
39
- const koa_2 = require("@as-integrations/koa");
40
- const graphql_1 = require("graphql");
41
- const gateway_1 = require("@apollo/gateway");
42
- const modules_1 = require("./modules");
43
- const drainHttpServer_1 = require("@apollo/server/plugin/drainHttpServer");
44
- const default_1 = require("@apollo/server/plugin/landingPage/default");
45
- const http_2 = require("http");
46
- const ws_1 = require("ws");
47
- const ws_2 = require("graphql-ws/lib/use/ws");
48
- const _ = __importStar(require("lodash"));
49
- const graphql_tools_1 = require("graphql-tools");
50
- const graphql_tag_1 = __importDefault(require("graphql-tag"));
51
- const protos_1 = require("./gql/protos");
52
- const koa_compose_1 = __importDefault(require("koa-compose"));
53
- const utils_1 = require("./gql/protos/utils");
54
- __exportStar(require("./modules/index"), exports);
55
- __exportStar(require("./middlewares/index"), exports);
56
- __exportStar(require("./interfaces"), exports);
57
- __exportStar(require("./utils"), exports);
58
- __exportStar(require("./gql/index"), exports);
59
- class RestoreCommerceFacade {
10
+ import { createLogger } from '@restorecommerce/logger';
11
+ import { ServerResponse } from 'node:http';
12
+ import Koa from 'koa';
13
+ import { ApolloServer } from '@apollo/server';
14
+ import { koaMiddleware } from '@as-integrations/koa';
15
+ import { GraphQLSchema, printSchema } from 'graphql';
16
+ import { ApolloGateway, LocalGraphQLDataSource, RemoteGraphQLDataSource, IntrospectAndCompose } from '@apollo/gateway';
17
+ import { facadeStatusModule } from './modules/index.js';
18
+ /* eslint-disable */
19
+ import { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';
20
+ /* eslint-disable */
21
+ import { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default';
22
+ import { createServer } from 'node:http';
23
+ import { WebSocketServer } from 'ws';
24
+ /* eslint-disable */
25
+ import { useServer } from 'graphql-ws/lib/use/ws';
26
+ import _ from 'lodash';
27
+ import { makeExecutableSchema } from 'graphql-tools';
28
+ import { gql } from 'graphql-tag';
29
+ import { mergeSubscribeIntoSchema } from './gql/protos/index.js';
30
+ import compose from 'koa-compose';
31
+ import { setUseSubscriptions } from './gql/protos/utils.js';
32
+ import bodyParser from 'koa-bodyparser';
33
+ import cors from '@koa/cors';
34
+ export * from './modules/index.js';
35
+ export * from './middlewares/index.js';
36
+ export * from './interfaces.js';
37
+ export * from './utils.js';
38
+ export * from './gql/index.js';
39
+ export class RestoreCommerceFacade {
60
40
  constructor({ koa, logger, port, hostname, env, kafka }) {
61
41
  this.apolloServices = {};
62
42
  this.allResolvers = {};
@@ -70,7 +50,7 @@ class RestoreCommerceFacade {
70
50
  this.koa = koa;
71
51
  this.env = env !== null && env !== void 0 ? env : 'development';
72
52
  this.kafkaConfig = kafka;
73
- (0, utils_1.setUseSubscriptions)(!!kafka);
53
+ setUseSubscriptions(!!kafka);
74
54
  }
75
55
  get server() {
76
56
  return this._server;
@@ -102,7 +82,7 @@ class RestoreCommerceFacade {
102
82
  return this.modules.some(m => module.moduleName === m.moduleName);
103
83
  }
104
84
  addApolloService({ name, schema, url }) {
105
- if (schema instanceof graphql_1.GraphQLSchema) {
85
+ if (schema instanceof GraphQLSchema) {
106
86
  this.apolloServices[name] = { schema, url };
107
87
  }
108
88
  else if ('federatedSchema' in schema && 'resolvers' in schema) {
@@ -117,174 +97,183 @@ class RestoreCommerceFacade {
117
97
  onStop(fn) {
118
98
  this.stopFns.push(fn);
119
99
  }
120
- async runFnQueue(fns) {
121
- const _fns = [...fns];
122
- const runQueue = async () => {
123
- const fn = _fns.shift();
124
- if (fn) {
125
- try {
126
- await fn();
127
- }
128
- catch (error) {
129
- this.logger.error('Error in start/stop function', error);
130
- }
131
- await runQueue();
132
- }
133
- };
134
- await runQueue();
135
- }
136
- async start() {
137
- if (!this._initialized) {
138
- this.runFnQueue(this.startFns);
139
- await this.mountApolloServer();
140
- this._initialized = true;
141
- }
142
- return new Promise((resolve, reject) => {
143
- var _a;
144
- try {
145
- (_a = this.server) === null || _a === void 0 ? void 0 : _a.listen(this.port, this.hostname, () => {
146
- const address = this.address;
147
- if (address) {
148
- this.logger.info(`Service is listening on ${address.address}:${address.port}`);
100
+ runFnQueue(fns) {
101
+ return __awaiter(this, void 0, void 0, function* () {
102
+ const _fns = [...fns];
103
+ const runQueue = () => __awaiter(this, void 0, void 0, function* () {
104
+ const fn = _fns.shift();
105
+ if (fn) {
106
+ try {
107
+ yield fn();
149
108
  }
150
- else {
151
- this.logger.info(`Service is listening`);
109
+ catch (error) {
110
+ this.logger.error('Error in start/stop function', error);
152
111
  }
153
- resolve();
154
- });
155
- }
156
- catch (err) {
157
- reject(err);
158
- }
112
+ yield runQueue();
113
+ }
114
+ });
115
+ yield runQueue();
159
116
  });
160
117
  }
161
- async stop() {
162
- return new Promise(async (resolve, reject) => {
163
- var _a;
164
- await this.runFnQueue(this.stopFns);
165
- (_a = this.server) === null || _a === void 0 ? void 0 : _a.close((err) => {
166
- if (err) {
167
- this.logger.error(`Error stopping service`, err);
168
- reject(err);
118
+ start() {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ if (!this._initialized) {
121
+ this.runFnQueue(this.startFns);
122
+ yield this.mountApolloServer();
123
+ this._initialized = true;
124
+ }
125
+ return new Promise((resolve, reject) => {
126
+ var _a;
127
+ try {
128
+ (_a = this.server) === null || _a === void 0 ? void 0 : _a.listen(this.port, this.hostname, () => {
129
+ const address = this.address;
130
+ if (address) {
131
+ this.logger.info(`Service is listening on ${address.address}:${address.port}`);
132
+ }
133
+ else {
134
+ this.logger.info(`Service is listening`);
135
+ }
136
+ resolve();
137
+ });
169
138
  }
170
- else {
171
- this.logger.info(`Service stopped`);
172
- this._server = undefined;
173
- resolve();
139
+ catch (err) {
140
+ reject(err);
174
141
  }
175
142
  });
176
143
  });
177
144
  }
178
- async mountApolloServer() {
179
- const serviceList = Object.keys(this.apolloServices).map(key => {
180
- var _a;
181
- return {
182
- name: key,
183
- url: (_a = this.apolloServices[key].url) !== null && _a !== void 0 ? _a : `local`,
184
- };
145
+ stop() {
146
+ return __awaiter(this, void 0, void 0, function* () {
147
+ return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
148
+ var _a;
149
+ yield this.runFnQueue(this.stopFns);
150
+ (_a = this.server) === null || _a === void 0 ? void 0 : _a.close((err) => {
151
+ if (err) {
152
+ this.logger.error(`Error stopping service`, err);
153
+ reject(err);
154
+ }
155
+ else {
156
+ this.logger.info(`Service stopped`);
157
+ this._server = undefined;
158
+ resolve();
159
+ }
160
+ });
161
+ }));
185
162
  });
186
- const gateway = new gateway_1.ApolloGateway({
187
- logger: this.logger,
188
- // serviceList,
189
- supergraphSdl: new gateway_1.IntrospectAndCompose({
190
- subgraphs: serviceList
191
- }),
192
- debug: true,
193
- buildService: ({ name, url }) => {
163
+ }
164
+ mountApolloServer() {
165
+ return __awaiter(this, void 0, void 0, function* () {
166
+ const serviceList = Object.keys(this.apolloServices).map(key => {
194
167
  var _a;
195
- if (url !== 'local') {
196
- return new gateway_1.RemoteGraphQLDataSource({
197
- url,
198
- // TODO willSendRequest
199
- });
200
- }
201
- else {
202
- const schema = (_a = this.apolloServices[name]) === null || _a === void 0 ? void 0 : _a.schema;
203
- if (schema) {
204
- return new gateway_1.LocalGraphQLDataSource(schema);
168
+ return {
169
+ name: key,
170
+ url: (_a = this.apolloServices[key].url) !== null && _a !== void 0 ? _a : `local`,
171
+ };
172
+ });
173
+ const gateway = new ApolloGateway({
174
+ logger: this.logger,
175
+ // serviceList,
176
+ supergraphSdl: new IntrospectAndCompose({
177
+ subgraphs: serviceList
178
+ }),
179
+ debug: true,
180
+ buildService: ({ name, url }) => {
181
+ var _a;
182
+ if (url !== 'local') {
183
+ return new RemoteGraphQLDataSource({
184
+ url,
185
+ // TODO willSendRequest
186
+ });
205
187
  }
206
188
  else {
207
- throw new Error('Invalid schema ' + name);
189
+ const schema = (_a = this.apolloServices[name]) === null || _a === void 0 ? void 0 : _a.schema;
190
+ if (schema) {
191
+ return new LocalGraphQLDataSource(schema);
192
+ }
193
+ else {
194
+ throw new Error('Invalid schema ' + name);
195
+ }
208
196
  }
209
197
  }
210
- }
211
- });
212
- this._server = (0, http_2.createServer)(this.koa.callback());
213
- const wsServer = new ws_1.WebSocketServer({
214
- server: this._server,
215
- path: '/graphql',
216
- });
217
- let serverCleanup;
218
- gateway.onSchemaLoadOrUpdate(schemaContext => {
219
- const typeDefs = (0, graphql_1.printSchema)(new graphql_1.GraphQLSchema({
220
- subscription: schemaContext.apiSchema.getSubscriptionType()
221
- }));
222
- let schema = (0, graphql_tools_1.makeExecutableSchema)({
223
- typeDefs: (0, graphql_tag_1.default)(typeDefs + `
198
+ });
199
+ this._server = createServer(this.koa.callback());
200
+ const wsServer = new WebSocketServer({
201
+ server: this._server,
202
+ path: '/graphql',
203
+ });
204
+ let serverCleanup;
205
+ gateway.onSchemaLoadOrUpdate(schemaContext => {
206
+ const typeDefs = printSchema(new GraphQLSchema({
207
+ subscription: schemaContext.apiSchema.getSubscriptionType()
208
+ }));
209
+ let schema = makeExecutableSchema({
210
+ typeDefs: gql(typeDefs + `
224
211
  type Query { sample: String }
225
212
  `),
226
- resolvers: {
227
- Subscription: {
228
- ...this.allResolvers['Subscription']
213
+ resolvers: {
214
+ Subscription: Object.assign({}, this.allResolvers['Subscription'])
229
215
  }
216
+ });
217
+ if ('Subscription' in this.allResolvers) {
218
+ mergeSubscribeIntoSchema(schema.getSubscriptionType(), this.allResolvers['Subscription']);
230
219
  }
220
+ serverCleanup = useServer({
221
+ schema,
222
+ context: (ctx, message, args) => __awaiter(this, void 0, void 0, function* () {
223
+ const newCtx = this.koa.createContext(ctx.extra.request, new ServerResponse(ctx.extra.request));
224
+ const fn = yield compose(this.koa.middleware);
225
+ yield fn(newCtx);
226
+ newCtx.kafkaConfig = this.kafkaConfig;
227
+ newCtx.logger = this.logger;
228
+ return newCtx;
229
+ }),
230
+ }, wsServer);
231
231
  });
232
- if ('Subscription' in this.allResolvers) {
233
- (0, protos_1.mergeSubscribeIntoSchema)(schema.getSubscriptionType(), this.allResolvers['Subscription']);
234
- }
235
- serverCleanup = (0, ws_2.useServer)({
236
- schema,
237
- context: async (ctx, message, args) => {
238
- const newCtx = this.koa.createContext(ctx.extra.request, new http_1.ServerResponse(ctx.extra.request));
239
- const fn = await (0, koa_compose_1.default)(this.koa.middleware);
240
- await fn(newCtx);
241
- newCtx.kafkaConfig = this.kafkaConfig;
242
- newCtx.logger = this.logger;
243
- return newCtx;
244
- },
245
- }, wsServer);
246
- });
247
- const gqlServer = new server_1.ApolloServer({
248
- gateway,
249
- introspection: true,
250
- allowBatchedHttpRequests: true,
251
- plugins: [
252
- (0, drainHttpServer_1.ApolloServerPluginDrainHttpServer)({ httpServer: this._server }),
253
- (0, default_1.ApolloServerPluginLandingPageLocalDefault)({
254
- embed: true
255
- }),
256
- {
257
- async serverWillStart() {
258
- return {
259
- async drainServer() {
260
- await serverCleanup.dispose();
261
- },
262
- };
232
+ const gqlServer = new ApolloServer({
233
+ gateway,
234
+ introspection: true,
235
+ allowBatchedHttpRequests: true,
236
+ plugins: [
237
+ ApolloServerPluginDrainHttpServer({ httpServer: this._server }),
238
+ ApolloServerPluginLandingPageLocalDefault({
239
+ embed: true
240
+ }),
241
+ {
242
+ serverWillStart() {
243
+ return __awaiter(this, void 0, void 0, function* () {
244
+ return {
245
+ drainServer() {
246
+ return __awaiter(this, void 0, void 0, function* () {
247
+ yield serverCleanup.dispose();
248
+ });
249
+ },
250
+ };
251
+ });
252
+ },
263
253
  },
254
+ ],
255
+ includeStacktraceInErrorResponses: true,
256
+ formatError: (error) => {
257
+ this.logger.error('Error while processing request', { message: error.message });
258
+ this.logger.debug('Error while processing request', { error });
259
+ return {
260
+ message: error.message,
261
+ locations: error.locations,
262
+ stack: error
263
+ };
264
264
  },
265
- ],
266
- includeStacktraceInErrorResponses: true,
267
- formatError: (error) => {
268
- this.logger.error('Error while processing request', { message: error.message });
269
- this.logger.debug('Error while processing request', { error });
270
- return {
271
- message: error.message,
272
- locations: error.locations,
273
- stack: error
274
- };
275
- },
265
+ });
266
+ yield gqlServer.start();
267
+ this.koa.use(cors());
268
+ this.koa.use(bodyParser());
269
+ this.koa.use(koaMiddleware(gqlServer, {
270
+ context: ({ ctx }) => __awaiter(this, void 0, void 0, function* () { return ctx; }),
271
+ }));
276
272
  });
277
- await gqlServer.start();
278
- this.koa.use(cors());
279
- this.koa.use(bodyParser());
280
- this.koa.use((0, koa_2.koaMiddleware)(gqlServer, {
281
- context: async ({ ctx }) => ctx,
282
- }));
283
273
  }
284
274
  }
285
- exports.RestoreCommerceFacade = RestoreCommerceFacade;
286
- function createFacade(config) {
287
- const koa = new koa_1.default();
275
+ export const createFacade = (config) => {
276
+ const koa = new Koa();
288
277
  if (config.env) {
289
278
  koa.env = config.env;
290
279
  }
@@ -299,7 +288,7 @@ function createFacade(config) {
299
288
  return msg;
300
289
  };
301
290
  }
302
- const logger = loggerCfg !== null && loggerCfg !== void 0 ? loggerCfg : (0, logger_1.createLogger)(loggerCfg);
291
+ const logger = loggerCfg !== null && loggerCfg !== void 0 ? loggerCfg : createLogger(loggerCfg);
303
292
  koa.context.logger = logger;
304
293
  return new RestoreCommerceFacade({
305
294
  koa,
@@ -308,6 +297,5 @@ function createFacade(config) {
308
297
  hostname: config.hostname,
309
298
  env: config.env,
310
299
  kafka: config.kafka
311
- }).useModule(modules_1.facadeStatusModule);
312
- }
313
- exports.createFacade = createFacade;
300
+ }).useModule(facadeStatusModule);
301
+ };
@@ -1,10 +1,10 @@
1
1
  /// <reference types="koa-websocket" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- import Koa from 'koa';
5
- import { Logger } from 'winston';
6
- import { Server } from 'http';
7
- import { AddressInfo } from 'net';
2
+ /// <reference types="node" resolution-mode="require"/>
3
+ /// <reference types="node" resolution-mode="require"/>
4
+ import type Koa from 'koa';
5
+ import { type Logger } from 'winston';
6
+ import { type Server } from 'node:http';
7
+ import { type AddressInfo } from 'node:net';
8
8
  type RequireAtLeastOne<T, Keys extends keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
9
9
  [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
10
10
  }[Keys];
@@ -41,7 +41,7 @@ export interface Facade<TModules extends FacadeModuleBase[] = []> {
41
41
  schema: any;
42
42
  }, 'url' | 'schema'>): void;
43
43
  useMiddleware<TNewState extends object = {}, TNewContext extends object = {}>(middleware: Koa.Middleware<TNewState, TNewContext & FacadeModulesContext<TModules>>): Facade<TModules>;
44
- useModule<TNewModule extends FacadeModule>(module: TNewModule): Facade<[...TModules, TNewModule]>;
45
- supportsModule<TSupportedModule extends FacadeModuleBase>(module: TSupportedModule): this is Facade<[TSupportedModule, ...TModules]> & Facade<[...TModules]>;
44
+ useModule<TNewModule extends FacadeModule>(mod: TNewModule): Facade<[...TModules, TNewModule]>;
45
+ supportsModule<TSupportedModule extends FacadeModuleBase>(mod: TSupportedModule): this is Facade<[TSupportedModule, ...TModules]> & Facade<[...TModules]>;
46
46
  }
47
47
  export {};
@@ -1,5 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
1
  ;
4
2
  ;
5
3
  ;
4
+ export {};
@@ -1 +1 @@
1
- export * from './req-res-logger/index';
1
+ export * from './req-res-logger/index.js';
@@ -1,17 +1 @@
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("./req-res-logger/index"), exports);
1
+ export * from './req-res-logger/index.js';
@@ -1,5 +1,5 @@
1
- import * as koa from 'koa';
2
- import { Logger } from 'winston';
1
+ import type * as koa from 'koa';
2
+ import { type Logger } from 'winston';
3
3
  export interface ReqResLoggerOptions {
4
4
  logger?: Logger;
5
5
  logGraphQL?: boolean;
@@ -1,18 +1,37 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import _debug from 'debug';
11
+ import { createLogger } from '@restorecommerce/logger';
12
+ const debug = _debug('@restorecommerce/koa-req-res-logger');
13
+ const getGraphQLData = (opts, body) => {
14
+ if (typeof body !== 'object' || !body) {
15
+ return;
16
+ }
17
+ const line = {};
18
+ if ('operationName' in body) {
19
+ Object.assign(line, { operationName: body.operationName });
20
+ }
21
+ if ('query' in body) {
22
+ Object.assign(line, { query: body.query });
23
+ }
24
+ if (opts.logGraphQLVariables === true && 'variables' in body) {
25
+ Object.assign(line, { variables: body.variables });
26
+ }
27
+ return line;
4
28
  };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.reqResLogger = void 0;
7
- const debug_1 = __importDefault(require("debug"));
8
- const logger_1 = require("@restorecommerce/logger");
9
- const debug = (0, debug_1.default)('@restorecommerce/koa-req-res-logger');
10
29
  /**
11
30
  Middleware that logs incoming request and outgoing response
12
31
  @param {Object} [options] - middleware options
13
32
  @returns {Middleware}
14
33
  */
15
- const reqResLogger = (opts) => {
34
+ export const reqResLogger = (opts) => {
16
35
  let loggerCfg;
17
36
  if (opts.logger) {
18
37
  loggerCfg = opts.logger;
@@ -21,10 +40,10 @@ const reqResLogger = (opts) => {
21
40
  return msg;
22
41
  };
23
42
  }
24
- const logger = loggerCfg !== null && loggerCfg !== void 0 ? loggerCfg : (0, logger_1.createLogger)(loggerCfg);
25
- const fn = async (ctx, next) => {
43
+ const logger = loggerCfg !== null && loggerCfg !== void 0 ? loggerCfg : createLogger(loggerCfg);
44
+ const fn = (ctx, next) => __awaiter(void 0, void 0, void 0, function* () {
26
45
  const request = ctx.request;
27
- debug('yield middleware: %s', exports.reqResLogger.name);
46
+ debug('yield middleware: %s', reqResLogger.name);
28
47
  const start = Date.now();
29
48
  const reqLog = {
30
49
  method: ctx.request.method,
@@ -42,7 +61,7 @@ const reqResLogger = (opts) => {
42
61
  // Log incoming request during downstream processing
43
62
  logger.verbose('Request', reqLog);
44
63
  // Call next middleware in stack
45
- await next();
64
+ yield next();
46
65
  const delta = Math.ceil(Date.now() - start);
47
66
  // Log outgoing response during upstream
48
67
  // Generally only response successful request
@@ -66,23 +85,6 @@ const reqResLogger = (opts) => {
66
85
  }
67
86
  // `procTime` is in millisecond
68
87
  logger.verbose('Response', resLog);
69
- };
88
+ });
70
89
  return fn;
71
90
  };
72
- exports.reqResLogger = reqResLogger;
73
- function getGraphQLData(opts, body) {
74
- if (typeof body !== 'object' || !body) {
75
- return;
76
- }
77
- const line = {};
78
- if ('operationName' in body) {
79
- Object.assign(line, { operationName: body.operationName });
80
- }
81
- if ('query' in body) {
82
- Object.assign(line, { query: body.query });
83
- }
84
- if (opts.logGraphQLVariables === true && 'variables' in body) {
85
- Object.assign(line, { variables: body.variables });
86
- }
87
- return line;
88
- }
@@ -1,2 +1,2 @@
1
- import { AccessControlServiceConfig } from "../interfaces";
1
+ import { type AccessControlServiceConfig } from '../interfaces.js';
2
2
  export declare const FederatedAccessControlSchema: (cfg: AccessControlServiceConfig) => import("graphql").GraphQLSchema;