UNPKG

3.06 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7const yargs = _interopDefault(require('yargs'));
8const helpers = require('yargs/helpers');
9const graphqlConfig = require('graphql-config');
10const codeFileLoader = require('@graphql-tools/code-file-loader');
11const node = require('@graphql-yoga/node');
12const mock = require('@graphql-tools/mock');
13
14const terminateEvents = ['SIGINT', 'SIGTERM'];
15function registerTerminateHandler(callback) {
16 for (const eventName of terminateEvents) {
17 process.on(eventName, () => callback(eventName));
18 }
19}
20const YogaExtensions = (api) => {
21 const codeFileLoader$1 = new codeFileLoader.CodeFileLoader({
22 noPluck: true,
23 });
24 api.loaders.schema.register(codeFileLoader$1);
25 api.loaders.documents.register(codeFileLoader$1);
26 return {
27 name: 'Yoga',
28 };
29};
30function graphqlYoga() {
31 return yargs(helpers.hideBin(process.argv)).command('$0', 'Serves GraphQL over HTTP using your GraphQL Config', (builder) => {
32 builder.option('project', {
33 type: 'string',
34 description: 'Project name',
35 });
36 builder.option('mock', {
37 type: 'boolean',
38 description: 'Mock the given schema',
39 });
40 }, async ({ project = 'default', mock: mock$1 }) => {
41 console.info(`Loading GraphQL Config from ${process.cwd()}`);
42 const config = await graphqlConfig.loadConfig({
43 extensions: [YogaExtensions],
44 throwOnMissing: false,
45 throwOnEmpty: false,
46 });
47 console.log(`Loading project: ${project}`);
48 const projectConfig = config === null || config === void 0 ? void 0 : config.getProject(project);
49 console.log(`Loading GraphQL Schema of ${project}`);
50 let schema = await (projectConfig === null || projectConfig === void 0 ? void 0 : projectConfig.getSchema());
51 if (!schema) {
52 console.warn(`Could not find schema for project ${project} fallback to default schema`);
53 }
54 if (mock$1) {
55 if (!schema) {
56 console.warn('No schema found for mocking. Skipping mocking.');
57 }
58 else {
59 console.log(`Adding mocks to the schema`);
60 schema = mock.addMocksToSchema({ schema });
61 }
62 }
63 console.log(`Building GraphQL Server`);
64 const graphQLServer = node.createServer({
65 schema,
66 });
67 console.log(`Starting GraphQL Server`);
68 await graphQLServer.start();
69 registerTerminateHandler(() => {
70 graphQLServer.stop();
71 });
72 }).argv;
73}
74
75Object.keys(node).forEach(function (k) {
76 if (k !== 'default') Object.defineProperty(exports, k, {
77 enumerable: true,
78 get: function () {
79 return node[k];
80 }
81 });
82});
83exports.YogaExtensions = YogaExtensions;
84exports.graphqlYoga = graphqlYoga;