From ee6723b585ca28a6fc988fb3d67ce09f91f52a05 Mon Sep 17 00:00:00 2001 From: Mathieu TUDISCO Date: Wed, 25 Jul 2018 18:24:21 +0200 Subject: [PATCH 1/3] feat: Add TypeScript support in config. --- graphql-server/index.js | 2 ++ index.js | 20 +++++++++++--------- package.json | 3 ++- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/graphql-server/index.js b/graphql-server/index.js index 769bd55..182c909 100644 --- a/graphql-server/index.js +++ b/graphql-server/index.js @@ -19,6 +19,8 @@ module.exports = (options, cb = null) => { // Express app const app = express() + if (options.typescript) require('ts-node/register/transpile-only') + // Customize those files let typeDefs = load(options.paths.typeDefs) const resolvers = load(options.paths.resolvers) diff --git a/index.js b/index.js index 063b1c4..1c42edc 100644 --- a/index.js +++ b/index.js @@ -153,12 +153,14 @@ module.exports = (api, options) => { // Plugin options const apolloOptions = nullable(nullable(options.pluginOptions).apollo) const baseFolder = defaultValue(apolloOptions.serverFolder, DEFAULT_SERVER_FOLDER) + const filesExtension = apolloOptions.typescript ? 'ts' : 'js' const opts = { port, graphqlPath, subscriptionsPath, engineKey, + typescript: apolloOptions.typescript, enableMocks: defaultValue(args.mock, apolloOptions.enableMocks), enableEngine: defaultValue(args['enable-engine'], apolloOptions.enableEngine), cors: defaultValue(apolloOptions.cors, '*'), @@ -166,15 +168,15 @@ module.exports = (api, options) => { integratedEngine: defaultValue(apolloOptions.integratedEngine, true), serverOptions: apolloOptions.apolloServer, paths: { - typeDefs: api.resolve(`${baseFolder}/type-defs.js`), - resolvers: api.resolve(`${baseFolder}/resolvers.js`), - context: api.resolve(`${baseFolder}/context.js`), - mocks: api.resolve(`${baseFolder}/mocks.js`), - pubsub: api.resolve(`${baseFolder}/pubsub.js`), - server: api.resolve(`${baseFolder}/server.js`), - apollo: api.resolve(`${baseFolder}/apollo.js`), - engine: api.resolve(`${baseFolder}/engine.js`), - directives: api.resolve(`${baseFolder}/directives.js`), + typeDefs: api.resolve(`${baseFolder}/type-defs.${filesExtension}`), + resolvers: api.resolve(`${baseFolder}/resolvers.${filesExtension}`), + context: api.resolve(`${baseFolder}/context.${filesExtension}`), + mocks: api.resolve(`${baseFolder}/mocks.${filesExtension}`), + pubsub: api.resolve(`${baseFolder}/pubsub.${filesExtension}`), + server: api.resolve(`${baseFolder}/server.${filesExtension}`), + apollo: api.resolve(`${baseFolder}/apollo.${filesExtension}`), + engine: api.resolve(`${baseFolder}/engine.${filesExtension}`), + directives: api.resolve(`${baseFolder}/directives.${filesExtension}`), }, } diff --git a/package.json b/package.json index d698088..f8f8fdf 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ "graphql": "^0.13.2", "graphql-subscriptions": "^0.5.8", "nodemon": "^1.18.3", - "subscriptions-transport-ws": "^0.9.13" + "subscriptions-transport-ws": "^0.9.13", + "ts-node": "^7.0.0" }, "devDependencies": { "@babel/cli": "^7.0.0-beta.47", From 0706a39fb1b37ecd0c76dbe442b63772a8ab3b4b Mon Sep 17 00:00:00 2001 From: Mathieu TUDISCO Date: Thu, 26 Jul 2018 11:29:15 +0200 Subject: [PATCH 2/3] Remove the extension in paths to allow any kind of file and do not require the config option if has typescript plugin. --- index.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/index.js b/index.js index 1c42edc..5bbec7f 100644 --- a/index.js +++ b/index.js @@ -153,14 +153,13 @@ module.exports = (api, options) => { // Plugin options const apolloOptions = nullable(nullable(options.pluginOptions).apollo) const baseFolder = defaultValue(apolloOptions.serverFolder, DEFAULT_SERVER_FOLDER) - const filesExtension = apolloOptions.typescript ? 'ts' : 'js' const opts = { port, graphqlPath, subscriptionsPath, engineKey, - typescript: apolloOptions.typescript, + typescript: api.hasPlugin('typescript') || defaultValue(apolloOptions.typescript, false), enableMocks: defaultValue(args.mock, apolloOptions.enableMocks), enableEngine: defaultValue(args['enable-engine'], apolloOptions.enableEngine), cors: defaultValue(apolloOptions.cors, '*'), @@ -168,15 +167,15 @@ module.exports = (api, options) => { integratedEngine: defaultValue(apolloOptions.integratedEngine, true), serverOptions: apolloOptions.apolloServer, paths: { - typeDefs: api.resolve(`${baseFolder}/type-defs.${filesExtension}`), - resolvers: api.resolve(`${baseFolder}/resolvers.${filesExtension}`), - context: api.resolve(`${baseFolder}/context.${filesExtension}`), - mocks: api.resolve(`${baseFolder}/mocks.${filesExtension}`), - pubsub: api.resolve(`${baseFolder}/pubsub.${filesExtension}`), - server: api.resolve(`${baseFolder}/server.${filesExtension}`), - apollo: api.resolve(`${baseFolder}/apollo.${filesExtension}`), - engine: api.resolve(`${baseFolder}/engine.${filesExtension}`), - directives: api.resolve(`${baseFolder}/directives.${filesExtension}`), + typeDefs: api.resolve(`${baseFolder}/type-defs`), + resolvers: api.resolve(`${baseFolder}/resolvers`), + context: api.resolve(`${baseFolder}/context`), + mocks: api.resolve(`${baseFolder}/mocks`), + pubsub: api.resolve(`${baseFolder}/pubsub`), + server: api.resolve(`${baseFolder}/server`), + apollo: api.resolve(`${baseFolder}/apollo`), + engine: api.resolve(`${baseFolder}/engine`), + directives: api.resolve(`${baseFolder}/directives`), }, } From 3ee37418b668c9e2d6d6e766c09549f771899eea Mon Sep 17 00:00:00 2001 From: Mathieu TUDISCO Date: Thu, 26 Jul 2018 14:48:38 +0200 Subject: [PATCH 3/3] Add ts to watched extensions --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 5bbec7f..f38c114 100644 --- a/index.js +++ b/index.js @@ -93,7 +93,7 @@ module.exports = (api, options) => { ignore: [ api.resolve(path.join(baseFolder, 'live')), ], - ext: 'js mjs json graphql gql', + ext: 'js mjs json graphql gql ts', }) sendIpcMessage({