1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', { value: true });
|
4 |
|
5 | function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
6 |
|
7 | const yargs = _interopDefault(require('yargs'));
|
8 | const helpers = require('yargs/helpers');
|
9 | const graphqlConfig = require('graphql-config');
|
10 | const codeFileLoader = require('@graphql-tools/code-file-loader');
|
11 | const node = require('@graphql-yoga/node');
|
12 | const mock = require('@graphql-tools/mock');
|
13 |
|
14 | const terminateEvents = ['SIGINT', 'SIGTERM'];
|
15 | function registerTerminateHandler(callback) {
|
16 | for (const eventName of terminateEvents) {
|
17 | process.on(eventName, () => callback(eventName));
|
18 | }
|
19 | }
|
20 | const 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 | };
|
30 | function 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 |
|
75 | Object.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 | });
|
83 | exports.YogaExtensions = YogaExtensions;
|
84 | exports.graphqlYoga = graphqlYoga;
|