@stepzen/transpiler 0.44.0 → 0.45.0-experimental.32a4304
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/actions/configure.js +7 -9
- package/lib/actions/configure.js.map +1 -1
- package/lib/actions/lint.js +12 -14
- package/lib/actions/lint.js.map +1 -1
- package/lib/actions/merge.js +43 -45
- package/lib/actions/merge.js.map +1 -1
- package/lib/actions/print.js +4 -6
- package/lib/actions/print.js.map +1 -1
- package/lib/actions/stitch.js +23 -25
- package/lib/actions/stitch.js.map +1 -1
- package/lib/actions/transpile.js +18 -20
- package/lib/actions/transpile.js.map +1 -1
- package/lib/actions/validate.js +13 -15
- package/lib/actions/validate.js.map +1 -1
- package/lib/index.d.ts +7 -7
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +7 -17
- package/lib/index.js.map +1 -1
- package/lib/mutations/config/envvars.js +2 -4
- package/lib/mutations/config/envvars.js.map +1 -1
- package/lib/mutations/config/index.js +2 -4
- package/lib/mutations/config/index.js.map +1 -1
- package/lib/utils/constants.js +5 -8
- package/lib/utils/constants.js.map +1 -1
- package/lib/utils/copy-workspace-content.js +9 -13
- package/lib/utils/copy-workspace-content.js.map +1 -1
- package/lib/utils/dedupe-query-and-mutation-types.js +8 -10
- package/lib/utils/dedupe-query-and-mutation-types.js.map +1 -1
- package/lib/utils/ensure-query-and-mutation-types.js +6 -8
- package/lib/utils/ensure-query-and-mutation-types.js.map +1 -1
- package/lib/utils/graphql-helpers.js +1 -5
- package/lib/utils/graphql-helpers.js.map +1 -1
- package/lib/utils/merge-helpers.js +47 -61
- package/lib/utils/merge-helpers.js.map +1 -1
- package/lib/utils/rmtemp.js +6 -10
- package/lib/utils/rmtemp.js.map +1 -1
- package/lib/utils/set-files-in-sdl.d.ts +1 -1
- package/lib/utils/set-files-in-sdl.d.ts.map +1 -1
- package/lib/utils/set-files-in-sdl.js +37 -42
- package/lib/utils/set-files-in-sdl.js.map +1 -1
- package/lib/utils/strip-empty-queries-and-mutations.js +7 -9
- package/lib/utils/strip-empty-queries-and-mutations.js.map +1 -1
- package/lib/validators/config-exists/index.js +9 -11
- package/lib/validators/config-exists/index.js.map +1 -1
- package/lib/validators/index.js +2 -4
- package/lib/validators/index.js.map +1 -1
- package/package.json +6 -5
- package/src/actions/configure.ts +6 -6
- package/src/actions/lint.ts +8 -8
- package/src/actions/merge.ts +12 -12
- package/src/actions/print.ts +1 -1
- package/src/actions/stitch.ts +11 -11
- package/src/actions/transpile.ts +11 -11
- package/src/actions/validate.ts +6 -6
- package/src/index.ts +7 -7
- package/src/mutations/config/envvars.ts +1 -1
- package/src/mutations/config/index.ts +1 -1
- package/src/utils/constants.ts +2 -2
- package/src/utils/copy-workspace-content.ts +5 -5
- package/src/utils/dedupe-query-and-mutation-types.ts +1 -1
- package/src/utils/ensure-query-and-mutation-types.ts +1 -1
- package/src/utils/merge-helpers.ts +14 -14
- package/src/utils/rmtemp.ts +4 -4
- package/src/utils/set-files-in-sdl.ts +7 -7
- package/src/utils/strip-empty-queries-and-mutations.ts +1 -1
- package/src/validators/config-exists/index.ts +4 -4
- package/src/validators/index.ts +1 -1
package/lib/actions/configure.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const yaml = require("yaml");
|
|
2
|
+
import debug from 'debug';
|
|
3
|
+
import fsx from 'fs-extra';
|
|
4
|
+
import glob from 'glob';
|
|
5
|
+
import inquirer from 'inquirer';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import yaml from 'yaml';
|
|
10
8
|
/**
|
|
11
9
|
* Get effective StepZen endpoint configuration for a directory:
|
|
12
10
|
* Traverse the file system starting at `source` and
|
|
@@ -16,7 +14,7 @@ const yaml = require("yaml");
|
|
|
16
14
|
* Possibly, interactive: if `silent` is `false` and there are non-empty
|
|
17
15
|
* `config` sections in `stepzen.config.json` files.
|
|
18
16
|
*/
|
|
19
|
-
|
|
17
|
+
export default async (source, silent = false, answers = {}) => {
|
|
20
18
|
const config = {
|
|
21
19
|
configurationset: [],
|
|
22
20
|
ruleset: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/actions/configure.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/actions/configure.ts"],"names":[],"mappings":"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"}
|
package/lib/actions/lint.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
exports.default = async (source, options = {
|
|
2
|
+
import fsx from 'fs-extra';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import shell from 'shelljs';
|
|
6
|
+
import stitch from '../actions/stitch.js';
|
|
7
|
+
import { getExtensions } from '../utils/merge-helpers.js';
|
|
8
|
+
import { rmtemp } from '../utils/rmtemp.js';
|
|
9
|
+
export default async (source, options = {
|
|
12
10
|
extensions: '',
|
|
13
11
|
}) => {
|
|
14
12
|
if (!fsx.existsSync(source)) {
|
|
@@ -16,11 +14,11 @@ exports.default = async (source, options = {
|
|
|
16
14
|
}
|
|
17
15
|
let extensions = options.extensions;
|
|
18
16
|
if (!extensions) {
|
|
19
|
-
extensions = await
|
|
17
|
+
extensions = await getExtensions();
|
|
20
18
|
}
|
|
21
19
|
let stitched, tmp;
|
|
22
20
|
try {
|
|
23
|
-
stitched = (
|
|
21
|
+
stitched = stitch(source);
|
|
24
22
|
const index = path.join(stitched, 'index.graphql');
|
|
25
23
|
const graphql = fsx.readFileSync(index, 'utf8');
|
|
26
24
|
tmp = path.join(os.tmpdir(), `stepzen-lint-${Date.now()}`);
|
|
@@ -33,8 +31,8 @@ exports.default = async (source, options = {
|
|
|
33
31
|
console.log(stdout);
|
|
34
32
|
}
|
|
35
33
|
finally {
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
rmtemp(stitched);
|
|
35
|
+
rmtemp(tmp);
|
|
38
36
|
}
|
|
39
37
|
};
|
|
40
38
|
//# sourceMappingURL=lint.js.map
|
package/lib/actions/lint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,KAAK,MAAM,SAAS,CAAA;AAE3B,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAA;AAEzC,eAAe,KAAK,EAClB,MAAc,EACd,UAEI;IACF,UAAU,EAAE,EAAE;CACf,EACD,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;KAC1D;IAED,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IAEnC,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,MAAM,aAAa,EAAE,CAAA;KACnC;IAED,IAAI,QAAQ,EAAE,GAAG,CAAA;IACjB,IAAI;QACF,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QAE/C,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1D,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;QAChD,GAAG,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAA;QAExE,MAAM,EAAC,MAAM,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC,6BAA6B,QAAQ,EAAE,EAAE;YACnE,MAAM,EAAE,IAAI;SACb,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;KACpB;YAAS;QACR,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChB,MAAM,CAAC,GAAG,CAAC,CAAA;KACZ;AACH,CAAC,CAAA"}
|
package/lib/actions/merge.js
CHANGED
|
@@ -1,27 +1,25 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const rmtemp_1 = require("../utils/rmtemp");
|
|
2
|
+
import fsx from 'fs-extra';
|
|
3
|
+
import glob from 'glob';
|
|
4
|
+
import { mergeTypeDefs } from '@graphql-tools/merge';
|
|
5
|
+
import { parse, visit } from 'graphql';
|
|
6
|
+
import os from 'node:os';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import yaml from 'yaml';
|
|
9
|
+
import { dedupeTempFolder, findQueryMutationInSchema, findTypeInSchema, getSchema, mergeQueryMutationIntoSchema, removeQueryMutationFromSchema, mergeTypeIntoSchema, removeTypeFromSchema, getConfiguration, findNextAvailableSubfolder, getExtensions, } from '../utils/merge-helpers.js';
|
|
10
|
+
import print from './print.js';
|
|
11
|
+
import setFilesInSDL from '../utils/set-files-in-sdl.js';
|
|
12
|
+
import stripEmptyQueriesAndMutations from '../utils/strip-empty-queries-and-mutations.js';
|
|
13
|
+
import copyWorkspaceContent from '../utils/copy-workspace-content.js';
|
|
14
|
+
import { ALL_GRAPHQL_FILES } from '../utils/constants.js';
|
|
15
|
+
import { rmtemp } from '../utils/rmtemp.js';
|
|
18
16
|
// It's safe to use this special placeholder value here: in case of a failure
|
|
19
17
|
// in the merge / import process it will not reach the workspace folder.
|
|
20
18
|
// All intermediary steps are carried out in a temp folder, and only when all
|
|
21
19
|
// merge / import steps are completed, the result it copied over to the
|
|
22
20
|
// workspace folder.
|
|
23
21
|
const BLANK_INDEX_TEMPLATE = `
|
|
24
|
-
schema @sdl(files: ["${
|
|
22
|
+
schema @sdl(files: ["${ALL_GRAPHQL_FILES}"]) {
|
|
25
23
|
query: Query
|
|
26
24
|
}
|
|
27
25
|
`.trim();
|
|
@@ -40,10 +38,10 @@ const doMerge = async (original, imported, options) => {
|
|
|
40
38
|
if (options.onConflict === undefined)
|
|
41
39
|
options.onConflict = 'append';
|
|
42
40
|
if (!options.extensions)
|
|
43
|
-
options.extensions = await
|
|
41
|
+
options.extensions = await getExtensions();
|
|
44
42
|
// To stop things like
|
|
45
43
|
// C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-config-1638293497187\C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-1638293496286
|
|
46
|
-
options.output =
|
|
44
|
+
options.output = dedupeTempFolder(options.output);
|
|
47
45
|
// Ensure original, importing and output directories exist
|
|
48
46
|
if (!fsx.existsSync(original))
|
|
49
47
|
throw new Error(`Cannot find original directory ${original}`);
|
|
@@ -51,7 +49,7 @@ const doMerge = async (original, imported, options) => {
|
|
|
51
49
|
throw new Error(`Cannot find imported source directory ${imported.source}`);
|
|
52
50
|
fsx.ensureDirSync(options.output, 0o700);
|
|
53
51
|
// Copy the original into the output.
|
|
54
|
-
(
|
|
52
|
+
copyWorkspaceContent(original, options.output);
|
|
55
53
|
// Ensure an index.graphql exists
|
|
56
54
|
const outputIndex = path.join(options.output, 'index.graphql');
|
|
57
55
|
if (!fsx.existsSync(outputIndex)) {
|
|
@@ -67,17 +65,17 @@ const doMerge = async (original, imported, options) => {
|
|
|
67
65
|
}
|
|
68
66
|
const targetSubfolder = options.onConflict === 'overwrite'
|
|
69
67
|
? imported.name
|
|
70
|
-
:
|
|
68
|
+
: findNextAvailableSubfolder(original, imported.name);
|
|
71
69
|
let importedGraphQLFiles = [];
|
|
72
70
|
if (options.mergeTypes) {
|
|
73
|
-
const merged =
|
|
74
|
-
await
|
|
75
|
-
await
|
|
71
|
+
const merged = mergeTypeDefs([
|
|
72
|
+
await getSchema(options.output, options.extensions),
|
|
73
|
+
await getSchema(imported.source, options.extensions),
|
|
76
74
|
]);
|
|
77
75
|
let queries = [];
|
|
78
76
|
let mutations = [];
|
|
79
77
|
let types = [];
|
|
80
|
-
|
|
78
|
+
visit(merged, {
|
|
81
79
|
ObjectTypeDefinition(node) {
|
|
82
80
|
if (node.name.value === 'Query')
|
|
83
81
|
queries = queries.concat(node.fields);
|
|
@@ -90,29 +88,29 @@ const doMerge = async (original, imported, options) => {
|
|
|
90
88
|
const details = {
|
|
91
89
|
original: glob.sync('**/*.graphql', { cwd: options.output }).map(file => {
|
|
92
90
|
const content = fsx.readFileSync(`${options.output}/${file}`, 'utf8');
|
|
93
|
-
return { ast:
|
|
91
|
+
return { ast: parse(content), file };
|
|
94
92
|
}),
|
|
95
93
|
imported: glob.sync('**/*.graphql', { cwd: imported.source }).map(file => {
|
|
96
94
|
const content = fsx.readFileSync(`${imported.source}/${file}`, 'utf8');
|
|
97
|
-
return { ast:
|
|
95
|
+
return { ast: parse(content), file };
|
|
98
96
|
}),
|
|
99
97
|
};
|
|
100
98
|
// Merge Queries and Mutations
|
|
101
99
|
for (const type of [...queries, ...mutations]) {
|
|
102
|
-
const isInOriginal =
|
|
103
|
-
const isInImported =
|
|
100
|
+
const isInOriginal = findQueryMutationInSchema(type.name.value, details.original);
|
|
101
|
+
const isInImported = findQueryMutationInSchema(type.name.value, details.imported);
|
|
104
102
|
if (isInOriginal && isInImported) {
|
|
105
|
-
details.original =
|
|
106
|
-
details.imported =
|
|
103
|
+
details.original = mergeQueryMutationIntoSchema(type, details.original);
|
|
104
|
+
details.imported = removeQueryMutationFromSchema(type.name.value, details.imported);
|
|
107
105
|
}
|
|
108
106
|
}
|
|
109
107
|
// Merge Types
|
|
110
108
|
for (const type of types) {
|
|
111
|
-
const isInOriginal =
|
|
112
|
-
const isInImported =
|
|
109
|
+
const isInOriginal = findTypeInSchema(type.name.value, details.original);
|
|
110
|
+
const isInImported = findTypeInSchema(type.name.value, details.imported);
|
|
113
111
|
if (isInOriginal && isInImported) {
|
|
114
|
-
details.original =
|
|
115
|
-
details.imported =
|
|
112
|
+
details.original = mergeTypeIntoSchema(type, details.original);
|
|
113
|
+
details.imported = removeTypeFromSchema(type.name.value, details.imported);
|
|
116
114
|
}
|
|
117
115
|
}
|
|
118
116
|
// Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
|
|
@@ -120,13 +118,13 @@ const doMerge = async (original, imported, options) => {
|
|
|
120
118
|
original: details.original
|
|
121
119
|
.map(item => ({
|
|
122
120
|
...item,
|
|
123
|
-
ast: (
|
|
121
|
+
ast: stripEmptyQueriesAndMutations(item.ast),
|
|
124
122
|
}))
|
|
125
123
|
.filter(item => item.ast.definitions.length > 0),
|
|
126
124
|
imported: details.imported
|
|
127
125
|
.map(item => ({
|
|
128
126
|
...item,
|
|
129
|
-
ast: (
|
|
127
|
+
ast: stripEmptyQueriesAndMutations(item.ast),
|
|
130
128
|
}))
|
|
131
129
|
.filter(item => item.ast.definitions.length > 0),
|
|
132
130
|
};
|
|
@@ -134,16 +132,16 @@ const doMerge = async (original, imported, options) => {
|
|
|
134
132
|
cleaned.original.forEach((a) => {
|
|
135
133
|
// eslint-disable-next-line
|
|
136
134
|
const file = path.join(options.output, a.file);
|
|
137
|
-
const deduped =
|
|
135
|
+
const deduped = dedupeTempFolder(file);
|
|
138
136
|
fsx.ensureFileSync(deduped);
|
|
139
|
-
fsx.writeFileSync(deduped, (
|
|
137
|
+
fsx.writeFileSync(deduped, print(a.ast));
|
|
140
138
|
});
|
|
141
139
|
cleaned.imported.forEach(a => {
|
|
142
140
|
// eslint-disable-next-line
|
|
143
141
|
const file = path.join(options.output, targetSubfolder, a.file);
|
|
144
|
-
const deduped =
|
|
142
|
+
const deduped = dedupeTempFolder(file);
|
|
145
143
|
fsx.ensureFileSync(deduped);
|
|
146
|
-
fsx.writeFileSync(deduped, (
|
|
144
|
+
fsx.writeFileSync(deduped, print(a.ast));
|
|
147
145
|
importedGraphQLFiles.push(path.relative(options.output, deduped));
|
|
148
146
|
});
|
|
149
147
|
}
|
|
@@ -157,9 +155,9 @@ const doMerge = async (original, imported, options) => {
|
|
|
157
155
|
});
|
|
158
156
|
}
|
|
159
157
|
// Make sure all files are referenced in @sdl
|
|
160
|
-
(
|
|
158
|
+
setFilesInSDL(options.output, importedGraphQLFiles);
|
|
161
159
|
// Generate configuration
|
|
162
|
-
const config = await
|
|
160
|
+
const config = await getConfiguration([options.output, imported.source], options.silent, options.answers);
|
|
163
161
|
if (config) {
|
|
164
162
|
const configFile = path.join(options.output, 'config.yaml');
|
|
165
163
|
fsx.writeFileSync(configFile, yaml.stringify(config), { mode: 0o600 });
|
|
@@ -187,9 +185,9 @@ const merge = (original, imported, options = {
|
|
|
187
185
|
// In case of an error delete the temp output folder created earlier so that
|
|
188
186
|
// it does not "leak". In case of a success, deleting the output folder is
|
|
189
187
|
// the caller responsibility.
|
|
190
|
-
|
|
188
|
+
rmtemp(output);
|
|
191
189
|
throw error;
|
|
192
190
|
}
|
|
193
191
|
};
|
|
194
|
-
|
|
192
|
+
export default merge;
|
|
195
193
|
//# sourceMappingURL=merge.js.map
|
package/lib/actions/merge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/actions/merge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/actions/merge.ts"],"names":[],"mappings":"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"}
|
package/lib/actions/print.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const printed = (0, graphql_1.print)(ast);
|
|
2
|
+
import { print } from 'graphql';
|
|
3
|
+
import prettier from 'prettier';
|
|
4
|
+
export default (ast) => {
|
|
5
|
+
const printed = print(ast);
|
|
8
6
|
const formatted = prettier.format(printed, { parser: 'graphql' });
|
|
9
7
|
return formatted;
|
|
10
8
|
};
|
package/lib/actions/print.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/actions/print.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/actions/print.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAe,KAAK,EAAC,MAAM,SAAS,CAAA;AAC3C,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,eAAe,CAAC,GAAiB,EAAU,EAAE;IAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAA;IAC/D,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA"}
|
package/lib/actions/stitch.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const rmtemp_1 = require("../utils/rmtemp");
|
|
2
|
+
import { clone, cloneDeep } from 'lodash-es';
|
|
3
|
+
import { parse, print, visit } from 'graphql';
|
|
4
|
+
import fsx from 'fs-extra';
|
|
5
|
+
import glob from 'glob';
|
|
6
|
+
import os from 'node:os';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import prettier from 'prettier';
|
|
9
|
+
import dedupeQueryAndMutationTypes from '../utils/dedupe-query-and-mutation-types.js';
|
|
10
|
+
import { ALL_GRAPHQL_FILES } from '../utils/constants.js';
|
|
11
|
+
import { getAllGraphQLFiles } from '../utils/copy-workspace-content.js';
|
|
12
|
+
import { rmtemp } from '../utils/rmtemp.js';
|
|
15
13
|
const doStitch = (source, output) => {
|
|
16
14
|
// Ensure source and output directories exist
|
|
17
15
|
if (!fsx.existsSync(source))
|
|
@@ -24,23 +22,23 @@ const doStitch = (source, output) => {
|
|
|
24
22
|
const sourceIndex = path.join(source, 'index.graphql');
|
|
25
23
|
if (fsx.existsSync(sourceIndex)) {
|
|
26
24
|
const index = fsx.readFileSync(sourceIndex, 'utf8');
|
|
27
|
-
ast =
|
|
28
|
-
ast =
|
|
25
|
+
ast = parse(index);
|
|
26
|
+
ast = visit(ast, {
|
|
29
27
|
Directive(node) {
|
|
30
28
|
if (node.name.value === 'sdl') {
|
|
31
29
|
const list = node.arguments?.find((arg) => arg.name.value === 'files');
|
|
32
30
|
// If we find a 'files' argument, we copy the list, and remove the argument
|
|
33
31
|
if (list) {
|
|
34
|
-
const copy =
|
|
32
|
+
const copy = clone(list.value);
|
|
35
33
|
for (const file of copy.values) {
|
|
36
|
-
if (file.value ===
|
|
37
|
-
files = files.concat(
|
|
34
|
+
if (file.value === ALL_GRAPHQL_FILES) {
|
|
35
|
+
files = files.concat(getAllGraphQLFiles(source));
|
|
38
36
|
}
|
|
39
37
|
else {
|
|
40
38
|
files = files.concat(file.value);
|
|
41
39
|
}
|
|
42
40
|
}
|
|
43
|
-
const mutated =
|
|
41
|
+
const mutated = cloneDeep(node);
|
|
44
42
|
mutated.arguments = mutated.arguments.filter((arg) => arg.name.value !== 'files');
|
|
45
43
|
return mutated;
|
|
46
44
|
}
|
|
@@ -55,10 +53,10 @@ const doStitch = (source, output) => {
|
|
|
55
53
|
const graphql = fsx.readFileSync(`${source}/${file}`, 'utf8');
|
|
56
54
|
return graphql;
|
|
57
55
|
});
|
|
58
|
-
ast =
|
|
56
|
+
ast = parse(content.join(os.EOL));
|
|
59
57
|
}
|
|
60
58
|
// Strip @sdl directive
|
|
61
|
-
ast =
|
|
59
|
+
ast = visit(ast, {
|
|
62
60
|
Directive(node) {
|
|
63
61
|
if (node.name.value === 'sdl')
|
|
64
62
|
return null;
|
|
@@ -72,7 +70,7 @@ const doStitch = (source, output) => {
|
|
|
72
70
|
}
|
|
73
71
|
}
|
|
74
72
|
// Get all the files and stitch
|
|
75
|
-
const printed =
|
|
73
|
+
const printed = print(ast);
|
|
76
74
|
let stitched = `${printed}${os.EOL}`;
|
|
77
75
|
for (const file of files) {
|
|
78
76
|
const find = path.join(source, file);
|
|
@@ -80,7 +78,7 @@ const doStitch = (source, output) => {
|
|
|
80
78
|
stitched += `${content}${os.EOL}`;
|
|
81
79
|
}
|
|
82
80
|
// Dedupe Query and Mutation types
|
|
83
|
-
stitched = (
|
|
81
|
+
stitched = dedupeQueryAndMutationTypes(stitched);
|
|
84
82
|
// Format
|
|
85
83
|
stitched = prettier.format(stitched, { parser: 'graphql' });
|
|
86
84
|
// Write to output folder
|
|
@@ -107,9 +105,9 @@ const stitch = (source, output) => {
|
|
|
107
105
|
// In case of an error delete the temp output folder created earlier so that
|
|
108
106
|
// it does not "leak". In case of a success, deleting the output folder is
|
|
109
107
|
// the caller responsibility.
|
|
110
|
-
|
|
108
|
+
rmtemp(output);
|
|
111
109
|
throw error;
|
|
112
110
|
}
|
|
113
111
|
};
|
|
114
|
-
|
|
112
|
+
export default stitch;
|
|
115
113
|
//# sourceMappingURL=stitch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/actions/stitch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/actions/stitch.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAC,KAAK,EAAE,SAAS,EAAC,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAC,MAAM,SAAS,CAAA;AAC3C,OAAO,GAAG,MAAM,UAAU,CAAA;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,2BAA2B,MAAM,6CAA6C,CAAA;AACrF,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAC,kBAAkB,EAAC,MAAM,oCAAoC,CAAA;AACrE,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAA;AAEzC,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,MAAc,EAAE,EAAE;IAClD,6CAA6C;IAC7C,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;IAC3D,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAEhC,uBAAuB;IACvB,IAAI,GAAQ,CAAA;IACZ,IAAI,KAAK,GAAa,EAAE,CAAA;IAExB,qEAAqE;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAEtD,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACnD,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAA;QAClB,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;YACf,SAAS,CAAC,IAAI;gBACZ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;oBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAC/B,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CACzC,CAAA;oBACD,2EAA2E;oBAC3E,IAAI,IAAI,EAAE;wBACR,MAAM,IAAI,GAAQ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;wBACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;4BAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,iBAAiB,EAAE;gCACpC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAA;6BACjD;iCAAM;gCACL,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;6BACjC;yBACF;wBACD,MAAM,OAAO,GAAQ,SAAS,CAAC,IAAI,CAAC,CAAA;wBACpC,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAC1C,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO,CACzC,CAAA;wBACD,OAAO,OAAO,CAAA;qBACf;iBACF;YACH,CAAC;SACF,CAAC,CAAA;KACH;SAAM;QACL,MAAM,OAAO,GAAG,IAAI;aACjB,IAAI,CAAC,cAAc,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC,CAAC;aACnC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;YACpB,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;YAC7D,OAAO,OAAO,CAAA;QAChB,CAAC,CAAC,CAAA;QACJ,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;KAClC;IAED,uBAAuB;IACvB,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;QACf,SAAS,CAAC,IAAI;YACZ,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAA;QAC5C,CAAC;KACF,CAAC,CAAA;IAEF,4BAA4B;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACpC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;YACzB,MAAM,IAAI,KAAK,CACb,oBAAoB,IAAI,oDAAoD,CAC7E,CAAA;SACF;KACF;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,QAAQ,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;QACpC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAC9C,QAAQ,IAAI,GAAG,OAAO,GAAG,EAAE,CAAC,GAAG,EAAE,CAAA;KAClC;IAED,kCAAkC;IAClC,QAAQ,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAA;IAEhD,SAAS;IACT,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAA;IAEzD,yBAAyB;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACtD,GAAG,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAExC,6BAA6B;IAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IAErD,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;QAChC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;KAC7C;IAED,uBAAuB;IACvB,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,MAAe,EAAE,EAAE;IACjD,IAAI,MAAM,EAAE;QACV,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC;IAED,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAC5D,IAAI;QACF,OAAO,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAChC;IAAC,OAAO,KAAK,EAAE;QACd,4EAA4E;QAC5E,0EAA0E;QAC1E,6BAA6B;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,MAAM,KAAK,CAAA;KACZ;AACH,CAAC,CAAA;AAED,eAAe,MAAM,CAAA"}
|
package/lib/actions/transpile.js
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const rmtemp_1 = require("../utils/rmtemp");
|
|
2
|
+
import { parse } from 'graphql';
|
|
3
|
+
import dotenv from 'dotenv';
|
|
4
|
+
import debug from 'debug';
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import glob from 'glob';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import yaml from 'yaml';
|
|
9
|
+
import print from '../actions/print.js';
|
|
10
|
+
import stitch from '../actions/stitch.js';
|
|
11
|
+
import configure from './configure.js';
|
|
12
|
+
import configMutations from '../mutations/config/index.js';
|
|
13
|
+
import { rmtemp } from '../utils/rmtemp.js';
|
|
16
14
|
/**
|
|
17
15
|
* Read a StepZen workspace directory, apply StepZen-specific schema and config
|
|
18
16
|
* transformations, and return its effective GraphQL schema and configuration
|
|
@@ -23,7 +21,7 @@ const rmtemp_1 = require("../utils/rmtemp");
|
|
|
23
21
|
* whether or not any StepZen-specific transformations have actually
|
|
24
22
|
* been applied.
|
|
25
23
|
*/
|
|
26
|
-
|
|
24
|
+
export default async (source) => {
|
|
27
25
|
// Ensure source and output directories exist
|
|
28
26
|
if (!fs.existsSync(source)) {
|
|
29
27
|
throw new Error(`Cannot find source directory ${source}`);
|
|
@@ -37,10 +35,10 @@ exports.default = async (source) => {
|
|
|
37
35
|
// State of whether we've transpiled or not
|
|
38
36
|
let transpiledConfig = false;
|
|
39
37
|
// See whether to transpile config
|
|
40
|
-
let config = await (
|
|
38
|
+
let config = await configure(source, true);
|
|
41
39
|
const configCopy = config;
|
|
42
40
|
if (config) {
|
|
43
|
-
for await (const mutation of
|
|
41
|
+
for await (const mutation of configMutations) {
|
|
44
42
|
config = await mutation(config);
|
|
45
43
|
}
|
|
46
44
|
}
|
|
@@ -51,14 +49,14 @@ exports.default = async (source) => {
|
|
|
51
49
|
const graphqlFiles = glob.sync('**/*.graphql', { cwd: source });
|
|
52
50
|
let schema = '';
|
|
53
51
|
if (graphqlFiles.length > 0) {
|
|
54
|
-
const stitched = await (
|
|
52
|
+
const stitched = await stitch(source);
|
|
55
53
|
try {
|
|
56
54
|
const index = path.join(stitched, 'index.graphql');
|
|
57
55
|
const graphql = fs.readFileSync(index, 'utf8');
|
|
58
|
-
schema = (
|
|
56
|
+
schema = print(parse(graphql));
|
|
59
57
|
}
|
|
60
58
|
finally {
|
|
61
|
-
|
|
59
|
+
rmtemp(stitched);
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
62
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/actions/transpile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transpile.js","sourceRoot":"","sources":["../../src/actions/transpile.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAA;AAC7B,OAAO,MAAM,MAAM,QAAQ,CAAA;AAC3B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,OAAO,KAAK,MAAM,qBAAqB,CAAA;AACvC,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,SAAS,MAAM,gBAAgB,CAAA;AAEtC,OAAO,eAAe,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAA;AAEzC;;;;;;;;;GASG;AACH,eAAe,KAAK,EAAE,MAAc,EAAE,EAAE;IACtC,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAC1B,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAA;KAC1D;IAED,qDAAqD;IACrD,KAAK,CAAC,gBAAgB,CAAC,CACrB,qBAAqB,OAAO,CAAC,GAAG,EAAE,6CAA6C,CAChF,CAAA;IACD,MAAM,CAAC,MAAM,EAAE,CAAA;IACf,KAAK,CAAC,gBAAgB,CAAC,CACrB,qBAAqB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzC,6CAA6C,CAChD,CAAA;IACD,MAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAAC,CAAC,CAAA;IAEnD,2CAA2C;IAC3C,IAAI,gBAAgB,GAAG,KAAK,CAAA;IAE5B,kCAAkC;IAClC,IAAI,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAA;IAEzB,IAAI,MAAM,EAAE;QACV,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,eAAe,EAAE;YAC5C,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;SAChC;KACF;IAED,IAAI,UAAU,KAAK,MAAM,EAAE;QACzB,gBAAgB,GAAG,IAAI,CAAA;KACxB;IAED,mCAAmC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,GAAG,EAAE,MAAM,EAAC,CAAC,CAAA;IAC7D,IAAI,MAAM,GAAG,EAAE,CAAA;IAEf,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;YAClD,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAC9C,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;SAC/B;gBAAS;YACR,MAAM,CAAC,QAAQ,CAAC,CAAA;SACjB;KACF;IAED,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9B,MAAM;QACN,UAAU,EAAE,gBAAgB;KAC7B,CAAA;AACH,CAAC,CAAA"}
|
package/lib/actions/validate.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
// Copyright IBM Corp. 2020, 2024
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
exports.default = (source, options = {
|
|
2
|
+
import { buildASTSchema, parse, print } from 'graphql';
|
|
3
|
+
import fsx from 'fs-extra';
|
|
4
|
+
import os from 'node:os';
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import ensureQueryAndMutationTypes from '../utils/ensure-query-and-mutation-types.js';
|
|
7
|
+
import { EXPERIMENTAL_EXTENSIONS } from '../utils/constants.js';
|
|
8
|
+
import validators from '../validators/index.js';
|
|
9
|
+
export default (source, options = {
|
|
12
10
|
extensions: '',
|
|
13
11
|
}) => {
|
|
14
12
|
// Ensure source and output directories exist
|
|
@@ -23,16 +21,16 @@ exports.default = (source, options = {
|
|
|
23
21
|
const file = path.join(source, 'index.graphql');
|
|
24
22
|
const index = fsx.readFileSync(file, 'utf8');
|
|
25
23
|
// Parse
|
|
26
|
-
let ast =
|
|
24
|
+
let ast = parse(`${EXPERIMENTAL_EXTENSIONS}${os.EOL}${options.extensions}${os.EOL}${index}`, {
|
|
27
25
|
noLocation: true,
|
|
28
26
|
});
|
|
29
27
|
// We make an exception for 'no type Query' or 'no type Mutation'
|
|
30
|
-
ast = (
|
|
28
|
+
ast = ensureQueryAndMutationTypes(ast);
|
|
31
29
|
// Build and print, to validate
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
buildASTSchema(ast);
|
|
31
|
+
print(ast);
|
|
34
32
|
// Custom validators
|
|
35
|
-
for (const validator of
|
|
33
|
+
for (const validator of validators) {
|
|
36
34
|
validator(ast, source);
|
|
37
35
|
}
|
|
38
36
|
// Return true
|