@stepzen/transpiler 0.0.35 → 0.0.36

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.
@@ -5,5 +5,7 @@ declare const _default: (original: string, imported: {
5
5
  answers: any;
6
6
  output: string | null;
7
7
  silent: boolean;
8
+ /** when `false` merge only covers config files and updates @sdl directrive */
9
+ mergeTypes?: boolean;
8
10
  }) => Promise<string>;
9
11
  export default _default;
@@ -23,6 +23,7 @@ exports.default = async (original, imported, options = {
23
23
  answers: {},
24
24
  output: null,
25
25
  silent: false,
26
+ mergeTypes: true,
26
27
  }) => {
27
28
  // Make sure there is an output directory
28
29
  if (!options.answers)
@@ -31,6 +32,8 @@ exports.default = async (original, imported, options = {
31
32
  options.output = path.join(os.tmpdir(), `stepzen-tmp-${Date.now()}`);
32
33
  if (!options.silent)
33
34
  options.silent = false;
35
+ if (options.mergeTypes === undefined)
36
+ options.mergeTypes = true;
34
37
  // To stop things like
35
38
  // C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-config-1638293497187\C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-1638293496286
36
39
  options.output = merge_helpers_1.dedupeTempFolder(options.output);
@@ -47,75 +50,83 @@ exports.default = async (original, imported, options = {
47
50
  if (!fs.existsSync(outputIndex)) {
48
51
  fs.writeFileSync(outputIndex, BLANK_INDEX_TEMPLATE);
49
52
  }
50
- const merged = merge_1.mergeTypeDefs([
51
- await merge_helpers_1.getSchema(options.output),
52
- await merge_helpers_1.getSchema(imported.source),
53
- ]);
54
- let queries = [];
55
- let mutations = [];
56
- let types = [];
57
- graphql_1.visit(merged, {
58
- ObjectTypeDefinition(node) {
59
- if (node.name.value === 'Query')
60
- queries = queries.concat(node.fields);
61
- else if (node.name.value === 'Mutation')
62
- mutations = mutations.concat(node.fields);
63
- else
64
- types = types.concat(node);
65
- },
66
- });
67
- const details = {
68
- original: glob.sync('**/*.graphql', { cwd: options.output }).map(file => {
69
- const content = fs.readFileSync(`${options.output}/${file}`, 'utf8');
70
- return { ast: graphql_1.parse(content), file };
71
- }),
72
- imported: glob.sync('**/*.graphql', { cwd: imported.source }).map(file => {
73
- const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8');
74
- return { ast: graphql_1.parse(content), file };
75
- }),
76
- };
77
- // Merge Queries and Mutations
78
- for (const type of [...queries, ...mutations]) {
79
- const isInOriginal = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.original);
80
- const isInImported = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.imported);
81
- if (isInOriginal && isInImported) {
82
- details.original = merge_helpers_1.mergeQueryMutationIntoSchema(type, details.original);
83
- details.imported = merge_helpers_1.removeQueryMutationFromSchema(type.name.value, details.imported);
53
+ const targetSubfolder = merge_helpers_1.findNextAvailableSubfolder(original, imported.name);
54
+ if (options.mergeTypes) {
55
+ const merged = merge_1.mergeTypeDefs([
56
+ await merge_helpers_1.getSchema(options.output),
57
+ await merge_helpers_1.getSchema(imported.source),
58
+ ]);
59
+ let queries = [];
60
+ let mutations = [];
61
+ let types = [];
62
+ graphql_1.visit(merged, {
63
+ ObjectTypeDefinition(node) {
64
+ if (node.name.value === 'Query')
65
+ queries = queries.concat(node.fields);
66
+ else if (node.name.value === 'Mutation')
67
+ mutations = mutations.concat(node.fields);
68
+ else
69
+ types = types.concat(node);
70
+ },
71
+ });
72
+ const details = {
73
+ original: glob.sync('**/*.graphql', { cwd: options.output }).map(file => {
74
+ const content = fs.readFileSync(`${options.output}/${file}`, 'utf8');
75
+ return { ast: graphql_1.parse(content), file };
76
+ }),
77
+ imported: glob.sync('**/*.graphql', { cwd: imported.source }).map(file => {
78
+ const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8');
79
+ return { ast: graphql_1.parse(content), file };
80
+ }),
81
+ };
82
+ // Merge Queries and Mutations
83
+ for (const type of [...queries, ...mutations]) {
84
+ const isInOriginal = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.original);
85
+ const isInImported = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.imported);
86
+ if (isInOriginal && isInImported) {
87
+ details.original = merge_helpers_1.mergeQueryMutationIntoSchema(type, details.original);
88
+ details.imported = merge_helpers_1.removeQueryMutationFromSchema(type.name.value, details.imported);
89
+ }
84
90
  }
85
- }
86
- // Merge Types
87
- for (const type of types) {
88
- const isInOriginal = merge_helpers_1.findTypeInSchema(type.name.value, details.original);
89
- const isInImported = merge_helpers_1.findTypeInSchema(type.name.value, details.imported);
90
- if (isInOriginal && isInImported) {
91
- details.original = merge_helpers_1.mergeTypeIntoSchema(type, details.original);
92
- details.imported = merge_helpers_1.removeTypeFromSchema(type.name.value, details.imported);
91
+ // Merge Types
92
+ for (const type of types) {
93
+ const isInOriginal = merge_helpers_1.findTypeInSchema(type.name.value, details.original);
94
+ const isInImported = merge_helpers_1.findTypeInSchema(type.name.value, details.imported);
95
+ if (isInOriginal && isInImported) {
96
+ details.original = merge_helpers_1.mergeTypeIntoSchema(type, details.original);
97
+ details.imported = merge_helpers_1.removeTypeFromSchema(type.name.value, details.imported);
98
+ }
93
99
  }
100
+ // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
101
+ const cleaned = {
102
+ original: details.original
103
+ .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
104
+ .filter(item => item.ast.definitions.length > 0),
105
+ imported: details.imported
106
+ .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
107
+ .filter(item => item.ast.definitions.length > 0),
108
+ };
109
+ // Write the files to the output directory
110
+ cleaned.original.forEach((a) => {
111
+ // eslint-disable-next-line
112
+ const file = path.join(options.output, a.file);
113
+ const deduped = merge_helpers_1.dedupeTempFolder(file);
114
+ fs.ensureFileSync(deduped);
115
+ fs.writeFileSync(deduped, print_1.default(a.ast));
116
+ });
117
+ cleaned.imported.forEach(a => {
118
+ // eslint-disable-next-line
119
+ const file = path.join(options.output, targetSubfolder, a.file);
120
+ const deduped = merge_helpers_1.dedupeTempFolder(file);
121
+ fs.ensureFileSync(deduped);
122
+ fs.writeFileSync(deduped, print_1.default(a.ast));
123
+ });
124
+ }
125
+ else {
126
+ // Write the files to the output directory
127
+ fs.copySync(original, options.output);
128
+ fs.copySync(imported.source, path.join(options.output, targetSubfolder));
94
129
  }
95
- // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
96
- const cleaned = {
97
- original: details.original
98
- .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
99
- .filter(item => item.ast.definitions.length > 0),
100
- imported: details.imported
101
- .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
102
- .filter(item => item.ast.definitions.length > 0),
103
- };
104
- // Write the files to the output directory
105
- cleaned.original.forEach((a) => {
106
- // eslint-disable-next-line
107
- const file = path.join(options.output, a.file);
108
- const deduped = merge_helpers_1.dedupeTempFolder(file);
109
- fs.ensureFileSync(deduped);
110
- fs.writeFileSync(deduped, print_1.default(a.ast));
111
- });
112
- cleaned.imported.forEach(a => {
113
- // eslint-disable-next-line
114
- const file = path.join(options.output, imported.name, a.file);
115
- const deduped = merge_helpers_1.dedupeTempFolder(file);
116
- fs.ensureFileSync(deduped);
117
- fs.writeFileSync(deduped, print_1.default(a.ast));
118
- });
119
130
  // Make sure all files are referenced in @sdl
120
131
  set_files_in_sdl_1.default(options.output);
121
132
  // Generate configuration
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/actions/merge.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,6BAA4B;AAC5B,gDAAkD;AAClD,qCAAoC;AACpC,yBAAwB;AACxB,6BAA4B;AAE5B,0DAU+B;AAC/B,mCAA2B;AAC3B,gEAAqD;AACrD,kGAAsF;AAEtF,MAAM,oBAAoB,GAAG;;;;;;;;CAQ5B,CAAC,IAAI,EAAE,CAAA;AAER,kBAAe,KAAK,EAClB,QAAgB,EAChB,QAGC,EACD,UAII;IACF,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,KAAK;CACd,EACD,EAAE;IACF,yCAAyC;IACzC,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,OAAO,GAAG,EAAE,CAAA;IAC1C,IAAI,CAAC,OAAO,CAAC,MAAM;QACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACtE,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAA;IAE3C,sBAAsB;IACtB,mIAAmI;IACnI,OAAO,CAAC,MAAM,GAAG,gCAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEjD,0DAA0D;IAC1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAA;IAC/D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7E,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEhC,qCAAqC;IACrC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAErC,iCAAiC;IACjC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC/B,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAA;KACpD;IAED,MAAM,MAAM,GAAG,qBAAa,CAAC;QAC3B,MAAM,yBAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/B,MAAM,yBAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;KACjC,CAAC,CAAA;IAEF,IAAI,OAAO,GAAU,EAAE,CAAA;IACvB,IAAI,SAAS,GAAU,EAAE,CAAA;IACzB,IAAI,KAAK,GAAU,EAAE,CAAA;IAErB,eAAK,CAAC,MAAM,EAAE;QACZ,oBAAoB,CAAC,IAAI;YACvB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,OAAO;gBAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;iBACjE,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU;gBACrC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;;gBACtC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;KACF,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,MAAM,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACpE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;YACpE,OAAO,EAAC,GAAG,EAAE,eAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,CAAA;QACpC,CAAC,CAAC;QACF,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YACrE,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,EAAE,MAAM,CAAC,CAAA;YACrE,OAAO,EAAC,GAAG,EAAE,eAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAC,CAAA;QACpC,CAAC,CAAC;KACH,CAAA;IAED,8BAA8B;IAC9B,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,EAAE;QAC7C,MAAM,YAAY,GAAG,yCAAyB,CAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,OAAO,CAAC,QAAQ,CACjB,CAAA;QACD,MAAM,YAAY,GAAG,yCAAyB,CAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,OAAO,CAAC,QAAQ,CACjB,CAAA;QAED,IAAI,YAAY,IAAI,YAAY,EAAE;YAChC,OAAO,CAAC,QAAQ,GAAG,4CAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YACvE,OAAO,CAAC,QAAQ,GAAG,6CAA6B,CAC9C,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,OAAO,CAAC,QAAQ,CACjB,CAAA;SACF;KACF;IAED,cAAc;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,YAAY,GAAG,gCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QACxE,MAAM,YAAY,GAAG,gCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAExE,IAAI,YAAY,IAAI,YAAY,EAAE;YAChC,OAAO,CAAC,QAAQ,GAAG,mCAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC9D,OAAO,CAAC,QAAQ,GAAG,oCAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;SAC3E;KACF;IAED,sFAAsF;IACtF,MAAM,OAAO,GAAG;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;aACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACR,IAAI,KACP,GAAG,EAAE,2CAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,IAC5C,CAAC;aACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,QAAQ,EAAE,OAAO,CAAC,QAAQ;aACvB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCACR,IAAI,KACP,GAAG,EAAE,2CAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,IAC5C,CAAC;aACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;KACnD,CAAA;IAED,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE;QAClC,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAa,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,gCAAgB,CAAC,IAAI,CAAC,CAAA;QAEtC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC1B,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,eAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3B,2BAA2B;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAa,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QACpE,MAAM,OAAO,GAAG,gCAAgB,CAAC,IAAI,CAAC,CAAA;QAEtC,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC1B,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,eAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,6CAA6C;IAC7C,0BAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAE7B,yBAAyB;IACzB,MAAM,MAAM,GAAG,MAAM,gCAAgB,CACnC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EACjC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,CAChB,CAAA;IACD,IAAI,MAAM,EAAE;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;QAC3D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAgB,CAAC,CAAA;KAC/C;IAED,0BAA0B;IAC1B,OAAO,OAAO,CAAC,MAAM,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/actions/merge.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { GraphQLSchema } from 'graphql';
2
2
  export declare const dedupeTempFolder: (dirpath: string) => string;
3
+ export declare const findNextAvailableSubfolder: (folder: string, name: string) => string;
3
4
  export declare const findQueryMutationInSchema: (name: string, files: any) => Boolean;
4
5
  export declare const findTypeInSchema: (name: string, files: any) => Boolean;
5
6
  export declare const getConfiguration: (directories: string[], silent?: boolean, answers?: any) => Promise<string | boolean>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.removeTypeFromSchema = exports.removeQueryMutationFromSchema = exports.mergeTypeIntoSchema = exports.mergeQueryMutationIntoSchema = exports.getSchema = exports.getExtensions = exports.getConfiguration = exports.findTypeInSchema = exports.findQueryMutationInSchema = exports.dedupeTempFolder = void 0;
3
+ exports.removeTypeFromSchema = exports.removeQueryMutationFromSchema = exports.mergeTypeIntoSchema = exports.mergeQueryMutationIntoSchema = exports.getSchema = exports.getExtensions = exports.getConfiguration = exports.findTypeInSchema = exports.findQueryMutationInSchema = exports.findNextAvailableSubfolder = exports.dedupeTempFolder = void 0;
4
4
  const graphql_1 = require("graphql");
5
5
  const utilities_1 = require("graphql/utilities");
6
6
  const node_fetch_1 = require("node-fetch");
@@ -21,6 +21,16 @@ const dedupeTempFolder = (dirpath) => {
21
21
  return dirpath;
22
22
  };
23
23
  exports.dedupeTempFolder = dedupeTempFolder;
24
+ const findNextAvailableSubfolder = (folder, name) => {
25
+ let subfolder = name;
26
+ let counter = 1;
27
+ while (fs.existsSync(path.join(folder, subfolder))) {
28
+ const suffix = `${counter++}`.padStart(2, '0');
29
+ subfolder = `${name}-${suffix}`;
30
+ }
31
+ return subfolder;
32
+ };
33
+ exports.findNextAvailableSubfolder = findNextAvailableSubfolder;
24
34
  const findQueryMutationInSchema = (name, files) => {
25
35
  for (const file of files) {
26
36
  let found = false;
@@ -1 +1 @@
1
- {"version":3,"file":"merge-helpers.js","sourceRoot":"","sources":["../../src/utils/merge-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge-helpers.js","sourceRoot":"","sources":["../../src/utils/merge-helpers.ts"],"names":[],"mappings":";;;AAAA,qCAAmD;AACnD,iDAA6C;AAC7C,2CAA8B;AAC9B,+BAA8B;AAC9B,6BAA4B;AAC5B,yBAAwB;AACxB,6BAA4B;AAC5B,mCAA8B;AAE9B,8DAAkD;AAClD,2CAA0C;AAE1C,oDAA4C;AAC5C,oDAA4C;AAErC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,EAAE;IAClD,GAAG;QACD,OAAO,GAAG,gBAAO,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;KAC5C,QAAQ,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAC;IAEvC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAA;IAEzC,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B;AAEM,MAAM,0BAA0B,GAAG,CAAC,MAAc,EAAE,IAAY,EAAE,EAAE;IACzE,IAAI,SAAS,GAAG,IAAI,CAAA;IACpB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAE;QAClD,MAAM,MAAM,GAAG,GAAG,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC9C,SAAS,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAA;KAChC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AATY,QAAA,0BAA0B,8BAStC;AAEM,MAAM,yBAAyB,GAAG,CACvC,IAAY,EACZ,KAAU,EACD,EAAE;IACX,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACd,eAAe,CAAC,IAAI;gBAClB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;oBAC5B,KAAK,GAAG,IAAI,CAAA;oBACZ,OAAO,eAAK,CAAA;iBACb;YACH,CAAC;SACF,CAAC,CAAA;QACF,IAAI,KAAK;YAAE,OAAO,IAAI,CAAA;KACvB;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAjBY,QAAA,yBAAyB,6BAiBrC;AAEM,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,KAAU,EAAW,EAAE;IACpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACd,oBAAoB,CAAC,IAAI;gBACvB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;oBAC5B,KAAK,GAAG,IAAI,CAAA;oBACZ,OAAO,eAAK,CAAA;iBACb;YACH,CAAC;SACF,CAAC,CAAA;QACF,IAAI,KAAK;YAAE,OAAO,IAAI,CAAA;KACvB;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAdY,QAAA,gBAAgB,oBAc5B;AAEM,MAAM,gBAAgB,GAAG,KAAK,EACnC,WAAqB,EACrB,SAAkB,KAAK,EACvB,UAAe,EAAE,EACU,EAAE;IAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IACtE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IAErB,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE;QACnC,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC,CAAC;YAChD,GAAG,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAC,GAAG,EAAE,SAAS,EAAC,CAAC;SACzD,CAAA;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YAEjD,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YACnD,WAAW,GAAG,wBAAgB,CAAC,WAAW,CAAC,CAAA;YAE3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;YAErD,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YAC9B,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;SACvC;KACF;IAED,MAAM,aAAa,GAAG,MAAM,mBAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3D,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IAClB,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AA9BY,QAAA,gBAAgB,oBA8B5B;AAEM,MAAM,aAAa,GAAG,KAAK,IAAqB,EAAE;IACvD,MAAM,MAAM,GAAG,0BAAc,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,oBAAK,CAAC,eAAe,MAAM,qBAAqB,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;IAClC,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AALY,QAAA,aAAa,iBAKzB;AAEM,MAAM,SAAS,GAAG,KAAK,EAAE,SAAiB,EAA0B,EAAE;IAC3E,MAAM,UAAU,GAAG,MAAM,qBAAa,EAAE,CAAA;IACxC,MAAM,UAAU,GAAG,MAAM,mBAAS,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,uBAAW,CAAC,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;AAClE,CAAC,CAAA;AAJY,QAAA,SAAS,aAIrB;AAEM,MAAM,4BAA4B,GAAG,CAAC,IAAS,EAAE,KAAU,EAAE,EAAE;IACpE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QAC9B,uCACK,IAAI,KACP,GAAG,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,eAAe,CAAC,IAAI;oBAClB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACvC,MAAM,UAAU,GAAG,2BAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;wBAC7C,MAAM,OAAO,GAAQ,2BAAS,CAAC,IAAI,CAAC,CAAA;wBACpC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA;wBAC/B,OAAO,OAAO,CAAA;qBACf;gBACH,CAAC;aACF,CAAC,IACH;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAjBY,QAAA,4BAA4B,gCAiBxC;AAEM,MAAM,mBAAmB,GAAG,CAAC,IAAS,EAAE,KAAU,EAAE,EAAE;IAC3D,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QAC9B,uCACK,IAAI,KACP,GAAG,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,oBAAoB,CAAC,IAAI;oBACvB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;wBACvC,MAAM,UAAU,GAAG,2BAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;wBAC7C,MAAM,MAAM,GAAG,2BAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;wBACrC,MAAM,OAAO,GAAQ,2BAAS,CAAC,IAAI,CAAC,CAAA;wBACpC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAA;wBAC/B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAA;wBACvB,OAAO,OAAO,CAAA;qBACf;gBACH,CAAC;aACF,CAAC,IACH;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAnBY,QAAA,mBAAmB,uBAmB/B;AAEM,MAAM,6BAA6B,GAAG,CAAC,IAAY,EAAE,KAAU,EAAE,EAAE;IACxE,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QAC9B,uCACK,IAAI,KACP,GAAG,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,eAAe,CAAC,IAAI;oBAClB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;wBAC5B,OAAO,IAAI,CAAA;qBACZ;gBACH,CAAC;aACF,CAAC,IACH;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAdY,QAAA,6BAA6B,iCAczC;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,KAAU,EAAE,EAAE;IAC/D,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QAC9B,uCACK,IAAI,KACP,GAAG,EAAE,eAAK,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnB,oBAAoB,CAAC,IAAI;oBACvB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;wBAC5B,OAAO,IAAI,CAAA;qBACZ;gBACH,CAAC;aACF,CAAC,IACH;IACH,CAAC,CAAC,CAAA;IACF,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAdY,QAAA,oBAAoB,wBAchC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stepzen/transpiler",
3
3
  "description": "The StepZen transpiler",
4
- "version": "0.0.35",
4
+ "version": "0.0.36",
5
5
  "author": "Darren Waddell <darren@stepzen.com>",
6
6
  "license": "MIT",
7
7
  "files": [
@@ -15,6 +15,7 @@ import {
15
15
  mergeTypeIntoSchema,
16
16
  removeTypeFromSchema,
17
17
  getConfiguration,
18
+ findNextAvailableSubfolder,
18
19
  } from '../utils/merge-helpers'
19
20
  import print from './print'
20
21
  import setFilesInSDL from '../utils/set-files-in-sdl'
@@ -40,10 +41,13 @@ export default async (
40
41
  answers: any
41
42
  output: string | null
42
43
  silent: boolean
44
+ /** when `false` merge only covers config files and updates @sdl directrive */
45
+ mergeTypes?: boolean
43
46
  } = {
44
47
  answers: {},
45
48
  output: null,
46
49
  silent: false,
50
+ mergeTypes: true,
47
51
  },
48
52
  ) => {
49
53
  // Make sure there is an output directory
@@ -51,6 +55,7 @@ export default async (
51
55
  if (!options.output)
52
56
  options.output = path.join(os.tmpdir(), `stepzen-tmp-${Date.now()}`)
53
57
  if (!options.silent) options.silent = false
58
+ if (options.mergeTypes === undefined) options.mergeTypes = true
54
59
 
55
60
  // To stop things like
56
61
  // C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-config-1638293497187\C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-1638293496286
@@ -72,101 +77,112 @@ export default async (
72
77
  fs.writeFileSync(outputIndex, BLANK_INDEX_TEMPLATE)
73
78
  }
74
79
 
75
- const merged = mergeTypeDefs([
76
- await getSchema(options.output),
77
- await getSchema(imported.source),
78
- ])
79
-
80
- let queries: any[] = []
81
- let mutations: any[] = []
82
- let types: any[] = []
83
-
84
- visit(merged, {
85
- ObjectTypeDefinition(node) {
86
- if (node.name.value === 'Query') queries = queries.concat(node.fields)
87
- else if (node.name.value === 'Mutation')
88
- mutations = mutations.concat(node.fields)
89
- else types = types.concat(node)
90
- },
91
- })
92
-
93
- const details = {
94
- original: glob.sync('**/*.graphql', {cwd: options.output}).map(file => {
95
- const content = fs.readFileSync(`${options.output}/${file}`, 'utf8')
96
- return {ast: parse(content), file}
97
- }),
98
- imported: glob.sync('**/*.graphql', {cwd: imported.source}).map(file => {
99
- const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8')
100
- return {ast: parse(content), file}
101
- }),
102
- }
80
+ const targetSubfolder = findNextAvailableSubfolder(original, imported.name)
81
+
82
+ if (options.mergeTypes) {
83
+ const merged = mergeTypeDefs([
84
+ await getSchema(options.output),
85
+ await getSchema(imported.source),
86
+ ])
87
+
88
+ let queries: any[] = []
89
+ let mutations: any[] = []
90
+ let types: any[] = []
91
+
92
+ visit(merged, {
93
+ ObjectTypeDefinition(node) {
94
+ if (node.name.value === 'Query') queries = queries.concat(node.fields)
95
+ else if (node.name.value === 'Mutation')
96
+ mutations = mutations.concat(node.fields)
97
+ else types = types.concat(node)
98
+ },
99
+ })
100
+
101
+ const details = {
102
+ original: glob.sync('**/*.graphql', {cwd: options.output}).map(file => {
103
+ const content = fs.readFileSync(`${options.output}/${file}`, 'utf8')
104
+ return {ast: parse(content), file}
105
+ }),
106
+ imported: glob.sync('**/*.graphql', {cwd: imported.source}).map(file => {
107
+ const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8')
108
+ return {ast: parse(content), file}
109
+ }),
110
+ }
103
111
 
104
- // Merge Queries and Mutations
105
- for (const type of [...queries, ...mutations]) {
106
- const isInOriginal = findQueryMutationInSchema(
107
- type.name.value,
108
- details.original,
109
- )
110
- const isInImported = findQueryMutationInSchema(
111
- type.name.value,
112
- details.imported,
113
- )
114
-
115
- if (isInOriginal && isInImported) {
116
- details.original = mergeQueryMutationIntoSchema(type, details.original)
117
- details.imported = removeQueryMutationFromSchema(
112
+ // Merge Queries and Mutations
113
+ for (const type of [...queries, ...mutations]) {
114
+ const isInOriginal = findQueryMutationInSchema(
115
+ type.name.value,
116
+ details.original,
117
+ )
118
+ const isInImported = findQueryMutationInSchema(
118
119
  type.name.value,
119
120
  details.imported,
120
121
  )
122
+
123
+ if (isInOriginal && isInImported) {
124
+ details.original = mergeQueryMutationIntoSchema(type, details.original)
125
+ details.imported = removeQueryMutationFromSchema(
126
+ type.name.value,
127
+ details.imported,
128
+ )
129
+ }
121
130
  }
122
- }
123
131
 
124
- // Merge Types
125
- for (const type of types) {
126
- const isInOriginal = findTypeInSchema(type.name.value, details.original)
127
- const isInImported = findTypeInSchema(type.name.value, details.imported)
132
+ // Merge Types
133
+ for (const type of types) {
134
+ const isInOriginal = findTypeInSchema(type.name.value, details.original)
135
+ const isInImported = findTypeInSchema(type.name.value, details.imported)
136
+
137
+ if (isInOriginal && isInImported) {
138
+ details.original = mergeTypeIntoSchema(type, details.original)
139
+ details.imported = removeTypeFromSchema(
140
+ type.name.value,
141
+ details.imported,
142
+ )
143
+ }
144
+ }
128
145
 
129
- if (isInOriginal && isInImported) {
130
- details.original = mergeTypeIntoSchema(type, details.original)
131
- details.imported = removeTypeFromSchema(type.name.value, details.imported)
146
+ // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
147
+ const cleaned = {
148
+ original: details.original
149
+ .map(item => ({
150
+ ...item,
151
+ ast: stripEmptyQueriesAndMutations(item.ast),
152
+ }))
153
+ .filter(item => item.ast.definitions.length > 0),
154
+ imported: details.imported
155
+ .map(item => ({
156
+ ...item,
157
+ ast: stripEmptyQueriesAndMutations(item.ast),
158
+ }))
159
+ .filter(item => item.ast.definitions.length > 0),
132
160
  }
133
- }
134
161
 
135
- // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
136
- const cleaned = {
137
- original: details.original
138
- .map(item => ({
139
- ...item,
140
- ast: stripEmptyQueriesAndMutations(item.ast),
141
- }))
142
- .filter(item => item.ast.definitions.length > 0),
143
- imported: details.imported
144
- .map(item => ({
145
- ...item,
146
- ast: stripEmptyQueriesAndMutations(item.ast),
147
- }))
148
- .filter(item => item.ast.definitions.length > 0),
162
+ // Write the files to the output directory
163
+ cleaned.original.forEach((a: any) => {
164
+ // eslint-disable-next-line
165
+ const file = path.join(options.output as any, a.file)
166
+ const deduped = dedupeTempFolder(file)
167
+
168
+ fs.ensureFileSync(deduped)
169
+ fs.writeFileSync(deduped, print(a.ast))
170
+ })
171
+
172
+ cleaned.imported.forEach(a => {
173
+ // eslint-disable-next-line
174
+ const file = path.join(options.output as any, targetSubfolder, a.file)
175
+ const deduped = dedupeTempFolder(file)
176
+
177
+ fs.ensureFileSync(deduped)
178
+ fs.writeFileSync(deduped, print(a.ast))
179
+ })
180
+ } else {
181
+ // Write the files to the output directory
182
+ fs.copySync(original, options.output)
183
+ fs.copySync(imported.source, path.join(options.output, targetSubfolder))
149
184
  }
150
185
 
151
- // Write the files to the output directory
152
- cleaned.original.forEach((a: any) => {
153
- // eslint-disable-next-line
154
- const file = path.join(options.output as any, a.file)
155
- const deduped = dedupeTempFolder(file)
156
-
157
- fs.ensureFileSync(deduped)
158
- fs.writeFileSync(deduped, print(a.ast))
159
- })
160
-
161
- cleaned.imported.forEach(a => {
162
- // eslint-disable-next-line
163
- const file = path.join(options.output as any, imported.name, a.file)
164
- const deduped = dedupeTempFolder(file)
165
-
166
- fs.ensureFileSync(deduped)
167
- fs.writeFileSync(deduped, print(a.ast))
168
- })
169
-
170
186
  // Make sure all files are referenced in @sdl
171
187
  setFilesInSDL(options.output)
172
188
 
@@ -23,6 +23,17 @@ export const dedupeTempFolder = (dirpath: string) => {
23
23
  return dirpath
24
24
  }
25
25
 
26
+ export const findNextAvailableSubfolder = (folder: string, name: string) => {
27
+ let subfolder = name
28
+ let counter = 1
29
+ while (fs.existsSync(path.join(folder, subfolder))) {
30
+ const suffix = `${counter++}`.padStart(2, '0')
31
+ subfolder = `${name}-${suffix}`
32
+ }
33
+
34
+ return subfolder
35
+ }
36
+
26
37
  export const findQueryMutationInSchema = (
27
38
  name: string,
28
39
  files: any,