@tsed/apollo 7.0.0-beta.2 → 7.0.0-beta.20
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.
- package/lib/cjs/ApolloModule.js +10 -7
- package/lib/cjs/ApolloModule.js.map +1 -1
- package/lib/cjs/index.js +6 -2
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces/ApolloSettings.js.map +1 -1
- package/lib/cjs/package.json +3 -0
- package/lib/cjs/services/ApolloService.js +35 -36
- package/lib/cjs/services/ApolloService.js.map +1 -1
- package/lib/esm/ApolloModule.js +4 -1
- package/lib/esm/ApolloModule.js.map +1 -1
- package/lib/esm/index.js +6 -2
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/interfaces/ApolloSettings.js.map +1 -1
- package/lib/esm/package.json +3 -0
- package/lib/esm/services/ApolloService.js +22 -23
- package/lib/esm/services/ApolloService.js.map +1 -1
- package/lib/types/index.d.ts +4 -0
- package/lib/types/interfaces/ApolloSettings.d.ts +1 -1
- package/lib/types/services/ApolloService.d.ts +1 -1
- package/package.json +18 -13
- package/readme.md +6 -7
- package/tsconfig.compile.esm.json +1 -12
package/lib/cjs/ApolloModule.js
CHANGED
|
@@ -6,6 +6,9 @@ const common_1 = require("@tsed/common");
|
|
|
6
6
|
const di_1 = require("@tsed/di");
|
|
7
7
|
const ApolloService_1 = require("./services/ApolloService");
|
|
8
8
|
let ApolloModule = class ApolloModule {
|
|
9
|
+
logger;
|
|
10
|
+
service;
|
|
11
|
+
configuration;
|
|
9
12
|
get settings() {
|
|
10
13
|
return this.configuration.get("apollo");
|
|
11
14
|
}
|
|
@@ -33,19 +36,19 @@ let ApolloModule = class ApolloModule {
|
|
|
33
36
|
}
|
|
34
37
|
}
|
|
35
38
|
};
|
|
36
|
-
|
|
39
|
+
tslib_1.__decorate([
|
|
37
40
|
(0, di_1.Inject)(),
|
|
38
|
-
|
|
41
|
+
tslib_1.__metadata("design:type", common_1.Logger)
|
|
39
42
|
], ApolloModule.prototype, "logger", void 0);
|
|
40
|
-
|
|
43
|
+
tslib_1.__decorate([
|
|
41
44
|
(0, di_1.Inject)(),
|
|
42
|
-
|
|
45
|
+
tslib_1.__metadata("design:type", ApolloService_1.ApolloService)
|
|
43
46
|
], ApolloModule.prototype, "service", void 0);
|
|
44
|
-
|
|
47
|
+
tslib_1.__decorate([
|
|
45
48
|
(0, di_1.Configuration)(),
|
|
46
|
-
|
|
49
|
+
tslib_1.__metadata("design:type", Object)
|
|
47
50
|
], ApolloModule.prototype, "configuration", void 0);
|
|
48
|
-
ApolloModule =
|
|
51
|
+
ApolloModule = tslib_1.__decorate([
|
|
49
52
|
(0, di_1.Module)()
|
|
50
53
|
], ApolloModule);
|
|
51
54
|
exports.ApolloModule = ApolloModule;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";;;;AAAA,yCAA+D;AAC/D,iCAAuD;AAEvD,4DAAuD;AAGvD,IAAa,YAAY,GAAzB,MAAa,YAAY;
|
|
1
|
+
{"version":3,"file":"ApolloModule.js","sourceRoot":"","sources":["../../src/ApolloModule.ts"],"names":[],"mappings":";;;;AAAA,yCAA+D;AAC/D,iCAAuD;AAEvD,4DAAuD;AAGvD,IAAa,YAAY,GAAzB,MAAa,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,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBACrE,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,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBACpD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AA3CC;IADC,IAAA,WAAM,GAAE;sCACS,eAAM;4CAAC;AAGzB;IADC,IAAA,WAAM,GAAE;sCACU,6BAAa;6CAAC;AAGjC;IADC,IAAA,kBAAa,GAAE;;mDACuB;AAR5B,YAAY;IADxB,IAAA,WAAM,GAAE;GACI,YAAY,CA6CxB;AA7CY,oCAAY","sourcesContent":["import {AfterListen, Logger, OnRoutesInit} from \"@tsed/common\";\nimport {Configuration, Inject, Module} from \"@tsed/di\";\nimport {ApolloSettings} from \"./interfaces/ApolloSettings\";\nimport {ApolloService} from \"./services/ApolloService\";\n\n@Module()\nexport class ApolloModule implements OnRoutesInit, AfterListen {\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected service: ApolloService;\n\n @Configuration()\n protected configuration: Configuration;\n\n get settings(): {[key: string]: ApolloSettings} | undefined {\n return this.configuration.get(\"apollo\");\n }\n\n $onRoutesInit(): Promise<any> | void {\n const {settings} = this;\n\n if (settings) {\n const promises = Object.entries(settings).map(async ([key, options]) => {\n return this.service.createServer(key, options);\n });\n\n return Promise.all(promises);\n }\n }\n\n $afterListen(): Promise<any> | void {\n const host = this.configuration.getBestHost();\n\n const displayLog = (key: string, path: string) => {\n const url = typeof host.port === \"number\" ? `${host.protocol}://${host.address}:${host.port}` : \"\";\n\n this.logger.info(`[${key}] Apollo server is available on ${url}${path.replace(/^\\//, \"\")}`);\n };\n\n const {settings} = this;\n\n if (settings) {\n Object.entries(settings).map(async ([key, options]) => {\n const {path} = options;\n\n displayLog(key, path);\n });\n }\n }\n}\n"]}
|
package/lib/cjs/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @file Automatically generated by barrelsby.
|
|
4
|
+
*/
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
const tslib_1 = require("tslib");
|
|
4
|
-
|
|
5
|
-
|
|
7
|
+
tslib_1.__exportStar(require("./ApolloModule"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./interfaces/ApolloSettings"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./services/ApolloService"), exports);
|
|
6
10
|
//# sourceMappingURL=index.js.map
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yDAA+B;AAC/B,sEAA4C;AAC5C,mEAAyC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./ApolloModule\";\nexport * from \"./interfaces/ApolloSettings\";\nexport * from \"./services/ApolloService\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {ApolloServerBase, Config, ApolloServerPluginLandingPageGraphQLPlaygroundOptions} from \"apollo-server-core\";\n\nexport type ApolloMiddlewareOptions = Record<string, any>;\nexport type ApolloServer = ApolloServerBase & {
|
|
1
|
+
{"version":3,"file":"ApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {ApolloServerBase, Config, ApolloServerPluginLandingPageGraphQLPlaygroundOptions} from \"apollo-server-core\";\n\nexport type ApolloMiddlewareOptions = Record<string, any>;\nexport type ApolloServer = ApolloServerBase & {getMiddleware(settings: ApolloMiddlewareOptions): any};\nexport type ApolloCustomServerCB = (config: ApolloConfig) => ApolloServer;\nexport type ApolloConfig = Config;\n\nexport interface ApolloSettings extends ApolloConfig {\n // Basic options\n path: string;\n server?: ApolloCustomServerCB;\n playground?: boolean | ApolloServerPluginLandingPageGraphQLPlaygroundOptions;\n // ApplyMiddleware Options\n // See options descriptions on https://www.apollographql.com/docs/apollo-server/api/apollo-server.html\n serverRegistration?: ApolloMiddlewareOptions;\n middlewareOptions?: ApolloMiddlewareOptions;\n}\n"]}
|
|
@@ -2,21 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ApolloService = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
+
const common_1 = require("@tsed/common");
|
|
5
6
|
const di_1 = require("@tsed/di");
|
|
6
7
|
const logger_1 = require("@tsed/logger");
|
|
7
|
-
const common_1 = require("@tsed/common");
|
|
8
8
|
const apollo_server_core_1 = require("apollo-server-core");
|
|
9
|
-
const http_1 =
|
|
10
|
-
const https_1 =
|
|
9
|
+
const http_1 = tslib_1.__importDefault(require("http"));
|
|
10
|
+
const https_1 = tslib_1.__importDefault(require("https"));
|
|
11
11
|
let ApolloService = class ApolloService {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
platformName;
|
|
13
|
+
logger;
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @type {Map<any, any>}
|
|
17
|
+
* @private
|
|
18
|
+
*/
|
|
19
|
+
servers = new Map();
|
|
20
|
+
app;
|
|
21
|
+
httpServer;
|
|
22
|
+
httpsServer;
|
|
20
23
|
async createServer(id, settings) {
|
|
21
24
|
if (this.has(id)) {
|
|
22
25
|
return this.get(id);
|
|
@@ -25,7 +28,7 @@ let ApolloService = class ApolloService {
|
|
|
25
28
|
const { path, middlewareOptions = {}, server: customServer, ...config } = settings;
|
|
26
29
|
this.logger.info(`Create server with Apollo for: ${id}`);
|
|
27
30
|
this.logger.debug(`options: ${JSON.stringify({ path })}`);
|
|
28
|
-
const server = this.createInstance({
|
|
31
|
+
const server = await this.createInstance({
|
|
29
32
|
...config,
|
|
30
33
|
plugins: this.getPlugins(settings)
|
|
31
34
|
}, customServer);
|
|
@@ -35,11 +38,11 @@ let ApolloService = class ApolloService {
|
|
|
35
38
|
schema: settings.schema
|
|
36
39
|
});
|
|
37
40
|
await server.start();
|
|
38
|
-
|
|
41
|
+
const middleware = server.getMiddleware({
|
|
39
42
|
path: settings.path,
|
|
40
|
-
...middlewareOptions
|
|
41
|
-
app: this.app.raw
|
|
43
|
+
...middlewareOptions
|
|
42
44
|
});
|
|
45
|
+
this.app.use(middleware);
|
|
43
46
|
return server;
|
|
44
47
|
}
|
|
45
48
|
}
|
|
@@ -55,16 +58,14 @@ let ApolloService = class ApolloService {
|
|
|
55
58
|
* @returns ApolloServer
|
|
56
59
|
*/
|
|
57
60
|
get(id = "default") {
|
|
58
|
-
|
|
59
|
-
return (_a = this.servers.get(id)) === null || _a === void 0 ? void 0 : _a.instance;
|
|
61
|
+
return this.servers.get(id)?.instance;
|
|
60
62
|
}
|
|
61
63
|
/**
|
|
62
64
|
* Get an instance of GraphQL schema from his id
|
|
63
65
|
* @returns GraphQLSchema
|
|
64
66
|
*/
|
|
65
67
|
getSchema(id = "default") {
|
|
66
|
-
|
|
67
|
-
return (_a = this.servers.get(id)) === null || _a === void 0 ? void 0 : _a.schema;
|
|
68
|
+
return this.servers.get(id)?.schema;
|
|
68
69
|
}
|
|
69
70
|
/**
|
|
70
71
|
*
|
|
@@ -74,14 +75,14 @@ let ApolloService = class ApolloService {
|
|
|
74
75
|
has(id = "default") {
|
|
75
76
|
return this.servers.has(id);
|
|
76
77
|
}
|
|
77
|
-
createInstance(options, server) {
|
|
78
|
+
async createInstance(options, server) {
|
|
78
79
|
// istanbul ignore next
|
|
79
80
|
if (server) {
|
|
80
81
|
return server(options);
|
|
81
82
|
}
|
|
82
83
|
// istanbul ignore next
|
|
83
84
|
try {
|
|
84
|
-
const Server = require(`apollo-server-${this.platformName || "express"}`)
|
|
85
|
+
const { ApolloServer: Server } = await Promise.resolve().then(() => tslib_1.__importStar(require(`apollo-server-${this.platformName || "express"}`)));
|
|
85
86
|
return new Server(options);
|
|
86
87
|
}
|
|
87
88
|
catch (er) {
|
|
@@ -89,11 +90,9 @@ let ApolloService = class ApolloService {
|
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
getPlugins(serverSettings) {
|
|
92
|
-
const playground = serverSettings.playground || serverSettings.playground === undefined;
|
|
93
|
+
const playground = serverSettings.playground || (serverSettings.playground === undefined && process.env.NODE_ENV !== "production");
|
|
93
94
|
return [
|
|
94
|
-
playground
|
|
95
|
-
? (0, apollo_server_core_1.ApolloServerPluginLandingPageDisabled)()
|
|
96
|
-
: (0, apollo_server_core_1.ApolloServerPluginLandingPageGraphQLPlayground)(),
|
|
95
|
+
playground ? (0, apollo_server_core_1.ApolloServerPluginLandingPageGraphQLPlayground)() : (0, apollo_server_core_1.ApolloServerPluginLandingPageDisabled)(),
|
|
97
96
|
this.httpServer &&
|
|
98
97
|
(0, apollo_server_core_1.ApolloServerPluginDrainHttpServer)({
|
|
99
98
|
httpServer: this.httpServer
|
|
@@ -106,27 +105,27 @@ let ApolloService = class ApolloService {
|
|
|
106
105
|
].filter(Boolean);
|
|
107
106
|
}
|
|
108
107
|
};
|
|
109
|
-
|
|
108
|
+
tslib_1.__decorate([
|
|
110
109
|
(0, di_1.Constant)("PLATFORM_NAME"),
|
|
111
|
-
|
|
110
|
+
tslib_1.__metadata("design:type", String)
|
|
112
111
|
], ApolloService.prototype, "platformName", void 0);
|
|
113
|
-
|
|
112
|
+
tslib_1.__decorate([
|
|
114
113
|
(0, di_1.Inject)(),
|
|
115
|
-
|
|
114
|
+
tslib_1.__metadata("design:type", logger_1.Logger)
|
|
116
115
|
], ApolloService.prototype, "logger", void 0);
|
|
117
|
-
|
|
116
|
+
tslib_1.__decorate([
|
|
118
117
|
(0, di_1.Inject)(),
|
|
119
|
-
|
|
118
|
+
tslib_1.__metadata("design:type", common_1.PlatformApplication)
|
|
120
119
|
], ApolloService.prototype, "app", void 0);
|
|
121
|
-
|
|
120
|
+
tslib_1.__decorate([
|
|
122
121
|
(0, di_1.Inject)(http_1.default.Server),
|
|
123
|
-
|
|
122
|
+
tslib_1.__metadata("design:type", Object)
|
|
124
123
|
], ApolloService.prototype, "httpServer", void 0);
|
|
125
|
-
|
|
124
|
+
tslib_1.__decorate([
|
|
126
125
|
(0, di_1.Inject)(https_1.default.Server),
|
|
127
|
-
|
|
126
|
+
tslib_1.__metadata("design:type", Object)
|
|
128
127
|
], ApolloService.prototype, "httpsServer", void 0);
|
|
129
|
-
ApolloService =
|
|
128
|
+
ApolloService = tslib_1.__decorate([
|
|
130
129
|
(0, di_1.Service)()
|
|
131
130
|
], ApolloService);
|
|
132
131
|
exports.ApolloService = ApolloService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":";;;;AAAA,iCAAmD;AACnD,yCAAoC;
|
|
1
|
+
{"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Constant, Inject, Service} from \"@tsed/di\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Config} from \"apollo-server-core\";\nimport {\n ApolloServerBase,\n ApolloServerPluginDrainHttpServer,\n ApolloServerPluginLandingPageDisabled,\n ApolloServerPluginLandingPageGraphQLPlayground\n} from \"apollo-server-core\";\nimport type {GraphQLSchema} from \"graphql\";\nimport Http from \"http\";\nimport Https from \"https\";\nimport type {ApolloServer, ApolloSettings} from \"../interfaces/ApolloSettings\";\nimport {ApolloCustomServerCB} from \"../interfaces/ApolloSettings\";\n\n@Service()\nexport class ApolloService {\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Inject()\n protected logger: Logger;\n\n /**\n *\n * @type {Map<any, any>}\n * @private\n */\n protected servers: Map<\n string,\n {\n instance: ApolloServerBase;\n schema: GraphQLSchema | undefined;\n }\n > = new Map();\n\n @Inject()\n private app: PlatformApplication<any>;\n\n @Inject(Http.Server)\n private httpServer: Http.Server | null;\n\n @Inject(Https.Server)\n private httpsServer: Https.Server | null;\n\n async createServer(id: string, settings: ApolloSettings): Promise<any> {\n if (this.has(id)) {\n return this.get(id)!;\n }\n\n try {\n const {path, middlewareOptions = {}, server: customServer, ...config} = settings;\n\n this.logger.info(`Create server with Apollo for: ${id}`);\n this.logger.debug(`options: ${JSON.stringify({path})}`);\n\n const server = await this.createInstance(\n {\n ...config,\n plugins: this.getPlugins(settings)\n },\n customServer\n );\n\n if (server) {\n this.servers.set(id || \"default\", {\n instance: server,\n schema: settings.schema\n });\n\n await server.start();\n\n const middleware = server.getMiddleware({\n path: settings.path,\n ...middlewareOptions\n });\n\n this.app.use(middleware);\n\n return server;\n }\n } catch (err) {\n /* istanbul ignore next */\n this.logger.error(err);\n /* istanbul ignore next */\n process.exit(-1);\n }\n }\n\n /**\n * Get an instance of ApolloServer from his id\n * @returns ApolloServer\n */\n get(id: string = \"default\"): ApolloServerBase | undefined {\n return this.servers.get(id)?.instance;\n }\n\n /**\n * Get an instance of GraphQL schema from his id\n * @returns GraphQLSchema\n */\n getSchema(id: string = \"default\"): GraphQLSchema | undefined {\n return this.servers.get(id)?.schema;\n }\n\n /**\n *\n * @param {string} id\n * @returns {boolean}\n */\n has(id: string = \"default\"): boolean {\n return this.servers.has(id);\n }\n\n protected async createInstance(options: Config, server?: ApolloCustomServerCB): Promise<ApolloServer | undefined> {\n // istanbul ignore next\n if (server) {\n return server(options);\n }\n\n // istanbul ignore next\n try {\n const {ApolloServer: Server} = await import(`apollo-server-${this.platformName || \"express\"}`);\n\n return new Server(options);\n } catch (er) {\n this.logger.error(`Platform \"${this.platformName}\" not supported by @tsed/apollo`);\n }\n }\n\n private getPlugins(serverSettings: ApolloSettings): any[] {\n const playground = serverSettings.playground || (serverSettings.playground === undefined && process.env.NODE_ENV !== \"production\");\n\n return [\n playground ? ApolloServerPluginLandingPageGraphQLPlayground() : ApolloServerPluginLandingPageDisabled(),\n this.httpServer &&\n ApolloServerPluginDrainHttpServer({\n httpServer: this.httpServer\n }),\n this.httpsServer &&\n ApolloServerPluginDrainHttpServer({\n httpServer: this.httpsServer\n }),\n ...(serverSettings.plugins || [])\n ].filter(Boolean);\n }\n}\n"]}
|
package/lib/esm/ApolloModule.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
2
|
import { Logger } from "@tsed/common";
|
|
3
3
|
import { Configuration, Inject, Module } from "@tsed/di";
|
|
4
|
-
import { ApolloService } from "./services/ApolloService";
|
|
4
|
+
import { ApolloService } from "./services/ApolloService.js";
|
|
5
5
|
let ApolloModule = class ApolloModule {
|
|
6
|
+
logger;
|
|
7
|
+
service;
|
|
8
|
+
configuration;
|
|
6
9
|
get settings() {
|
|
7
10
|
return this.configuration.get("apollo");
|
|
8
11
|
}
|
|
@@ -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,0BAA0B,CAAC;AAGvD,IAAa,YAAY,GAAzB,MAAa,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,EAAC,MAAM,UAAU,CAAC;AAEvD,OAAO,EAAC,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAGvD,IAAa,YAAY,GAAzB,MAAa,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,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBACrE,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,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE;gBACpD,MAAM,EAAC,IAAI,EAAC,GAAG,OAAO,CAAC;gBAEvB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CACF,CAAA;AA3CC;IADC,MAAM,EAAE;8BACS,MAAM;4CAAC;AAGzB;IADC,MAAM,EAAE;8BACU,aAAa;6CAAC;AAGjC;IADC,aAAa,EAAE;;mDACuB;AAR5B,YAAY;IADxB,MAAM,EAAE;GACI,YAAY,CA6CxB;SA7CY,YAAY","sourcesContent":["import {AfterListen, Logger, OnRoutesInit} from \"@tsed/common\";\nimport {Configuration, Inject, Module} from \"@tsed/di\";\nimport {ApolloSettings} from \"./interfaces/ApolloSettings\";\nimport {ApolloService} from \"./services/ApolloService\";\n\n@Module()\nexport class ApolloModule implements OnRoutesInit, AfterListen {\n @Inject()\n protected logger: Logger;\n\n @Inject()\n protected service: ApolloService;\n\n @Configuration()\n protected configuration: Configuration;\n\n get settings(): {[key: string]: ApolloSettings} | undefined {\n return this.configuration.get(\"apollo\");\n }\n\n $onRoutesInit(): Promise<any> | void {\n const {settings} = this;\n\n if (settings) {\n const promises = Object.entries(settings).map(async ([key, options]) => {\n return this.service.createServer(key, options);\n });\n\n return Promise.all(promises);\n }\n }\n\n $afterListen(): Promise<any> | void {\n const host = this.configuration.getBestHost();\n\n const displayLog = (key: string, path: string) => {\n const url = typeof host.port === \"number\" ? `${host.protocol}://${host.address}:${host.port}` : \"\";\n\n this.logger.info(`[${key}] Apollo server is available on ${url}${path.replace(/^\\//, \"\")}`);\n };\n\n const {settings} = this;\n\n if (settings) {\n Object.entries(settings).map(async ([key, options]) => {\n const {path} = options;\n\n displayLog(key, path);\n });\n }\n }\n}\n"]}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @file Automatically generated by barrelsby.
|
|
3
|
+
*/
|
|
4
|
+
export * from "./ApolloModule.js";
|
|
5
|
+
export * from "./interfaces/ApolloSettings.js";
|
|
6
|
+
export * from "./services/ApolloService.js";
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC","sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC","sourcesContent":["/**\n * @file Automatically generated by barrelsby.\n */\n\nexport * from \"./ApolloModule\";\nexport * from \"./interfaces/ApolloSettings\";\nexport * from \"./services/ApolloService\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {ApolloServerBase, Config, ApolloServerPluginLandingPageGraphQLPlaygroundOptions} from \"apollo-server-core\";\n\nexport type ApolloMiddlewareOptions = Record<string, any>;\nexport type ApolloServer = ApolloServerBase & {
|
|
1
|
+
{"version":3,"file":"ApolloSettings.js","sourceRoot":"","sources":["../../../src/interfaces/ApolloSettings.ts"],"names":[],"mappings":"","sourcesContent":["import type {ApolloServerBase, Config, ApolloServerPluginLandingPageGraphQLPlaygroundOptions} from \"apollo-server-core\";\n\nexport type ApolloMiddlewareOptions = Record<string, any>;\nexport type ApolloServer = ApolloServerBase & {getMiddleware(settings: ApolloMiddlewareOptions): any};\nexport type ApolloCustomServerCB = (config: ApolloConfig) => ApolloServer;\nexport type ApolloConfig = Config;\n\nexport interface ApolloSettings extends ApolloConfig {\n // Basic options\n path: string;\n server?: ApolloCustomServerCB;\n playground?: boolean | ApolloServerPluginLandingPageGraphQLPlaygroundOptions;\n // ApplyMiddleware Options\n // See options descriptions on https://www.apollographql.com/docs/apollo-server/api/apollo-server.html\n serverRegistration?: ApolloMiddlewareOptions;\n middlewareOptions?: ApolloMiddlewareOptions;\n}\n"]}
|
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import { PlatformApplication } from "@tsed/common";
|
|
2
3
|
import { Constant, Inject, Service } from "@tsed/di";
|
|
3
4
|
import { Logger } from "@tsed/logger";
|
|
4
|
-
import { PlatformApplication } from "@tsed/common";
|
|
5
5
|
import { ApolloServerPluginDrainHttpServer, ApolloServerPluginLandingPageDisabled, ApolloServerPluginLandingPageGraphQLPlayground } from "apollo-server-core";
|
|
6
6
|
import Http from "http";
|
|
7
7
|
import Https from "https";
|
|
8
8
|
let ApolloService = class ApolloService {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
platformName;
|
|
10
|
+
logger;
|
|
11
|
+
/**
|
|
12
|
+
*
|
|
13
|
+
* @type {Map<any, any>}
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
servers = new Map();
|
|
17
|
+
app;
|
|
18
|
+
httpServer;
|
|
19
|
+
httpsServer;
|
|
17
20
|
async createServer(id, settings) {
|
|
18
21
|
if (this.has(id)) {
|
|
19
22
|
return this.get(id);
|
|
@@ -22,7 +25,7 @@ let ApolloService = class ApolloService {
|
|
|
22
25
|
const { path, middlewareOptions = {}, server: customServer, ...config } = settings;
|
|
23
26
|
this.logger.info(`Create server with Apollo for: ${id}`);
|
|
24
27
|
this.logger.debug(`options: ${JSON.stringify({ path })}`);
|
|
25
|
-
const server = this.createInstance({
|
|
28
|
+
const server = await this.createInstance({
|
|
26
29
|
...config,
|
|
27
30
|
plugins: this.getPlugins(settings)
|
|
28
31
|
}, customServer);
|
|
@@ -32,11 +35,11 @@ let ApolloService = class ApolloService {
|
|
|
32
35
|
schema: settings.schema
|
|
33
36
|
});
|
|
34
37
|
await server.start();
|
|
35
|
-
|
|
38
|
+
const middleware = server.getMiddleware({
|
|
36
39
|
path: settings.path,
|
|
37
|
-
...middlewareOptions
|
|
38
|
-
app: this.app.raw
|
|
40
|
+
...middlewareOptions
|
|
39
41
|
});
|
|
42
|
+
this.app.use(middleware);
|
|
40
43
|
return server;
|
|
41
44
|
}
|
|
42
45
|
}
|
|
@@ -52,16 +55,14 @@ let ApolloService = class ApolloService {
|
|
|
52
55
|
* @returns ApolloServer
|
|
53
56
|
*/
|
|
54
57
|
get(id = "default") {
|
|
55
|
-
|
|
56
|
-
return (_a = this.servers.get(id)) === null || _a === void 0 ? void 0 : _a.instance;
|
|
58
|
+
return this.servers.get(id)?.instance;
|
|
57
59
|
}
|
|
58
60
|
/**
|
|
59
61
|
* Get an instance of GraphQL schema from his id
|
|
60
62
|
* @returns GraphQLSchema
|
|
61
63
|
*/
|
|
62
64
|
getSchema(id = "default") {
|
|
63
|
-
|
|
64
|
-
return (_a = this.servers.get(id)) === null || _a === void 0 ? void 0 : _a.schema;
|
|
65
|
+
return this.servers.get(id)?.schema;
|
|
65
66
|
}
|
|
66
67
|
/**
|
|
67
68
|
*
|
|
@@ -71,14 +72,14 @@ let ApolloService = class ApolloService {
|
|
|
71
72
|
has(id = "default") {
|
|
72
73
|
return this.servers.has(id);
|
|
73
74
|
}
|
|
74
|
-
createInstance(options, server) {
|
|
75
|
+
async createInstance(options, server) {
|
|
75
76
|
// istanbul ignore next
|
|
76
77
|
if (server) {
|
|
77
78
|
return server(options);
|
|
78
79
|
}
|
|
79
80
|
// istanbul ignore next
|
|
80
81
|
try {
|
|
81
|
-
const Server =
|
|
82
|
+
const { ApolloServer: Server } = await import(`apollo-server-${this.platformName || "express"}`);
|
|
82
83
|
return new Server(options);
|
|
83
84
|
}
|
|
84
85
|
catch (er) {
|
|
@@ -86,11 +87,9 @@ let ApolloService = class ApolloService {
|
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
89
|
getPlugins(serverSettings) {
|
|
89
|
-
const playground = serverSettings.playground || serverSettings.playground === undefined;
|
|
90
|
+
const playground = serverSettings.playground || (serverSettings.playground === undefined && process.env.NODE_ENV !== "production");
|
|
90
91
|
return [
|
|
91
|
-
playground
|
|
92
|
-
? ApolloServerPluginLandingPageDisabled()
|
|
93
|
-
: ApolloServerPluginLandingPageGraphQLPlayground(),
|
|
92
|
+
playground ? ApolloServerPluginLandingPageGraphQLPlayground() : ApolloServerPluginLandingPageDisabled(),
|
|
94
93
|
this.httpServer &&
|
|
95
94
|
ApolloServerPluginDrainHttpServer({
|
|
96
95
|
httpServer: this.httpServer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"ApolloService.js","sourceRoot":"","sources":["../../../src/services/ApolloService.ts"],"names":[],"mappings":"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","sourcesContent":["import {PlatformApplication} from \"@tsed/common\";\nimport {Constant, Inject, Service} from \"@tsed/di\";\nimport {Logger} from \"@tsed/logger\";\nimport type {Config} from \"apollo-server-core\";\nimport {\n ApolloServerBase,\n ApolloServerPluginDrainHttpServer,\n ApolloServerPluginLandingPageDisabled,\n ApolloServerPluginLandingPageGraphQLPlayground\n} from \"apollo-server-core\";\nimport type {GraphQLSchema} from \"graphql\";\nimport Http from \"http\";\nimport Https from \"https\";\nimport type {ApolloServer, ApolloSettings} from \"../interfaces/ApolloSettings\";\nimport {ApolloCustomServerCB} from \"../interfaces/ApolloSettings\";\n\n@Service()\nexport class ApolloService {\n @Constant(\"PLATFORM_NAME\")\n platformName: string;\n\n @Inject()\n protected logger: Logger;\n\n /**\n *\n * @type {Map<any, any>}\n * @private\n */\n protected servers: Map<\n string,\n {\n instance: ApolloServerBase;\n schema: GraphQLSchema | undefined;\n }\n > = new Map();\n\n @Inject()\n private app: PlatformApplication<any>;\n\n @Inject(Http.Server)\n private httpServer: Http.Server | null;\n\n @Inject(Https.Server)\n private httpsServer: Https.Server | null;\n\n async createServer(id: string, settings: ApolloSettings): Promise<any> {\n if (this.has(id)) {\n return this.get(id)!;\n }\n\n try {\n const {path, middlewareOptions = {}, server: customServer, ...config} = settings;\n\n this.logger.info(`Create server with Apollo for: ${id}`);\n this.logger.debug(`options: ${JSON.stringify({path})}`);\n\n const server = await this.createInstance(\n {\n ...config,\n plugins: this.getPlugins(settings)\n },\n customServer\n );\n\n if (server) {\n this.servers.set(id || \"default\", {\n instance: server,\n schema: settings.schema\n });\n\n await server.start();\n\n const middleware = server.getMiddleware({\n path: settings.path,\n ...middlewareOptions\n });\n\n this.app.use(middleware);\n\n return server;\n }\n } catch (err) {\n /* istanbul ignore next */\n this.logger.error(err);\n /* istanbul ignore next */\n process.exit(-1);\n }\n }\n\n /**\n * Get an instance of ApolloServer from his id\n * @returns ApolloServer\n */\n get(id: string = \"default\"): ApolloServerBase | undefined {\n return this.servers.get(id)?.instance;\n }\n\n /**\n * Get an instance of GraphQL schema from his id\n * @returns GraphQLSchema\n */\n getSchema(id: string = \"default\"): GraphQLSchema | undefined {\n return this.servers.get(id)?.schema;\n }\n\n /**\n *\n * @param {string} id\n * @returns {boolean}\n */\n has(id: string = \"default\"): boolean {\n return this.servers.has(id);\n }\n\n protected async createInstance(options: Config, server?: ApolloCustomServerCB): Promise<ApolloServer | undefined> {\n // istanbul ignore next\n if (server) {\n return server(options);\n }\n\n // istanbul ignore next\n try {\n const {ApolloServer: Server} = await import(`apollo-server-${this.platformName || \"express\"}`);\n\n return new Server(options);\n } catch (er) {\n this.logger.error(`Platform \"${this.platformName}\" not supported by @tsed/apollo`);\n }\n }\n\n private getPlugins(serverSettings: ApolloSettings): any[] {\n const playground = serverSettings.playground || (serverSettings.playground === undefined && process.env.NODE_ENV !== \"production\");\n\n return [\n playground ? ApolloServerPluginLandingPageGraphQLPlayground() : ApolloServerPluginLandingPageDisabled(),\n this.httpServer &&\n ApolloServerPluginDrainHttpServer({\n httpServer: this.httpServer\n }),\n this.httpsServer &&\n ApolloServerPluginDrainHttpServer({\n httpServer: this.httpsServer\n }),\n ...(serverSettings.plugins || [])\n ].filter(Boolean);\n }\n}\n"]}
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ApolloServerBase, Config, ApolloServerPluginLandingPageGraphQLPlaygroundOptions } from "apollo-server-core";
|
|
2
2
|
export declare type ApolloMiddlewareOptions = Record<string, any>;
|
|
3
3
|
export declare type ApolloServer = ApolloServerBase & {
|
|
4
|
-
|
|
4
|
+
getMiddleware(settings: ApolloMiddlewareOptions): any;
|
|
5
5
|
};
|
|
6
6
|
export declare type ApolloCustomServerCB = (config: ApolloConfig) => ApolloServer;
|
|
7
7
|
export declare type ApolloConfig = Config;
|
|
@@ -36,6 +36,6 @@ export declare class ApolloService {
|
|
|
36
36
|
* @returns {boolean}
|
|
37
37
|
*/
|
|
38
38
|
has(id?: string): boolean;
|
|
39
|
-
protected createInstance(options: Config, server?: ApolloCustomServerCB): ApolloServer | undefined
|
|
39
|
+
protected createInstance(options: Config, server?: ApolloCustomServerCB): Promise<ApolloServer | undefined>;
|
|
40
40
|
private getPlugins;
|
|
41
41
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tsed/apollo",
|
|
3
|
-
"version": "7.0.0-beta.
|
|
3
|
+
"version": "7.0.0-beta.20",
|
|
4
4
|
"description": "Apollo package for Ts.ED framework",
|
|
5
5
|
"source": "./src/index.ts",
|
|
6
6
|
"main": "./lib/cjs/index.js",
|
|
7
|
+
"module": "./lib/esm/index.js",
|
|
7
8
|
"typings": "./lib/types/index.d.ts",
|
|
8
9
|
"exports": {
|
|
9
10
|
"types": "./lib/types/index.d.ts",
|
|
@@ -12,20 +13,21 @@
|
|
|
12
13
|
"default": "./lib/esm/index.js"
|
|
13
14
|
},
|
|
14
15
|
"scripts": {
|
|
15
|
-
"build": "yarn run build:esm && yarn run build:cjs",
|
|
16
|
+
"build": "yarn barrels && yarn run build:esm && yarn run build:cjs",
|
|
16
17
|
"build:cjs": "tsc --build tsconfig.compile.json",
|
|
17
18
|
"build:esm": "tsc --build tsconfig.compile.esm.json",
|
|
19
|
+
"barrels": "yarn barrelsby --delete -d ./src -e \"\\.spec\\.ts\" -e \"__mock__\" -e \".benchmark.ts\"",
|
|
18
20
|
"test": "cross-env NODE_ENV=test jest"
|
|
19
21
|
},
|
|
20
22
|
"dependencies": {
|
|
21
|
-
"tslib": "2.
|
|
23
|
+
"tslib": "2.4.0"
|
|
22
24
|
},
|
|
23
25
|
"private": false,
|
|
24
26
|
"devDependencies": {
|
|
25
|
-
"@tsed/common": "7.0.0-beta.
|
|
26
|
-
"@tsed/core": "7.0.0-beta.
|
|
27
|
-
"@tsed/di": "7.0.0-beta.
|
|
28
|
-
"@tsed/logger": "
|
|
27
|
+
"@tsed/common": "7.0.0-beta.20",
|
|
28
|
+
"@tsed/core": "7.0.0-beta.20",
|
|
29
|
+
"@tsed/di": "7.0.0-beta.20",
|
|
30
|
+
"@tsed/logger": ">=6.2.0",
|
|
29
31
|
"@types/graphql": "14.5.0",
|
|
30
32
|
"apollo-datasource": "^3.2.0",
|
|
31
33
|
"apollo-datasource-rest": "^3.3.0",
|
|
@@ -36,10 +38,10 @@
|
|
|
36
38
|
"graphql": "15.7.2"
|
|
37
39
|
},
|
|
38
40
|
"peerDependencies": {
|
|
39
|
-
"@tsed/common": "^7.0.0-beta.
|
|
40
|
-
"@tsed/core": "^7.0.0-beta.
|
|
41
|
-
"@tsed/di": "^7.0.0-beta.
|
|
42
|
-
"@tsed/logger": "
|
|
41
|
+
"@tsed/common": "^7.0.0-beta.20",
|
|
42
|
+
"@tsed/core": "^7.0.0-beta.20",
|
|
43
|
+
"@tsed/di": "^7.0.0-beta.20",
|
|
44
|
+
"@tsed/logger": ">=6.2.0",
|
|
43
45
|
"apollo-datasource": ">=3.0.0",
|
|
44
46
|
"apollo-datasource-rest": ">=3.0.0",
|
|
45
47
|
"apollo-server-core": ">=3.0.0",
|
|
@@ -49,7 +51,10 @@
|
|
|
49
51
|
"bugs": {
|
|
50
52
|
"url": "https://github.com/tsedio/tsed/issues"
|
|
51
53
|
},
|
|
52
|
-
"homepage": "https://github.com/tsedio/tsed/tree/
|
|
54
|
+
"homepage": "https://github.com/tsedio/tsed/tree/beta/packages/graphql/apollo",
|
|
53
55
|
"author": "Romain Lenzotti",
|
|
54
|
-
"license": "MIT"
|
|
56
|
+
"license": "MIT",
|
|
57
|
+
"publishConfig": {
|
|
58
|
+
"tag": "beta"
|
|
59
|
+
}
|
|
55
60
|
}
|
package/readme.md
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
[](https://badge.fury.io/js/%40tsed%2Fcommon)
|
|
13
13
|
[](https://github.com/semantic-release/semantic-release)
|
|
14
14
|
[](https://github.com/prettier/prettier)
|
|
15
|
-
[](https://github.com/sponsors/romakita)
|
|
16
|
+
[](https://opencollective.com/tsed)
|
|
16
17
|
|
|
17
18
|
</div>
|
|
18
19
|
|
|
@@ -58,7 +59,7 @@ import "@tsed/apollo";
|
|
|
58
59
|
|
|
59
60
|
@Configuration({
|
|
60
61
|
apollo: {
|
|
61
|
-
|
|
62
|
+
server1: {
|
|
62
63
|
path: "/",
|
|
63
64
|
schema: {},
|
|
64
65
|
resolvers: []
|
|
@@ -81,9 +82,9 @@ import {ApolloServer} from "apollo-server-express";
|
|
|
81
82
|
export class UsersService implements AfterRoutesInit {
|
|
82
83
|
@Injec()
|
|
83
84
|
apolloService: ApolloService;
|
|
84
|
-
|
|
85
|
+
|
|
85
86
|
private server: ApolloServer;
|
|
86
|
-
|
|
87
|
+
|
|
87
88
|
$afterRoutesInit() {
|
|
88
89
|
this.server = this.apolloService.get("server1");
|
|
89
90
|
}
|
|
@@ -98,14 +99,12 @@ Please read [contributing guidelines here](https://tsed.io/CONTRIBUTING.html)
|
|
|
98
99
|
|
|
99
100
|
<a href="https://github.com/tsedio/ts-express-decorators/graphs/contributors"><img src="https://opencollective.com/tsed/contributors.svg?width=890" /></a>
|
|
100
101
|
|
|
101
|
-
|
|
102
102
|
## Backers
|
|
103
103
|
|
|
104
104
|
Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/tsed#backer)]
|
|
105
105
|
|
|
106
106
|
<a href="https://opencollective.com/tsed#backers" target="_blank"><img src="https://opencollective.com/tsed/backers.svg?width=890"></a>
|
|
107
107
|
|
|
108
|
-
|
|
109
108
|
## Sponsors
|
|
110
109
|
|
|
111
110
|
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/tsed#sponsor)]
|
|
@@ -114,7 +113,7 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
|
|
|
114
113
|
|
|
115
114
|
The MIT License (MIT)
|
|
116
115
|
|
|
117
|
-
Copyright (c) 2016 -
|
|
116
|
+
Copyright (c) 2016 - 2022 Romain Lenzotti
|
|
118
117
|
|
|
119
118
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
120
119
|
|
|
@@ -8,16 +8,5 @@
|
|
|
8
8
|
"declaration": true,
|
|
9
9
|
"declarationDir": "./lib/types"
|
|
10
10
|
},
|
|
11
|
-
"exclude": [
|
|
12
|
-
"node_modules",
|
|
13
|
-
"test",
|
|
14
|
-
"lib",
|
|
15
|
-
"benchmark",
|
|
16
|
-
"coverage",
|
|
17
|
-
"spec",
|
|
18
|
-
"**/*.benchmark.ts",
|
|
19
|
-
"**/*.spec.ts",
|
|
20
|
-
"keys",
|
|
21
|
-
"jest.config.js"
|
|
22
|
-
]
|
|
11
|
+
"exclude": ["node_modules", "test", "lib", "benchmark", "coverage", "spec", "**/*.benchmark.ts", "**/*.spec.ts", "keys", "jest.config.js"]
|
|
23
12
|
}
|