@common-stack/server-stack 6.0.6-alpha.10 → 6.0.6-alpha.104

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 (61) hide show
  1. package/lib/MainStackServer.cjs +8 -4
  2. package/lib/MainStackServer.cjs.map +1 -1
  3. package/lib/MainStackServer.mjs +8 -4
  4. package/lib/MainStackServer.mjs.map +1 -1
  5. package/lib/api/root-schema.graphqls.cjs +1 -1
  6. package/lib/api/root-schema.graphqls.mjs +1 -1
  7. package/lib/api/schema-builder.cjs +2 -1
  8. package/lib/api/schema-builder.cjs.map +1 -1
  9. package/lib/api/schema-builder.mjs +2 -1
  10. package/lib/api/schema-builder.mjs.map +1 -1
  11. package/lib/config/env-config.cjs +1 -0
  12. package/lib/config/env-config.cjs.map +1 -1
  13. package/lib/config/env-config.d.ts +1 -0
  14. package/lib/config/env-config.mjs +1 -0
  15. package/lib/config/env-config.mjs.map +1 -1
  16. package/lib/connectors/mongo-connector.cjs +1 -1
  17. package/lib/connectors/mongo-connector.cjs.map +1 -1
  18. package/lib/connectors/mongo-connector.mjs +1 -1
  19. package/lib/connectors/mongo-connector.mjs.map +1 -1
  20. package/lib/connectors/redis-connector.cjs +1 -1
  21. package/lib/connectors/redis-connector.cjs.map +1 -1
  22. package/lib/connectors/redis-connector.mjs +1 -1
  23. package/lib/connectors/redis-connector.mjs.map +1 -1
  24. package/lib/graphql/directives/index.cjs +10 -0
  25. package/lib/graphql/directives/index.cjs.map +1 -0
  26. package/lib/graphql/directives/index.d.ts +7 -0
  27. package/lib/graphql/directives/index.mjs +10 -0
  28. package/lib/graphql/directives/index.mjs.map +1 -0
  29. package/lib/graphql/index.d.ts +2 -0
  30. package/lib/graphql/schema/directives.graphql.cjs +1 -0
  31. package/lib/graphql/schema/directives.graphql.cjs.map +1 -0
  32. package/lib/graphql/schema/directives.graphql.mjs +1 -0
  33. package/lib/graphql/schema/directives.graphql.mjs.map +1 -0
  34. package/lib/graphql/schema/index.cjs +1 -0
  35. package/lib/graphql/schema/index.cjs.map +1 -0
  36. package/lib/graphql/schema/index.d.ts +1 -0
  37. package/lib/graphql/schema/index.mjs +1 -0
  38. package/lib/graphql/schema/index.mjs.map +1 -0
  39. package/lib/middleware/error.cjs +2 -32
  40. package/lib/middleware/error.cjs.map +1 -1
  41. package/lib/middleware/error.mjs +2 -32
  42. package/lib/middleware/error.mjs.map +1 -1
  43. package/lib/plugins/invalidateCachePlugin.cjs +19 -5
  44. package/lib/plugins/invalidateCachePlugin.cjs.map +1 -1
  45. package/lib/plugins/invalidateCachePlugin.d.ts +7 -4
  46. package/lib/plugins/invalidateCachePlugin.mjs +19 -5
  47. package/lib/plugins/invalidateCachePlugin.mjs.map +1 -1
  48. package/lib/servers/ExpressApp.cjs +0 -3
  49. package/lib/servers/ExpressApp.cjs.map +1 -1
  50. package/lib/servers/ExpressApp.mjs +0 -3
  51. package/lib/servers/ExpressApp.mjs.map +1 -1
  52. package/lib/servers/GraphqlServer.cjs +56 -18
  53. package/lib/servers/GraphqlServer.cjs.map +1 -1
  54. package/lib/servers/GraphqlServer.d.ts +7 -1
  55. package/lib/servers/GraphqlServer.mjs +56 -18
  56. package/lib/servers/GraphqlServer.mjs.map +1 -1
  57. package/lib/servers/GraphqlWs.cjs +4 -2
  58. package/lib/servers/GraphqlWs.cjs.map +1 -1
  59. package/lib/servers/GraphqlWs.mjs +4 -2
  60. package/lib/servers/GraphqlWs.mjs.map +1 -1
  61. package/package.json +11 -8
@@ -1,23 +1,4 @@
1
- import*as path from'path';import*as fs from'fs';import*as url from'url';import {logger}from'@cdm-logger/server';import {config}from'../config/env-config.mjs';/// <reference path='../../../../typings/index.d.ts' />
2
- let assetMap;
3
- const stripCircular = (from, seen) => {
4
- const to = Array.isArray(from) ? [] : {};
5
- seen = seen || [];
6
- seen.push(from);
7
- Object.getOwnPropertyNames(from).forEach(key => {
8
- if (!from[key] || (typeof from[key] !== 'object' && !Array.isArray(from[key]))) {
9
- to[key] = from[key];
10
- }
11
- else if (seen.indexOf(from[key]) < 0) {
12
- to[key] = stripCircular(from[key], seen.slice(0));
13
- }
14
- else {
15
- to[key] = '[Circular]';
16
- }
17
- });
18
- return to;
19
- };
20
- const { pathname } = url.parse(config.BACKEND_URL);
1
+ import*as url from'url';import {config}from'../config/env-config.mjs';const { pathname } = url.parse(config.BACKEND_URL);
21
2
  /**
22
3
  * Middleware function that takes 4 arguments is classified as "error handling middleware"
23
4
  * and will only get called if an error occurs.
@@ -32,17 +13,6 @@ const errorMiddleware = (e, req, res, next) => {
32
13
  res.status(200).send(`[{"data": {}, "errors":[{"message": "${stack}"}]}]`);
33
14
  }
34
15
  else {
35
- logger.error(e);
36
- if (config.isDev || !assetMap) {
37
- assetMap = JSON.parse(fs.readFileSync(path.join(__FRONTEND_BUILD_DIR__, 'assets.json')).toString());
38
- }
39
- const serverErrorScript = `<script charset="UTF-8">window.__SERVER_ERROR__=${JSON.stringify(stripCircular(e))};</script>`;
40
- const vendorScript = assetMap['vendor.js']
41
- ? `<script src="/${assetMap['vendor.js']}" charSet="utf-8"></script>`
42
- : '';
43
- res.status(200).send(`<html>${serverErrorScript}<body><div id="content"></div>
44
- ${vendorScript}
45
- <script src="/${assetMap['index.js']}" charSet="utf-8"></script>
46
- </body></html>`);
16
+ req.logger.error(e);
47
17
  }
48
18
  };export{errorMiddleware};//# sourceMappingURL=error.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","sources":["../../src/middleware/error.ts"],"sourcesContent":[null],"names":[],"mappings":"8JAAA;AASA,IAAI,QAAQ,CAAC;AAEb,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,IAAU,KAAI;AACvC,IAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC;AACzC,IAAA,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;AAClB,IAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;QAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5E,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACvB;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;AACpC,YAAA,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACrD;aAAM;AAAE,YAAA,EAAE,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;SAAE;AACtC,KAAC,CAAC,CAAC;AACH,IAAA,OAAO,EAAE,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnD;;;;;;;AAOG;AACI,MAAM,eAAe,GACxB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AAClB,IAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAwC,qCAAA,EAAA,KAAK,CAAO,KAAA,CAAA,CAAC,CAAC;KAC9E;SAAM;AACH,QAAA,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhB,QAAA,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC3B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvG;AAED,QAAA,MAAM,iBAAiB,GAAG,CAAmD,gDAAA,EAAA,IAAI,CAAC,SAAS,CACvF,aAAa,CAAC,CAAC,CAAC,CACnB,YAAY,CAAC;AACd,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC;AACtC,cAAE,CAAiB,cAAA,EAAA,QAAQ,CAAC,WAAW,CAAC,CAA6B,2BAAA,CAAA;cACnE,EAAE,CAAC;QAET,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAChB,CAAA,MAAA,EAAS,iBAAiB,CAAA;UAChC,YAAY,CAAA;4BACM,QAAQ,CAAC,UAAU,CAAC,CAAA;AACrB,0BAAA,CAAA,CACd,CAAC;KACL;AACL"}
1
+ {"version":3,"file":"error.mjs","sources":["../../src/middleware/error.ts"],"sourcesContent":[null],"names":[],"mappings":"sEAGA,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnD;;;;;;;AAOG;AACI,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACjD,IAAA,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;AACvB,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACzD,QAAA,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAwC,qCAAA,EAAA,KAAK,CAAO,KAAA,CAAA,CAAC,CAAC;KAC9E;SAAM;AACH,QAAA,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACvB;AACL"}
@@ -1,7 +1,11 @@
1
- 'use strict';const invalidateCachePlugin = ({ cache }) => ({
1
+ 'use strict';var envConfig=require('../config/env-config.cjs');const invalidateCachePlugin = ({ cache: redisClient, invalidateCacheKeyGenerator, }) => ({
2
2
  requestDidStart(requestContext) {
3
3
  return {
4
- async willSendResponse(responseContext) {
4
+ willSendResponse: async (responseContext) => {
5
+ // in case of websocket request initially the requestContext comes empty
6
+ if (!requestContext) {
7
+ return;
8
+ }
5
9
  try {
6
10
  const hasErrors = !!requestContext.errors?.length;
7
11
  const { queriesToInvalidate } = requestContext.contextValue;
@@ -11,10 +15,20 @@
11
15
  return;
12
16
  }
13
17
  // this to get the
14
- const redisClient = cache?.client;
15
- const nestedKeys = await Promise.all(queriesToInvalidate.map((query) => redisClient.keys(`keyv:fqc:${query}:*`)));
18
+ const nestedKeys = await Promise.all(queriesToInvalidate.map(async (query) => {
19
+ let defaultKey = `${envConfig.config.APP_NAME}:${query}:*`;
20
+ if (typeof invalidateCacheKeyGenerator === 'function') {
21
+ const generatedKey = invalidateCacheKeyGenerator(requestContext, responseContext, defaultKey);
22
+ if (generatedKey) {
23
+ defaultKey = generatedKey;
24
+ }
25
+ }
26
+ return redisClient.keys(defaultKey);
27
+ }));
16
28
  const keys = nestedKeys.flat();
17
- await redisClient.del(keys);
29
+ if (keys?.length) {
30
+ await redisClient.del(keys);
31
+ }
18
32
  }
19
33
  catch (e) {
20
34
  requestContext.logger.error('Error occurred in invalidateCachePlugin');
@@ -1 +1 @@
1
- {"version":3,"file":"invalidateCachePlugin.cjs","sources":["../../src/plugins/invalidateCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"aAKa,MAAA,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAAa,MACrD;AACG,IAAA,eAAe,CAAC,cAAc,EAAA;QAC1B,OAAO;YACH,MAAM,gBAAgB,CAAC,eAAe,EAAA;AAClC,gBAAA,IAAI;oBACA,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAClD,oBAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC;oBAC5D,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAwC,CAAC;AAC1F,oBAAA,MAAM,UAAU,GAAG,SAAS,KAAK,UAAU,CAAC;oBAC5C,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;wBAC1D,OAAO;qBACV;;AAED,oBAAA,MAAM,WAAW,GAAG,KAAK,EAAE,MAAe,CAAC;oBAC3C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,CAAC,CAAY,SAAA,EAAA,KAAK,CAAI,EAAA,CAAA,CAAC,CAAC,CAC9E,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,oBAAA,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBAAC,OAAO,CAAC,EAAE;AACR,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACvE,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClC;aACJ;SACJ,CAAC;KACL;AACJ,CAAA"}
1
+ {"version":3,"file":"invalidateCachePlugin.cjs","sources":["../../src/plugins/invalidateCachePlugin.ts"],"sourcesContent":[null],"names":["config"],"mappings":"+DAWO,MAAM,qBAAqB,GAAG,CAAC,EAClC,KAAK,EAAE,WAAW,EAClB,2BAA2B,GAI9B,MACI;AACG,IAAA,eAAe,CAAC,cAA8C,EAAA;QAC1D,OAAO;AACH,YAAA,gBAAgB,EAAE,OAAO,eAA+D,KAAI;;gBAExF,IAAI,CAAC,cAAc,EAAE;oBACjB,OAAO;iBACV;AACD,gBAAA,IAAI;oBACA,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAClD,oBAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC,YAE9C,CAAC;oBACF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAwC,CAAC;AAC1F,oBAAA,MAAM,UAAU,GAAG,SAAS,KAAK,UAAU,CAAC;oBAC5C,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;wBAC1D,OAAO;qBACV;;AAED,oBAAA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,mBAAmB,CAAC,GAAG,CAAC,OAAO,KAAa,KAAI;wBAC5C,IAAI,UAAU,GAAG,CAAG,EAAAA,gBAAM,CAAC,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,CAAI,CAAC;AACjD,wBAAA,IAAI,OAAO,2BAA2B,KAAK,UAAU,EAAE;4BACnD,MAAM,YAAY,GAAG,2BAA2B,CAC5C,cAAc,EACd,eAAe,EACf,UAAU,CACb,CAAC;4BACF,IAAI,YAAY,EAAE;gCACd,UAAU,GAAG,YAAY,CAAC;6BAC7B;yBACJ;AACD,wBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBACvC,CAAC,CACL,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,oBAAA,IAAI,IAAI,EAAE,MAAM,EAAE;AACd,wBAAA,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAC/B;iBACJ;gBAAC,OAAO,CAAC,EAAE;AACR,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACvE,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClC;aACJ;SACJ,CAAC;KACL;AACJ,CAAA"}
@@ -1,5 +1,8 @@
1
- import { ApolloServerOptions } from '@apollo/server';
2
- import type { BaseContext } from '@apollo/server/dist/cjs/externalTypes/context';
3
- export declare const invalidateCachePlugin: ({ cache }: {
4
- cache: any;
1
+ import { Redis, Cluster } from 'ioredis';
2
+ import type { BaseContext, GraphQLRequestContextWillSendResponse } from '@apollo/server';
3
+ import { ApolloServerOptions, GraphQLRequestContext } from '@apollo/server';
4
+ export type InvalidationKeyGenerator = (requestContext: GraphQLRequestContext<unknown>, responseContext: GraphQLRequestContextWillSendResponse<unknown>, cacheKey?: string) => string;
5
+ export declare const invalidateCachePlugin: ({ cache: redisClient, invalidateCacheKeyGenerator, }: {
6
+ cache: Redis | Cluster;
7
+ invalidateCacheKeyGenerator: InvalidationKeyGenerator;
5
8
  }) => ApolloServerOptions<BaseContext>["plugins"][0];
@@ -1,7 +1,11 @@
1
- const invalidateCachePlugin = ({ cache }) => ({
1
+ import {config}from'../config/env-config.mjs';const invalidateCachePlugin = ({ cache: redisClient, invalidateCacheKeyGenerator, }) => ({
2
2
  requestDidStart(requestContext) {
3
3
  return {
4
- async willSendResponse(responseContext) {
4
+ willSendResponse: async (responseContext) => {
5
+ // in case of websocket request initially the requestContext comes empty
6
+ if (!requestContext) {
7
+ return;
8
+ }
5
9
  try {
6
10
  const hasErrors = !!requestContext.errors?.length;
7
11
  const { queriesToInvalidate } = requestContext.contextValue;
@@ -11,10 +15,20 @@ const invalidateCachePlugin = ({ cache }) => ({
11
15
  return;
12
16
  }
13
17
  // this to get the
14
- const redisClient = cache?.client;
15
- const nestedKeys = await Promise.all(queriesToInvalidate.map((query) => redisClient.keys(`keyv:fqc:${query}:*`)));
18
+ const nestedKeys = await Promise.all(queriesToInvalidate.map(async (query) => {
19
+ let defaultKey = `${config.APP_NAME}:${query}:*`;
20
+ if (typeof invalidateCacheKeyGenerator === 'function') {
21
+ const generatedKey = invalidateCacheKeyGenerator(requestContext, responseContext, defaultKey);
22
+ if (generatedKey) {
23
+ defaultKey = generatedKey;
24
+ }
25
+ }
26
+ return redisClient.keys(defaultKey);
27
+ }));
16
28
  const keys = nestedKeys.flat();
17
- await redisClient.del(keys);
29
+ if (keys?.length) {
30
+ await redisClient.del(keys);
31
+ }
18
32
  }
19
33
  catch (e) {
20
34
  requestContext.logger.error('Error occurred in invalidateCachePlugin');
@@ -1 +1 @@
1
- {"version":3,"file":"invalidateCachePlugin.mjs","sources":["../../src/plugins/invalidateCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"AAKa,MAAA,qBAAqB,GAAG,CAAC,EAAE,KAAK,EAAa,MACrD;AACG,IAAA,eAAe,CAAC,cAAc,EAAA;QAC1B,OAAO;YACH,MAAM,gBAAgB,CAAC,eAAe,EAAA;AAClC,gBAAA,IAAI;oBACA,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAClD,oBAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC,YAAY,CAAC;oBAC5D,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAwC,CAAC;AAC1F,oBAAA,MAAM,UAAU,GAAG,SAAS,KAAK,UAAU,CAAC;oBAC5C,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;wBAC1D,OAAO;qBACV;;AAED,oBAAA,MAAM,WAAW,GAAG,KAAK,EAAE,MAAe,CAAC;oBAC3C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,CAAC,CAAY,SAAA,EAAA,KAAK,CAAI,EAAA,CAAA,CAAC,CAAC,CAC9E,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,oBAAA,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBAC/B;gBAAC,OAAO,CAAC,EAAE;AACR,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACvE,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClC;aACJ;SACJ,CAAC;KACL;AACJ,CAAA"}
1
+ {"version":3,"file":"invalidateCachePlugin.mjs","sources":["../../src/plugins/invalidateCachePlugin.ts"],"sourcesContent":[null],"names":[],"mappings":"8CAWO,MAAM,qBAAqB,GAAG,CAAC,EAClC,KAAK,EAAE,WAAW,EAClB,2BAA2B,GAI9B,MACI;AACG,IAAA,eAAe,CAAC,cAA8C,EAAA;QAC1D,OAAO;AACH,YAAA,gBAAgB,EAAE,OAAO,eAA+D,KAAI;;gBAExF,IAAI,CAAC,cAAc,EAAE;oBACjB,OAAO;iBACV;AACD,gBAAA,IAAI;oBACA,MAAM,SAAS,GAAG,CAAC,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAClD,oBAAA,MAAM,EAAE,mBAAmB,EAAE,GAAG,cAAc,CAAC,YAE9C,CAAC;oBACF,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,QAAQ,CAAC,WAAwC,CAAC;AAC1F,oBAAA,MAAM,UAAU,GAAG,SAAS,KAAK,UAAU,CAAC;oBAC5C,IAAI,SAAS,IAAI,CAAC,mBAAmB,EAAE,MAAM,IAAI,CAAC,UAAU,EAAE;wBAC1D,OAAO;qBACV;;AAED,oBAAA,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,mBAAmB,CAAC,GAAG,CAAC,OAAO,KAAa,KAAI;wBAC5C,IAAI,UAAU,GAAG,CAAG,EAAA,MAAM,CAAC,QAAQ,CAAA,CAAA,EAAI,KAAK,CAAA,EAAA,CAAI,CAAC;AACjD,wBAAA,IAAI,OAAO,2BAA2B,KAAK,UAAU,EAAE;4BACnD,MAAM,YAAY,GAAG,2BAA2B,CAC5C,cAAc,EACd,eAAe,EACf,UAAU,CACb,CAAC;4BACF,IAAI,YAAY,EAAE;gCACd,UAAU,GAAG,YAAY,CAAC;6BAC7B;yBACJ;AACD,wBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBACvC,CAAC,CACL,CAAC;AACF,oBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;AAC/B,oBAAA,IAAI,IAAI,EAAE,MAAM,EAAE;AACd,wBAAA,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBAC/B;iBACJ;gBAAC,OAAO,CAAC,EAAE;AACR,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;AACvE,oBAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClC;aACJ;SACJ,CAAC;KACL;AACJ,CAAA"}
@@ -1,11 +1,9 @@
1
1
  'use strict';var express=require('express'),bodyParser=require('body-parser'),error=require('../middleware/error.cjs'),services=require('../middleware/services.cjs'),sentry=require('../middleware/sentry.cjs'),cors=require('../middleware/cors.cjs');function _interopNamespaceDefault(e){var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var bodyParser__namespace=/*#__PURE__*/_interopNamespaceDefault(bodyParser);/* eslint-disable @typescript-eslint/no-var-requires */
2
- const cookiesMiddleware = require('universal-cookie-express');
3
2
  function expressApp(modules, options, middlewares, http) {
4
3
  const app = express();
5
4
  for (const applyBeforeware of modules.beforewares) {
6
5
  applyBeforeware(app);
7
6
  }
8
- app.use(cookiesMiddleware());
9
7
  app.use(services.contextServicesMiddleware(options.createContext, options.serviceContext));
10
8
  // Don't rate limit heroku
11
9
  app.enable('trust proxy');
@@ -13,7 +11,6 @@ function expressApp(modules, options, middlewares, http) {
13
11
  if (middlewares !== null) {
14
12
  app.use(middlewares);
15
13
  }
16
- app.use('/', express.static(__FRONTEND_BUILD_DIR__, { maxAge: '180 days' }));
17
14
  app.use(cors.corsMiddleware);
18
15
  app.use((req, res, next) => {
19
16
  res.header('Access-Control-Allow-Credentials', JSON.stringify(true));
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressApp.cjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":["contextServicesMiddleware","sentryMiddleware","corsMiddleware","bodyParser","errorMiddleware","sentryErrorHandlerMiddleware"],"mappings":"kmBAAA;AAUA,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAExD,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAA;AACpF,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC7B,IAAA,GAAG,CAAC,GAAG,CAACA,kCAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;;AAGlF,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAACC,uBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAE7E,IAAA,GAAG,CAAC,GAAG,CAACC,mBAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACHC,qBAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAACA,qBAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAACC,qBAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAACC,mCAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
1
+ {"version":3,"file":"ExpressApp.cjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":["contextServicesMiddleware","sentryMiddleware","corsMiddleware","bodyParser","errorMiddleware","sentryErrorHandlerMiddleware"],"mappings":"kmBAAA;AAUM,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAA;AACpF,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,GAAG,CAAC,GAAG,CAACA,kCAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;;AAGlF,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAACC,uBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAACC,mBAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACHC,qBAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAACA,qBAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAACC,qBAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAACC,mCAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
@@ -1,11 +1,9 @@
1
1
  import express from'express';import*as bodyParser from'body-parser';import {errorMiddleware}from'../middleware/error.mjs';import {contextServicesMiddleware}from'../middleware/services.mjs';import {sentryMiddleware,sentryErrorHandlerMiddleware}from'../middleware/sentry.mjs';import {corsMiddleware}from'../middleware/cors.mjs';/* eslint-disable @typescript-eslint/no-var-requires */
2
- const cookiesMiddleware = require('universal-cookie-express');
3
2
  function expressApp(modules, options, middlewares, http) {
4
3
  const app = express();
5
4
  for (const applyBeforeware of modules.beforewares) {
6
5
  applyBeforeware(app);
7
6
  }
8
- app.use(cookiesMiddleware());
9
7
  app.use(contextServicesMiddleware(options.createContext, options.serviceContext));
10
8
  // Don't rate limit heroku
11
9
  app.enable('trust proxy');
@@ -13,7 +11,6 @@ function expressApp(modules, options, middlewares, http) {
13
11
  if (middlewares !== null) {
14
12
  app.use(middlewares);
15
13
  }
16
- app.use('/', express.static(__FRONTEND_BUILD_DIR__, { maxAge: '180 days' }));
17
14
  app.use(corsMiddleware);
18
15
  app.use((req, res, next) => {
19
16
  res.header('Access-Control-Allow-Credentials', JSON.stringify(true));
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressApp.mjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":[],"mappings":"sUAAA;AAUA,MAAM,iBAAiB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAExD,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAA;AACpF,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC7B,IAAA,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;;AAGlF,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;AAE7E,IAAA,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACH,UAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
1
+ {"version":3,"file":"ExpressApp.mjs","sources":["../../src/servers/ExpressApp.ts"],"sourcesContent":[null],"names":[],"mappings":"sUAAA;AAUM,SAAU,UAAU,CAAC,OAAgB,EAAE,OAAuB,EAAE,WAAW,EAAE,IAAK,EAAA;AACpF,IAAA,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AAEtB,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;AACD,IAAA,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;;AAGlF,IAAA,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAE1B,IAAA,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAE1B,IAAA,IAAI,WAAW,KAAK,IAAI,EAAE;AACtB,QAAA,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KACxB;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,KAAI;AACvB,QAAA,GAAG,CAAC,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,QAAA,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,CAAC;AAClE,QAAA,GAAG,CAAC,MAAM,CACN,8BAA8B,EAC9B,6EAA6E,CAChF,CAAC;AACF,QAAA,IAAI,EAAE,CAAC;AACX,KAAC,CAAC,CAAC;AAEH,IAAA,GAAG,CAAC,GAAG,CACH,UAAU,CAAC,IAAI,CAAC;AACZ,QAAA,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAI;;AAErB,YAAA,GAAW,CAAC,OAAO,GAAG,GAAG,CAAC;SAC9B;AACJ,KAAA,CAAC,CACL,CAAC;IACF,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAEzF,IAAA,KAAK,MAAM,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE;QAC/C,eAAe,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,IAAI,OAAO,EAAE;AACT,QAAA,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;KAC5B;AAED,IAAA,GAAG,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAEtC,IAAA,OAAO,GAAG,CAAC;AACf"}
@@ -1,4 +1,4 @@
1
- 'use strict';var server=require('@apollo/server'),ws$1=require('graphql-ws/lib/use/ws'),express4=require('@apollo/server/express4'),cacheControl=require('@apollo/server/plugin/cacheControl'),drainHttpServer=require('@apollo/server/plugin/drainHttpServer'),cachePlugin=require('@apollo/server-plugin-response-cache');require('isomorphic-fetch');var express=require('express'),cors=require('cors'),Keyv=require('keyv'),KeyvRedis=require('@keyv/redis'),utils_keyvadapter=require('@apollo/utils.keyvadapter'),ws=require('ws'),invalidateCachePlugin=require('../plugins/invalidateCachePlugin.cjs'),GraphqlWs=require('./GraphqlWs.cjs'),envConfig=require('../config/env-config.cjs');const responseCachePlugin = cachePlugin.default ?? cachePlugin;
1
+ 'use strict';var server=require('@apollo/server'),express4=require('@apollo/server/express4'),cacheControl=require('@apollo/server/plugin/cacheControl'),drainHttpServer=require('@apollo/server/plugin/drainHttpServer'),cachePlugin=require('@apollo/server-plugin-response-cache');require('isomorphic-fetch');var express=require('express'),cors=require('cors'),Keyv=require('keyv'),KeyvRedis=require('@keyv/redis'),utils_keyvadapter=require('@apollo/utils.keyvadapter'),ws=require('ws'),_=require('lodash-es'),invalidateCachePlugin=require('../plugins/invalidateCachePlugin.cjs'),GraphqlWs=require('./GraphqlWs.cjs'),envConfig=require('../config/env-config.cjs');const responseCachePlugin = cachePlugin.default ?? cachePlugin;
2
2
  if ((process.env.LOG_LEVEL && process.env.LOG_LEVEL === 'trace') || process.env.LOG_LEVEL === 'debug') ;
3
3
  // @workaround as the `dataSources` not available in Subscription (websocket) Context.
4
4
  // https://github.com/apollographql/apollo-server/issues/1526 need to revisit in Apollo-Server v3.
@@ -11,32 +11,36 @@ const constructDataSourcesForSubscriptions = (context, cache, dataSources) => {
11
11
  }
12
12
  return dataSources;
13
13
  };
14
- let wsServerCleanup;
15
14
  class GraphqlServer {
16
15
  app;
17
16
  httpServer;
18
17
  redisClient;
19
18
  moduleService;
20
19
  enableSubscription;
20
+ cacheKeyGenerator;
21
+ invalidateCacheKeyGenerator;
21
22
  logger;
22
- constructor(app, httpServer, redisClient, moduleService, enableSubscription = true) {
23
+ graphqlWsServer;
24
+ constructor(app, httpServer, redisClient, moduleService, enableSubscription = true, cacheKeyGenerator, invalidateCacheKeyGenerator) {
23
25
  this.app = app;
24
26
  this.httpServer = httpServer;
25
27
  this.redisClient = redisClient;
26
28
  this.moduleService = moduleService;
27
29
  this.enableSubscription = enableSubscription;
30
+ this.cacheKeyGenerator = cacheKeyGenerator;
31
+ this.invalidateCacheKeyGenerator = invalidateCacheKeyGenerator;
28
32
  this.logger = this.moduleService.logger.child({ className: 'GraphqlServer' });
29
33
  if (enableSubscription) {
30
34
  const wsServer = new ws.WebSocketServer({
31
35
  server: this.httpServer,
32
36
  path: envConfig.config.GRAPHQL_ENDPOINT,
33
37
  });
34
- new GraphqlWs.GraphqlWs(wsServer, this.moduleService, this.redisClient);
35
- wsServerCleanup = ws$1.useServer({ schema: this.moduleService.schema }, wsServer);
38
+ this.graphqlWsServer = new GraphqlWs.GraphqlWs(wsServer, this.moduleService, this.redisClient);
36
39
  }
37
40
  }
38
41
  async initialize() {
39
42
  this.logger.info('GraphqlServer initializing...');
43
+ this.graphqlWsServer.create();
40
44
  const apolloServer = this.configureApolloServer();
41
45
  await apolloServer.start();
42
46
  const corsOptions = {
@@ -74,7 +78,7 @@ class GraphqlServer {
74
78
  context.userIp = this.getUserIpAddress(req);
75
79
  }
76
80
  catch (err) {
77
- this.logger.error('adding context to graphql failed due to [%o]', err);
81
+ this.logger.error(err, 'adding context to graphql failed due to [%s]', err.message);
78
82
  throw err;
79
83
  }
80
84
  return {
@@ -99,34 +103,68 @@ class GraphqlServer {
99
103
  return ip;
100
104
  }
101
105
  configureApolloServer() {
106
+ const redisStore = new KeyvRedis(this.redisClient);
107
+ redisStore.on('error', (err) => {
108
+ this.logger.error(err, 'Redis connection error:');
109
+ });
110
+ const keyvCache = new Keyv({ store: redisStore, namespace: envConfig.config.APP_NAME });
111
+ const isCacheable = (requestContext) => {
112
+ const cache = requestContext.contextValue.overallCachePolicy;
113
+ if (!cache)
114
+ return false;
115
+ // eslint-disable-next-line no-param-reassign
116
+ requestContext.overallCachePolicy.maxAge = cache.maxAge;
117
+ return requestContext.overallCachePolicy.maxAge > 0;
118
+ };
119
+ const cacheAdapter = new utils_keyvadapter.KeyvAdapter(keyvCache);
120
+ const cacheGet = cacheAdapter.get.bind(cacheAdapter);
121
+ cacheAdapter.get = (key) => cacheGet(key.replaceAll('fqc:', ''));
122
+ const cacheSet = cacheAdapter.set.bind(cacheAdapter);
123
+ cacheAdapter.set = (key, value, opts) => cacheSet(key.replaceAll('fqc:', ''), value, opts);
124
+ const { cacheKeyGenerator, invalidateCacheKeyGenerator } = this;
102
125
  const serverConfig = {
103
126
  schema: this.moduleService.schema,
104
127
  allowBatchedHttpRequests: true,
105
- cache: new utils_keyvadapter.KeyvAdapter(new Keyv({ store: new KeyvRedis(this.redisClient) }), {
106
- disableBatchReads: true,
107
- }),
128
+ cache: cacheAdapter,
108
129
  plugins: [
109
130
  drainHttpServer.ApolloServerPluginDrainHttpServer({ httpServer: this.httpServer }),
110
- cacheControl.ApolloServerPluginCacheControl({
111
- calculateHttpHeaders: false,
112
- }),
131
+ cacheControl.ApolloServerPluginCacheControl(),
113
132
  responseCachePlugin({
114
- sessionId: ({ contextValue }) => Promise.resolve(contextValue?.userContext?.accountId ?? null),
115
- generateCacheKey({ queryHash, operationName }, keyData) {
116
- return `${operationName}:${queryHash}`;
133
+ sessionId: ({ contextValue }) => Promise.resolve(contextValue?.user?.sub ?? null),
134
+ generateCacheKey(requestContext) {
135
+ const { queryHash, request } = requestContext;
136
+ const [, queryName] = request.query?.match(/{\s*(\w+)/) ?? [];
137
+ const cacheKey = `${queryName}:${queryHash}`;
138
+ try {
139
+ if (typeof cacheKeyGenerator === 'function') {
140
+ const generatedKey = cacheKeyGenerator(requestContext, cacheKey);
141
+ return generatedKey || cacheKey;
142
+ }
143
+ return cacheKey;
144
+ }
145
+ catch (e) {
146
+ // `this.logger` won't work here
147
+ console.warn('GenerateCacheKey Failed %s', e.message);
148
+ return cacheKey;
149
+ }
117
150
  },
151
+ shouldWriteToCache: (ctx) =>
152
+ // Cache only successful responses
153
+ isCacheable(ctx) && _.isEmpty(ctx?.response?.body?.singleResult.errors),
118
154
  }),
119
- invalidateCachePlugin.invalidateCachePlugin({ cache: this.redisClient }),
155
+ invalidateCachePlugin.invalidateCachePlugin({ cache: this.redisClient, invalidateCacheKeyGenerator }),
120
156
  ],
121
157
  };
122
158
  if (this.enableSubscription) {
123
159
  serverConfig.plugins.push({
124
160
  async serverWillStart() {
125
- return {
161
+ const response = {
126
162
  async drainServer() {
127
- await wsServerCleanup.dispose();
163
+ await this?.graphqlWsServer?.disconnect();
128
164
  },
129
165
  };
166
+ response.drainServer.bind(this);
167
+ return response;
130
168
  },
131
169
  });
132
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlServer.cjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":["WebSocketServer","config","GraphqlWs","useServer","expressMiddleware","KeyvAdapter","ApolloServerPluginDrainHttpServer","ApolloServerPluginCacheControl","invalidateCachePlugin","ApolloServer"],"mappings":"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"}
1
+ {"version":3,"file":"GraphqlServer.cjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":["WebSocketServer","config","GraphqlWs","expressMiddleware","KeyvAdapter","ApolloServerPluginDrainHttpServer","ApolloServerPluginCacheControl","isEmpty","invalidateCachePlugin","ApolloServer"],"mappings":"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"}
@@ -1,16 +1,22 @@
1
+ import { GraphQLRequestContext } from '@apollo/server';
1
2
  import * as IORedis from 'ioredis';
2
3
  import 'isomorphic-fetch';
3
4
  import { Express } from 'express';
4
5
  import * as http from 'http';
6
+ import { InvalidationKeyGenerator } from '../plugins';
5
7
  import { IModuleService } from '../interfaces';
8
+ export type KeyGenerator = (context: GraphQLRequestContext<unknown>, cacheKey?: string) => string;
6
9
  export declare class GraphqlServer {
7
10
  private app;
8
11
  private httpServer;
9
12
  private redisClient;
10
13
  private moduleService;
11
14
  private enableSubscription;
15
+ private readonly cacheKeyGenerator?;
16
+ private readonly invalidateCacheKeyGenerator?;
12
17
  private logger;
13
- constructor(app: Express, httpServer: http.Server, redisClient: IORedis.Redis | IORedis.Cluster, moduleService: IModuleService, enableSubscription?: boolean);
18
+ private graphqlWsServer;
19
+ constructor(app: Express, httpServer: http.Server, redisClient: IORedis.Redis | IORedis.Cluster, moduleService: IModuleService, enableSubscription?: boolean, cacheKeyGenerator?: KeyGenerator, invalidateCacheKeyGenerator?: InvalidationKeyGenerator);
14
20
  initialize(): Promise<void>;
15
21
  getUserIpAddress(req: any): any;
16
22
  private configureApolloServer;
@@ -1,4 +1,4 @@
1
- import {ApolloServer}from'@apollo/server';import {useServer}from'graphql-ws/lib/use/ws';import {expressMiddleware}from'@apollo/server/express4';import {ApolloServerPluginCacheControl}from'@apollo/server/plugin/cacheControl';import {ApolloServerPluginDrainHttpServer}from'@apollo/server/plugin/drainHttpServer';import cachePlugin from'@apollo/server-plugin-response-cache';import'isomorphic-fetch';import express from'express';import cors from'cors';import Keyv from'keyv';import KeyvRedis from'@keyv/redis';import {KeyvAdapter}from'@apollo/utils.keyvadapter';import {WebSocketServer}from'ws';import {invalidateCachePlugin}from'../plugins/invalidateCachePlugin.mjs';import {GraphqlWs}from'./GraphqlWs.mjs';import {config}from'../config/env-config.mjs';const responseCachePlugin = cachePlugin.default ?? cachePlugin;
1
+ import {ApolloServer}from'@apollo/server';import {expressMiddleware}from'@apollo/server/express4';import {ApolloServerPluginCacheControl}from'@apollo/server/plugin/cacheControl';import {ApolloServerPluginDrainHttpServer}from'@apollo/server/plugin/drainHttpServer';import cachePlugin from'@apollo/server-plugin-response-cache';import'isomorphic-fetch';import express from'express';import cors from'cors';import Keyv from'keyv';import KeyvRedis from'@keyv/redis';import {KeyvAdapter}from'@apollo/utils.keyvadapter';import {WebSocketServer}from'ws';import {isEmpty}from'lodash-es';import {invalidateCachePlugin}from'../plugins/invalidateCachePlugin.mjs';import {GraphqlWs}from'./GraphqlWs.mjs';import {config}from'../config/env-config.mjs';const responseCachePlugin = cachePlugin.default ?? cachePlugin;
2
2
  if ((process.env.LOG_LEVEL && process.env.LOG_LEVEL === 'trace') || process.env.LOG_LEVEL === 'debug') ;
3
3
  // @workaround as the `dataSources` not available in Subscription (websocket) Context.
4
4
  // https://github.com/apollographql/apollo-server/issues/1526 need to revisit in Apollo-Server v3.
@@ -11,32 +11,36 @@ const constructDataSourcesForSubscriptions = (context, cache, dataSources) => {
11
11
  }
12
12
  return dataSources;
13
13
  };
14
- let wsServerCleanup;
15
14
  class GraphqlServer {
16
15
  app;
17
16
  httpServer;
18
17
  redisClient;
19
18
  moduleService;
20
19
  enableSubscription;
20
+ cacheKeyGenerator;
21
+ invalidateCacheKeyGenerator;
21
22
  logger;
22
- constructor(app, httpServer, redisClient, moduleService, enableSubscription = true) {
23
+ graphqlWsServer;
24
+ constructor(app, httpServer, redisClient, moduleService, enableSubscription = true, cacheKeyGenerator, invalidateCacheKeyGenerator) {
23
25
  this.app = app;
24
26
  this.httpServer = httpServer;
25
27
  this.redisClient = redisClient;
26
28
  this.moduleService = moduleService;
27
29
  this.enableSubscription = enableSubscription;
30
+ this.cacheKeyGenerator = cacheKeyGenerator;
31
+ this.invalidateCacheKeyGenerator = invalidateCacheKeyGenerator;
28
32
  this.logger = this.moduleService.logger.child({ className: 'GraphqlServer' });
29
33
  if (enableSubscription) {
30
34
  const wsServer = new WebSocketServer({
31
35
  server: this.httpServer,
32
36
  path: config.GRAPHQL_ENDPOINT,
33
37
  });
34
- new GraphqlWs(wsServer, this.moduleService, this.redisClient);
35
- wsServerCleanup = useServer({ schema: this.moduleService.schema }, wsServer);
38
+ this.graphqlWsServer = new GraphqlWs(wsServer, this.moduleService, this.redisClient);
36
39
  }
37
40
  }
38
41
  async initialize() {
39
42
  this.logger.info('GraphqlServer initializing...');
43
+ this.graphqlWsServer.create();
40
44
  const apolloServer = this.configureApolloServer();
41
45
  await apolloServer.start();
42
46
  const corsOptions = {
@@ -74,7 +78,7 @@ class GraphqlServer {
74
78
  context.userIp = this.getUserIpAddress(req);
75
79
  }
76
80
  catch (err) {
77
- this.logger.error('adding context to graphql failed due to [%o]', err);
81
+ this.logger.error(err, 'adding context to graphql failed due to [%s]', err.message);
78
82
  throw err;
79
83
  }
80
84
  return {
@@ -99,34 +103,68 @@ class GraphqlServer {
99
103
  return ip;
100
104
  }
101
105
  configureApolloServer() {
106
+ const redisStore = new KeyvRedis(this.redisClient);
107
+ redisStore.on('error', (err) => {
108
+ this.logger.error(err, 'Redis connection error:');
109
+ });
110
+ const keyvCache = new Keyv({ store: redisStore, namespace: config.APP_NAME });
111
+ const isCacheable = (requestContext) => {
112
+ const cache = requestContext.contextValue.overallCachePolicy;
113
+ if (!cache)
114
+ return false;
115
+ // eslint-disable-next-line no-param-reassign
116
+ requestContext.overallCachePolicy.maxAge = cache.maxAge;
117
+ return requestContext.overallCachePolicy.maxAge > 0;
118
+ };
119
+ const cacheAdapter = new KeyvAdapter(keyvCache);
120
+ const cacheGet = cacheAdapter.get.bind(cacheAdapter);
121
+ cacheAdapter.get = (key) => cacheGet(key.replaceAll('fqc:', ''));
122
+ const cacheSet = cacheAdapter.set.bind(cacheAdapter);
123
+ cacheAdapter.set = (key, value, opts) => cacheSet(key.replaceAll('fqc:', ''), value, opts);
124
+ const { cacheKeyGenerator, invalidateCacheKeyGenerator } = this;
102
125
  const serverConfig = {
103
126
  schema: this.moduleService.schema,
104
127
  allowBatchedHttpRequests: true,
105
- cache: new KeyvAdapter(new Keyv({ store: new KeyvRedis(this.redisClient) }), {
106
- disableBatchReads: true,
107
- }),
128
+ cache: cacheAdapter,
108
129
  plugins: [
109
130
  ApolloServerPluginDrainHttpServer({ httpServer: this.httpServer }),
110
- ApolloServerPluginCacheControl({
111
- calculateHttpHeaders: false,
112
- }),
131
+ ApolloServerPluginCacheControl(),
113
132
  responseCachePlugin({
114
- sessionId: ({ contextValue }) => Promise.resolve(contextValue?.userContext?.accountId ?? null),
115
- generateCacheKey({ queryHash, operationName }, keyData) {
116
- return `${operationName}:${queryHash}`;
133
+ sessionId: ({ contextValue }) => Promise.resolve(contextValue?.user?.sub ?? null),
134
+ generateCacheKey(requestContext) {
135
+ const { queryHash, request } = requestContext;
136
+ const [, queryName] = request.query?.match(/{\s*(\w+)/) ?? [];
137
+ const cacheKey = `${queryName}:${queryHash}`;
138
+ try {
139
+ if (typeof cacheKeyGenerator === 'function') {
140
+ const generatedKey = cacheKeyGenerator(requestContext, cacheKey);
141
+ return generatedKey || cacheKey;
142
+ }
143
+ return cacheKey;
144
+ }
145
+ catch (e) {
146
+ // `this.logger` won't work here
147
+ console.warn('GenerateCacheKey Failed %s', e.message);
148
+ return cacheKey;
149
+ }
117
150
  },
151
+ shouldWriteToCache: (ctx) =>
152
+ // Cache only successful responses
153
+ isCacheable(ctx) && isEmpty(ctx?.response?.body?.singleResult.errors),
118
154
  }),
119
- invalidateCachePlugin({ cache: this.redisClient }),
155
+ invalidateCachePlugin({ cache: this.redisClient, invalidateCacheKeyGenerator }),
120
156
  ],
121
157
  };
122
158
  if (this.enableSubscription) {
123
159
  serverConfig.plugins.push({
124
160
  async serverWillStart() {
125
- return {
161
+ const response = {
126
162
  async drainServer() {
127
- await wsServerCleanup.dispose();
163
+ await this?.graphqlWsServer?.disconnect();
128
164
  },
129
165
  };
166
+ response.drainServer.bind(this);
167
+ return response;
130
168
  },
131
169
  });
132
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GraphqlServer.mjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphqlServer.mjs","sources":["../../src/servers/GraphqlServer.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -6,8 +6,9 @@ const constructDataSourcesForSubscriptions = (context, cache, dataSources) => {
6
6
  };
7
7
  // tslint:disable-next-line:forin
8
8
  for (const prop in dataSources) {
9
- // tslint:disable-next-line:no-console
10
- intializeDataSource(dataSources[prop]);
9
+ if (dataSources[prop] && typeof dataSources[prop]?.initialize === 'function') {
10
+ intializeDataSource(dataSources[prop]);
11
+ }
11
12
  }
12
13
  return dataSources;
13
14
  };
@@ -21,6 +22,7 @@ class GraphqlWs {
21
22
  this.wsServer = wsServer;
22
23
  this.moduleService = moduleService;
23
24
  this.cache = cache;
25
+ this.logger = this.moduleService.logger;
24
26
  }
25
27
  create() {
26
28
  this.subscriptionServer = ws.useServer({