@tsed/apollo 7.80.3 → 7.81.0-rc.1

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 (64) hide show
  1. package/lib/cjs/ApolloModule.js +13 -7
  2. package/lib/cjs/ApolloModule.js.map +1 -1
  3. package/lib/cjs/constants/constants.js +2 -1
  4. package/lib/cjs/constants/constants.js.map +1 -1
  5. package/lib/cjs/decorators/dataSource.js +2 -2
  6. package/lib/cjs/decorators/injectApolloContext.js +28 -0
  7. package/lib/cjs/decorators/injectApolloContext.js.map +1 -0
  8. package/lib/cjs/index.js +5 -0
  9. package/lib/cjs/index.js.map +1 -1
  10. package/lib/cjs/interfaces/AlterApolloContext.js +3 -0
  11. package/lib/cjs/interfaces/AlterApolloContext.js.map +1 -0
  12. package/lib/cjs/interfaces/AlterApolloServerPlugins.js +3 -0
  13. package/lib/cjs/interfaces/AlterApolloServerPlugins.js.map +1 -0
  14. package/lib/cjs/interfaces/AlterApolloSettings.js +3 -0
  15. package/lib/cjs/interfaces/AlterApolloSettings.js.map +1 -0
  16. package/lib/cjs/interfaces/ApolloContext.js +3 -0
  17. package/lib/cjs/interfaces/ApolloContext.js.map +1 -0
  18. package/lib/cjs/services/ApolloService.js +72 -55
  19. package/lib/cjs/services/ApolloService.js.map +1 -1
  20. package/lib/esm/ApolloModule.js +14 -8
  21. package/lib/esm/ApolloModule.js.map +1 -1
  22. package/lib/esm/constants/constants.js +1 -0
  23. package/lib/esm/constants/constants.js.map +1 -1
  24. package/lib/esm/decorators/dataSource.js +2 -2
  25. package/lib/esm/decorators/injectApolloContext.js +24 -0
  26. package/lib/esm/decorators/injectApolloContext.js.map +1 -0
  27. package/lib/esm/index.js +5 -0
  28. package/lib/esm/index.js.map +1 -1
  29. package/lib/esm/interfaces/AlterApolloContext.js +2 -0
  30. package/lib/esm/interfaces/AlterApolloContext.js.map +1 -0
  31. package/lib/esm/interfaces/AlterApolloServerPlugins.js +2 -0
  32. package/lib/esm/interfaces/AlterApolloServerPlugins.js.map +1 -0
  33. package/lib/esm/interfaces/AlterApolloSettings.js +2 -0
  34. package/lib/esm/interfaces/AlterApolloSettings.js.map +1 -0
  35. package/lib/esm/interfaces/ApolloContext.js +2 -0
  36. package/lib/esm/interfaces/ApolloContext.js.map +1 -0
  37. package/lib/esm/services/ApolloService.js +72 -55
  38. package/lib/esm/services/ApolloService.js.map +1 -1
  39. package/lib/types/ApolloModule.d.ts +3 -2
  40. package/lib/types/constants/constants.d.ts +1 -0
  41. package/lib/types/decorators/dataSource.d.ts +2 -2
  42. package/lib/types/decorators/injectApolloContext.d.ts +5 -0
  43. package/lib/types/index.d.ts +5 -0
  44. package/lib/types/interfaces/AlterApolloContext.d.ts +5 -0
  45. package/lib/types/interfaces/AlterApolloServerPlugins.d.ts +5 -0
  46. package/lib/types/interfaces/AlterApolloSettings.d.ts +7 -0
  47. package/lib/types/interfaces/ApolloContext.d.ts +4 -0
  48. package/lib/types/interfaces/ApolloSettings.d.ts +22 -10
  49. package/lib/types/services/ApolloService.d.ts +18 -14
  50. package/lib/types-esm/ApolloModule.d.ts +3 -2
  51. package/lib/types-esm/constants/constants.d.ts +1 -0
  52. package/lib/types-esm/decorators/dataSource.d.ts +2 -2
  53. package/lib/types-esm/decorators/injectApolloContext.d.ts +5 -0
  54. package/lib/types-esm/index.d.ts +5 -0
  55. package/lib/types-esm/interfaces/AlterApolloContext.d.ts +5 -0
  56. package/lib/types-esm/interfaces/AlterApolloServerPlugins.d.ts +5 -0
  57. package/lib/types-esm/interfaces/AlterApolloSettings.d.ts +7 -0
  58. package/lib/types-esm/interfaces/ApolloContext.d.ts +4 -0
  59. package/lib/types-esm/interfaces/ApolloSettings.d.ts +22 -10
  60. package/lib/types-esm/services/ApolloService.d.ts +18 -14
  61. package/package.json +23 -22
  62. package/readme.md +1 -24
  63. package/vitest.config.mts +5 -5
  64. package/.nycrc +0 -26
@@ -9,23 +9,25 @@ let ApolloModule = class ApolloModule {
9
9
  logger;
10
10
  service;
11
11
  configuration;
12
+ injector;
12
13
  get settings() {
13
- return this.configuration.get("apollo");
14
+ return this.configuration.get("apollo", this.configuration.get("graphql", this.configuration.get("typegraphql")));
14
15
  }
15
- $onRoutesInit() {
16
- const { settings } = this;
16
+ async $onRoutesInit() {
17
+ const { settings, injector } = this;
17
18
  if (settings) {
18
- const promises = Object.entries(settings).map(([key, options]) => {
19
- return this.service.createServer(key, options);
19
+ const promises = Object.entries(settings).map(async ([id, options]) => {
20
+ options = await injector.alterAsync("$alterApolloSettings", { id, ...options });
21
+ return this.service.createServer(id, options);
20
22
  });
21
- return Promise.all(promises);
23
+ await Promise.all(promises);
22
24
  }
23
25
  }
24
26
  $afterListen() {
25
27
  const host = this.configuration.getBestHost();
26
28
  const displayLog = (key, path) => {
27
29
  const url = typeof host.port === "number" ? `${host.protocol}://${host.address}:${host.port}` : "";
28
- this.logger.info(`[${key}] Apollo server is available on ${url}${path.replace(/^\//, "")}`);
30
+ this.logger.info(`[${key}] Apollo server is available on ${url}/${path.replace(/^\//, "")}`);
29
31
  };
30
32
  const { settings } = this;
31
33
  if (settings) {
@@ -48,6 +50,10 @@ tslib_1.__decorate([
48
50
  (0, di_1.Configuration)(),
49
51
  tslib_1.__metadata("design:type", Object)
50
52
  ], ApolloModule.prototype, "configuration", void 0);
53
+ tslib_1.__decorate([
54
+ (0, di_1.Inject)(di_1.InjectorService),
55
+ tslib_1.__metadata("design:type", di_1.InjectorService)
56
+ ], ApolloModule.prototype, "injector", void 0);
51
57
  ApolloModule = tslib_1.__decorate([
52
58
  (0, di_1.Module)()
53
59
  ], ApolloModule);
@@ -1 +1 @@
1
- {"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";;;;AAAA,yCAA+D;AAC/D,iCAAuD;AAEvD,kEAA0D;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEb,MAAM,CAAS;IAGf,OAAO,CAAgB;IAGvB,aAAa,CAAgB;IAEvC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,mCAAmC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC;QAEF,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC9C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AA5CC;IAAC,IAAA,WAAM,GAAE;sCACS,eAAM;4CAAC;AAEzB;IAAC,IAAA,WAAM,GAAE;sCACU,gCAAa;6CAAC;AAEjC;IAAC,IAAA,kBAAa,GAAE;;mDACuB;AAR5B,YAAY;IADxB,IAAA,WAAM,GAAE;GACI,YAAY,CA6CxB;AA7CY,oCAAY"}
1
+ {"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";;;;AAAA,yCAA+D;AAC/D,iCAAwE;AAExE,kEAA0D;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEb,MAAM,CAAS;IAGf,OAAO,CAAgB;IAGvB,aAAa,CAAgB;IAG7B,QAAQ,CAAkB;IAEpC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;QAElC,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;gBACpE,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAC,EAAE,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC;gBAE9E,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC7B;IACH,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,mCAAmC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC;QAEF,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC9C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AAjDC;IAAC,IAAA,WAAM,GAAE;sCACS,eAAM;4CAAC;AAEzB;IAAC,IAAA,WAAM,GAAE;sCACU,gCAAa;6CAAC;AAEjC;IAAC,IAAA,kBAAa,GAAE;;mDACuB;AAEvC;IAAC,IAAA,WAAM,EAAC,oBAAe,CAAC;sCACJ,oBAAe;8CAAC;AAXzB,YAAY;IADxB,IAAA,WAAM,GAAE;GACI,YAAY,CAkDxB;AAlDY,oCAAY"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DATASOURCES_PROVIDERS = void 0;
3
+ exports.APOLLO_CONTEXT = exports.DATASOURCES_PROVIDERS = void 0;
4
4
  exports.DATASOURCES_PROVIDERS = "graphql:datasources";
5
+ exports.APOLLO_CONTEXT = Symbol.for("APOLLO_CONTEXT");
5
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,qBAAqB,GAAG,qBAAqB,CAAC;AAC9C,QAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC"}
@@ -9,7 +9,7 @@ const constants_js_1 = require("../constants/constants.js");
9
9
  *
10
10
  * ```typescript
11
11
  * import { DataSourceService } from "@tsed/graphql";
12
- * import { RESTDataSource } from 'apollo-datasource-rest';
12
+ * import { RESTDataSource } from '@apollo/datasource-rest';
13
13
  *
14
14
  * @DataSource()
15
15
  * export class MyDataSource extends RESTDataSource {
@@ -43,7 +43,7 @@ exports.DataSource = DataSource;
43
43
  *
44
44
  * ```typescript
45
45
  * import { DataSourceService } from "@tsed/graphql";
46
- * import { RESTDataSource } from 'apollo-datasource-rest';
46
+ * import { RESTDataSource } from '@apollo/datasource-rest';
47
47
  *
48
48
  * @DataSource()
49
49
  * export class MyDataSource extends RESTDataSource {
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InjectApolloContext = void 0;
4
+ const common_1 = require("@tsed/common");
5
+ const core_1 = require("@tsed/core");
6
+ const di_1 = require("@tsed/di");
7
+ const constants_1 = require("../constants/constants");
8
+ /**
9
+ * Inject the Apollo context in the decorated property.
10
+ * @decorator
11
+ */
12
+ function InjectApolloContext() {
13
+ return (...args) => {
14
+ switch ((0, core_1.decoratorTypeOf)(args)) {
15
+ case core_1.DecoratorTypes.PARAM_CTOR:
16
+ (0, di_1.Inject)(constants_1.APOLLO_CONTEXT)(...args);
17
+ break;
18
+ case core_1.DecoratorTypes.PROP:
19
+ (0, common_1.injectProperty)(args[0], args[1], {
20
+ resolver() {
21
+ return () => (0, common_1.getContext)()?.get(constants_1.APOLLO_CONTEXT);
22
+ }
23
+ });
24
+ }
25
+ };
26
+ }
27
+ exports.InjectApolloContext = InjectApolloContext;
28
+ //# sourceMappingURL=injectApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectApolloContext.js","sourceRoot":"","sources":["../../../src/decorators/injectApolloContext.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AACxD,qCAAgF;AAChF,iCAAgC;AAChC,sDAAsD;AAEtD;;;GAGG;AACH,SAAgB,mBAAmB;IACjC,OAAO,CAAC,GAAG,IAAyB,EAAE,EAAE;QACtC,QAAQ,IAAA,sBAAe,EAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,qBAAc,CAAC,UAAU;gBAC5B,IAAA,WAAM,EAAC,0BAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,qBAAc,CAAC,IAAI;gBACtB,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE;oBACzC,QAAQ;wBACN,OAAO,GAAG,EAAE,CAAC,IAAA,mBAAU,GAAE,EAAE,GAAG,CAAC,0BAAc,CAAC,CAAC;oBACjD,CAAC;iBACF,CAAC,CAAC;SACN;IACH,CAAC,CAAC;AACJ,CAAC;AAfD,kDAeC"}
package/lib/cjs/index.js CHANGED
@@ -7,6 +7,11 @@ const tslib_1 = require("tslib");
7
7
  tslib_1.__exportStar(require("./ApolloModule.js"), exports);
8
8
  tslib_1.__exportStar(require("./constants/constants.js"), exports);
9
9
  tslib_1.__exportStar(require("./decorators/dataSource.js"), exports);
10
+ tslib_1.__exportStar(require("./decorators/injectApolloContext.js"), exports);
11
+ tslib_1.__exportStar(require("./interfaces/AlterApolloContext.js"), exports);
12
+ tslib_1.__exportStar(require("./interfaces/AlterApolloServerPlugins.js"), exports);
13
+ tslib_1.__exportStar(require("./interfaces/AlterApolloSettings.js"), exports);
14
+ tslib_1.__exportStar(require("./interfaces/ApolloContext.js"), exports);
10
15
  tslib_1.__exportStar(require("./interfaces/ApolloSettings.js"), exports);
11
16
  tslib_1.__exportStar(require("./services/ApolloService.js"), exports);
12
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,4DAAkC;AAClC,mEAAyC;AACzC,qEAA2C;AAC3C,yEAA+C;AAC/C,sEAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,4DAAkC;AAClC,mEAAyC;AACzC,qEAA2C;AAC3C,8EAAoD;AACpD,6EAAmD;AACnD,mFAAyD;AACzD,8EAAoD;AACpD,wEAA8C;AAC9C,yEAA+C;AAC/C,sEAA4C"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AlterApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloContext.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AlterApolloServerPlugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloServerPlugins.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloServerPlugins.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AlterApolloSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloSettings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApolloContext.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloContext.ts"],"names":[],"mappings":""}
@@ -2,16 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ApolloService = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const server_1 = require("@apollo/server");
6
+ const disabled_1 = require("@apollo/server/plugin/disabled");
7
+ const drainHttpServer_1 = require("@apollo/server/plugin/drainHttpServer");
8
+ const default_1 = require("@apollo/server/plugin/landingPage/default");
5
9
  const common_1 = require("@tsed/common");
6
- const core_1 = require("@tsed/core");
7
10
  const di_1 = require("@tsed/di");
8
11
  const logger_1 = require("@tsed/logger");
9
- const apollo_server_core_1 = require("apollo-server-core");
10
12
  const http_1 = tslib_1.__importDefault(require("http"));
11
13
  const https_1 = tslib_1.__importDefault(require("https"));
12
14
  const constants_js_1 = require("../constants/constants.js");
13
15
  let ApolloService = class ApolloService {
14
- dataSources;
15
16
  platformName;
16
17
  logger;
17
18
  /**
@@ -24,9 +25,6 @@ let ApolloService = class ApolloService {
24
25
  httpServer;
25
26
  httpsServer;
26
27
  injector;
27
- constructor(dataSources) {
28
- this.dataSources = dataSources;
29
- }
30
28
  async createServer(id, settings) {
31
29
  if (!this.has(id)) {
32
30
  try {
@@ -34,22 +32,40 @@ let ApolloService = class ApolloService {
34
32
  this.logger.info(`Create server with Apollo for: ${id}`);
35
33
  this.logger.debug(`options: ${JSON.stringify({ path })}`);
36
34
  const plugins = await this.getPlugins(settings);
37
- const server = await this.createInstance({
35
+ const server = this.createInstance({
38
36
  ...config,
39
- plugins,
40
- dataSources: this.createDataSources(dataSources)
37
+ plugins
41
38
  }, customServer);
42
39
  if (server) {
43
40
  this.servers.set(id || "default", {
44
41
  instance: server,
45
- schema: settings.schema
42
+ schema: settings.schema,
43
+ typeDefs: settings.typeDefs,
44
+ resolvers: settings.resolvers
46
45
  });
47
46
  await server.start();
48
- const middleware = server.getMiddleware({
49
- path: settings.path,
50
- ...middlewareOptions
51
- });
52
- this.app.use(middleware);
47
+ const contextHandler = this.createContextHandler(server, settings);
48
+ switch (this.platformName) {
49
+ case "express":
50
+ const { expressMiddleware } = await import("@apollo/server/express4");
51
+ this.app.use(path, expressMiddleware(server, {
52
+ ...middlewareOptions,
53
+ context: contextHandler
54
+ }));
55
+ break;
56
+ case "koa":
57
+ const { koaMiddleware } = await import("@as-integrations/koa");
58
+ this.app.use(path, koaMiddleware(server, {
59
+ ...middlewareOptions,
60
+ context: contextHandler
61
+ }));
62
+ break;
63
+ default:
64
+ this.logger.warn({
65
+ event: "APOLLO_UNKNOWN_PLATFORM",
66
+ message: "Platform not supported. Please use Ts.ED platform (express, koa)"
67
+ });
68
+ }
53
69
  }
54
70
  }
55
71
  catch (er) {
@@ -59,8 +75,7 @@ let ApolloService = class ApolloService {
59
75
  message: er.message,
60
76
  stack: er.stack
61
77
  });
62
- /* istanbul ignore next */
63
- process.exit(-1);
78
+ throw er;
64
79
  }
65
80
  }
66
81
  return this.get(id);
@@ -73,12 +88,21 @@ let ApolloService = class ApolloService {
73
88
  return this.servers.get(id)?.instance;
74
89
  }
75
90
  /**
76
- * Get an instance of GraphQL schema from his id
91
+ * Get schema of the ApolloServer from his id
77
92
  * @returns GraphQLSchema
78
93
  */
79
94
  getSchema(id = "default") {
80
95
  return this.servers.get(id)?.schema;
81
96
  }
97
+ /**
98
+ * Get TypeDefs of the ApolloServer from his id
99
+ */
100
+ getTypeDefs(id = "default") {
101
+ return this.servers.get(id)?.typeDefs;
102
+ }
103
+ getResolvers(id = "default") {
104
+ return this.servers.get(id)?.resolvers;
105
+ }
82
106
  /**
83
107
  *
84
108
  * @param {string} id
@@ -87,59 +111,54 @@ let ApolloService = class ApolloService {
87
111
  has(id = "default") {
88
112
  return this.servers.has(id);
89
113
  }
90
- async createInstance(options, server) {
91
- if (server) {
92
- return server(options);
93
- }
94
- const importServer = async () => {
95
- switch (this.platformName) {
96
- default:
97
- this.logger.error(`Platform "${this.platformName}" not supported by @tsed/apollo`);
98
- case "express":
99
- return (await import("apollo-server-express")).ApolloServer;
100
- case "koa":
101
- return (await import("apollo-server-koa")).ApolloServer;
102
- }
103
- };
104
- const Server = await importServer();
105
- return new Server(options);
106
- }
107
114
  /**
108
115
  * create a new dataSources function to use with apollo server config
109
- * @param dataSources
110
116
  */
111
- createDataSources(dataSources) {
112
- const dataSourcesHash = this.dataSources.reduce((map, instance) => {
113
- const klass = (0, core_1.classOf)(instance);
114
- const store = core_1.Store.from(klass);
115
- let { name } = store.get(constants_js_1.DATASOURCES_PROVIDERS);
116
- name = name || (0, core_1.nameOf)(klass);
117
+ createContextHandler(server, settings) {
118
+ const { injector } = this;
119
+ const dataSourcesContainer = injector.getProviders(constants_js_1.DATASOURCES_PROVIDERS).reduce((map, provider) => {
120
+ let { name } = provider.store.get(constants_js_1.DATASOURCES_PROVIDERS);
121
+ name = name || provider.className;
117
122
  const sourceName = `${name[0].toLowerCase()}${name.slice(1)}`;
118
- map[sourceName] = instance;
123
+ map.set(sourceName, provider);
119
124
  return map;
120
- }, {});
121
- return () => {
122
- return {
123
- ...dataSourcesHash,
124
- ...(dataSources ? dataSources() : {})
125
+ }, new Map());
126
+ return async () => {
127
+ const $ctx = (0, common_1.getContext)();
128
+ const context = {
129
+ dataSources: {
130
+ ...(settings.dataSources?.() || {})
131
+ }
125
132
  };
133
+ const alteredContext = await this.injector.alterAsync("$alterApolloContext", context, $ctx);
134
+ $ctx.set(constants_js_1.APOLLO_CONTEXT, alteredContext);
135
+ const locals = new common_1.LocalsContainer();
136
+ locals.set(constants_js_1.APOLLO_CONTEXT, alteredContext);
137
+ locals.set(server_1.ApolloServer, server);
138
+ dataSourcesContainer.forEach((provider, key) => {
139
+ alteredContext.dataSources[key] = injector.invoke(provider.token, locals);
140
+ });
141
+ return alteredContext;
126
142
  };
127
143
  }
144
+ createInstance(options, server) {
145
+ return server ? server(options) : new server_1.ApolloServer(options);
146
+ }
128
147
  async getPlugins(serverSettings) {
129
148
  const playground = serverSettings.playground || (serverSettings.playground === undefined && process.env.NODE_ENV !== "production");
130
- const result = await this.injector.alter("$alterApolloServerPlugins", [
149
+ const result = await this.injector.alterAsync("$alterApolloServerPlugins", [
131
150
  this.httpServer &&
132
- (0, apollo_server_core_1.ApolloServerPluginDrainHttpServer)({
151
+ (0, drainHttpServer_1.ApolloServerPluginDrainHttpServer)({
133
152
  httpServer: this.httpServer
134
153
  }),
135
154
  this.httpsServer &&
136
- (0, apollo_server_core_1.ApolloServerPluginDrainHttpServer)({
155
+ (0, drainHttpServer_1.ApolloServerPluginDrainHttpServer)({
137
156
  httpServer: this.httpsServer
138
157
  }),
139
158
  ...(serverSettings.plugins || [])
140
159
  ].filter(Boolean), serverSettings);
141
160
  return result
142
- .concat([playground ? (0, apollo_server_core_1.ApolloServerPluginLandingPageLocalDefault)({ embed: true }) : (0, apollo_server_core_1.ApolloServerPluginLandingPageDisabled)()])
161
+ .concat([playground ? (0, default_1.ApolloServerPluginLandingPageLocalDefault)({ embed: true }) : (0, disabled_1.ApolloServerPluginLandingPageDisabled)()])
143
162
  .filter(Boolean);
144
163
  }
145
164
  };
@@ -168,9 +187,7 @@ tslib_1.__decorate([
168
187
  tslib_1.__metadata("design:type", common_1.InjectorService)
169
188
  ], ApolloService.prototype, "injector", void 0);
170
189
  ApolloService = tslib_1.__decorate([
171
- (0, di_1.Service)(),
172
- tslib_1.__param(0, (0, di_1.Inject)(constants_js_1.DATASOURCES_PROVIDERS)),
173
- tslib_1.__metadata("design:paramtypes", [Array])
190
+ (0, di_1.Service)()
174
191
  ], ApolloService);
175
192
  exports.ApolloService = ApolloService;
176
193
  //# sourceMappingURL=ApolloService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,30 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
2
  import { Logger } from "@tsed/common";
3
- import { Configuration, Inject, Module } from "@tsed/di";
3
+ import { Configuration, Inject, Module, InjectorService } from "@tsed/di";
4
4
  import { ApolloService } from "./services/ApolloService.js";
5
5
  let ApolloModule = class ApolloModule {
6
6
  logger;
7
7
  service;
8
8
  configuration;
9
+ injector;
9
10
  get settings() {
10
- return this.configuration.get("apollo");
11
+ return this.configuration.get("apollo", this.configuration.get("graphql", this.configuration.get("typegraphql")));
11
12
  }
12
- $onRoutesInit() {
13
- const { settings } = this;
13
+ async $onRoutesInit() {
14
+ const { settings, injector } = this;
14
15
  if (settings) {
15
- const promises = Object.entries(settings).map(([key, options]) => {
16
- return this.service.createServer(key, options);
16
+ const promises = Object.entries(settings).map(async ([id, options]) => {
17
+ options = await injector.alterAsync("$alterApolloSettings", { id, ...options });
18
+ return this.service.createServer(id, options);
17
19
  });
18
- return Promise.all(promises);
20
+ await Promise.all(promises);
19
21
  }
20
22
  }
21
23
  $afterListen() {
22
24
  const host = this.configuration.getBestHost();
23
25
  const displayLog = (key, path) => {
24
26
  const url = typeof host.port === "number" ? `${host.protocol}://${host.address}:${host.port}` : "";
25
- this.logger.info(`[${key}] Apollo server is available on ${url}${path.replace(/^\//, "")}`);
27
+ this.logger.info(`[${key}] Apollo server is available on ${url}/${path.replace(/^\//, "")}`);
26
28
  };
27
29
  const { settings } = this;
28
30
  if (settings) {
@@ -45,6 +47,10 @@ __decorate([
45
47
  Configuration(),
46
48
  __metadata("design:type", Object)
47
49
  ], ApolloModule.prototype, "configuration", void 0);
50
+ __decorate([
51
+ Inject(InjectorService),
52
+ __metadata("design:type", InjectorService)
53
+ ], ApolloModule.prototype, "injector", void 0);
48
54
  ApolloModule = __decorate([
49
55
  Module()
50
56
  ], ApolloModule);
@@ -1 +1 @@
1
- {"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,MAAM,EAAe,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAC,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEb,MAAM,CAAS;IAGf,OAAO,CAAgB;IAGvB,aAAa,CAAgB;IAEvC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,aAAa;QACX,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC9B;IACH,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,mCAAmC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC;QAEF,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC9C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AA5CC;IAAC,MAAM,EAAE;8BACS,MAAM;4CAAC;AAEzB;IAAC,MAAM,EAAE;8BACU,aAAa;6CAAC;AAEjC;IAAC,aAAa,EAAE;;mDACuB;AAR5B,YAAY;IADxB,MAAM,EAAE;GACI,YAAY,CA6CxB;SA7CY,YAAY"}
1
+ {"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";AAAA,OAAO,EAAc,MAAM,EAAe,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAC,MAAM,UAAU,CAAC;AAExE,OAAO,EAAC,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAGnD,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEb,MAAM,CAAS;IAGf,OAAO,CAAgB;IAGvB,aAAa,CAAgB;IAG7B,QAAQ,CAAkB;IAEpC,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IACpH,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC;QAElC,IAAI,QAAQ,EAAE;YACZ,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;gBACpE,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAC,EAAE,EAAE,GAAG,OAAO,EAAC,CAAC,CAAC;gBAE9E,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC7B;IACH,CAAC;IAED,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAE9C,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE;YAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAEnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,mCAAmC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/F,CAAC,CAAC;QAEF,MAAM,EAAC,QAAQ,EAAC,GAAG,IAAI,CAAC;QAExB,IAAI,QAAQ,EAAE;YACZ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBAC9C,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AAjDC;IAAC,MAAM,EAAE;8BACS,MAAM;4CAAC;AAEzB;IAAC,MAAM,EAAE;8BACU,aAAa;6CAAC;AAEjC;IAAC,aAAa,EAAE;;mDACuB;AAEvC;IAAC,MAAM,CAAC,eAAe,CAAC;8BACJ,eAAe;8CAAC;AAXzB,YAAY;IADxB,MAAM,EAAE;GACI,YAAY,CAkDxB;SAlDY,YAAY"}
@@ -1,2 +1,3 @@
1
1
  export const DATASOURCES_PROVIDERS = "graphql:datasources";
2
+ export const APOLLO_CONTEXT = Symbol.for("APOLLO_CONTEXT");
2
3
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/constants/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC"}
@@ -6,7 +6,7 @@ import { DATASOURCES_PROVIDERS } from "../constants/constants.js";
6
6
  *
7
7
  * ```typescript
8
8
  * import { DataSourceService } from "@tsed/graphql";
9
- * import { RESTDataSource } from 'apollo-datasource-rest';
9
+ * import { RESTDataSource } from '@apollo/datasource-rest';
10
10
  *
11
11
  * @DataSource()
12
12
  * export class MyDataSource extends RESTDataSource {
@@ -39,7 +39,7 @@ export function DataSource(name) {
39
39
  *
40
40
  * ```typescript
41
41
  * import { DataSourceService } from "@tsed/graphql";
42
- * import { RESTDataSource } from 'apollo-datasource-rest';
42
+ * import { RESTDataSource } from '@apollo/datasource-rest';
43
43
  *
44
44
  * @DataSource()
45
45
  * export class MyDataSource extends RESTDataSource {
@@ -0,0 +1,24 @@
1
+ import { getContext, injectProperty } from "@tsed/common";
2
+ import { decoratorTypeOf, DecoratorTypes } from "@tsed/core";
3
+ import { Inject } from "@tsed/di";
4
+ import { APOLLO_CONTEXT } from "../constants/constants.js";
5
+ /**
6
+ * Inject the Apollo context in the decorated property.
7
+ * @decorator
8
+ */
9
+ export function InjectApolloContext() {
10
+ return (...args) => {
11
+ switch (decoratorTypeOf(args)) {
12
+ case DecoratorTypes.PARAM_CTOR:
13
+ Inject(APOLLO_CONTEXT)(...args);
14
+ break;
15
+ case DecoratorTypes.PROP:
16
+ injectProperty(args[0], args[1], {
17
+ resolver() {
18
+ return () => getContext()?.get(APOLLO_CONTEXT);
19
+ }
20
+ });
21
+ }
22
+ };
23
+ }
24
+ //# sourceMappingURL=injectApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injectApolloContext.js","sourceRoot":"","sources":["../../../src/decorators/injectApolloContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,cAAc,EAAC,MAAM,cAAc,CAAC;AACxD,OAAO,EAAsB,eAAe,EAAE,cAAc,EAAC,MAAM,YAAY,CAAC;AAChF,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,cAAc,EAAC,MAAM,wBAAwB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,GAAG,IAAyB,EAAE,EAAE;QACtC,QAAQ,eAAe,CAAC,IAAI,CAAC,EAAE;YAC7B,KAAK,cAAc,CAAC,UAAU;gBAC5B,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAChC,MAAM;YAER,KAAK,cAAc,CAAC,IAAI;gBACtB,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAW,EAAE;oBACzC,QAAQ;wBACN,OAAO,GAAG,EAAE,CAAC,UAAU,EAAE,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;oBACjD,CAAC;iBACF,CAAC,CAAC;SACN;IACH,CAAC,CAAC;AACJ,CAAC"}
package/lib/esm/index.js CHANGED
@@ -4,6 +4,11 @@
4
4
  export * from "./ApolloModule.js";
5
5
  export * from "./constants/constants.js";
6
6
  export * from "./decorators/dataSource.js";
7
+ export * from "./decorators/injectApolloContext.js";
8
+ export * from "./interfaces/AlterApolloContext.js";
9
+ export * from "./interfaces/AlterApolloServerPlugins.js";
10
+ export * from "./interfaces/AlterApolloSettings.js";
11
+ export * from "./interfaces/ApolloContext.js";
7
12
  export * from "./interfaces/ApolloSettings.js";
8
13
  export * from "./services/ApolloService.js";
9
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,0CAA0C,CAAC;AACzD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AlterApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloContext.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloContext.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AlterApolloServerPlugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloServerPlugins.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloServerPlugins.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AlterApolloSettings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AlterApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/AlterApolloSettings.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ApolloContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApolloContext.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloContext.ts"],"names":[],"mappings":""}