@stepzen/transpiler 0.0.35 → 0.0.38

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;
@@ -14,7 +14,8 @@ const BLANK_INDEX_TEMPLATE = `
14
14
  schema @sdl(files: []) {
15
15
  query: Query
16
16
  }
17
-
17
+ `.trim();
18
+ const BLANK_QUERY_TYPE = `
18
19
  type Query {
19
20
  __query: String
20
21
  }
@@ -23,6 +24,7 @@ exports.default = async (original, imported, options = {
23
24
  answers: {},
24
25
  output: null,
25
26
  silent: false,
27
+ mergeTypes: true,
26
28
  }) => {
27
29
  // Make sure there is an output directory
28
30
  if (!options.answers)
@@ -31,6 +33,8 @@ exports.default = async (original, imported, options = {
31
33
  options.output = path.join(os.tmpdir(), `stepzen-tmp-${Date.now()}`);
32
34
  if (!options.silent)
33
35
  options.silent = false;
36
+ if (options.mergeTypes === undefined)
37
+ options.mergeTypes = true;
34
38
  // To stop things like
35
39
  // C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-config-1638293497187\C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-1638293496286
36
40
  options.output = merge_helpers_1.dedupeTempFolder(options.output);
@@ -45,77 +49,98 @@ exports.default = async (original, imported, options = {
45
49
  // Ensure an index.graphql exists
46
50
  const outputIndex = path.join(options.output, 'index.graphql');
47
51
  if (!fs.existsSync(outputIndex)) {
48
- fs.writeFileSync(outputIndex, BLANK_INDEX_TEMPLATE);
52
+ fs.writeFileSync(outputIndex, options.mergeTypes
53
+ ? // (2022-03-09, vluakshov) Not sure what'd break without the
54
+ // blank Query type, but that's why I do not want to remove it
55
+ // from the default code path.
56
+ BLANK_INDEX_TEMPLATE + BLANK_QUERY_TYPE
57
+ : // In the non-default code path that does NOT merge types
58
+ // the blank Query type causes explicit problems
59
+ // (https://github.com/steprz/stepzen-cli/issues/482).
60
+ BLANK_INDEX_TEMPLATE);
49
61
  }
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);
62
+ const targetSubfolder = merge_helpers_1.findNextAvailableSubfolder(original, imported.name);
63
+ if (options.mergeTypes) {
64
+ const merged = merge_1.mergeTypeDefs([
65
+ await merge_helpers_1.getSchema(options.output),
66
+ await merge_helpers_1.getSchema(imported.source),
67
+ ]);
68
+ let queries = [];
69
+ let mutations = [];
70
+ let types = [];
71
+ graphql_1.visit(merged, {
72
+ ObjectTypeDefinition(node) {
73
+ if (node.name.value === 'Query')
74
+ queries = queries.concat(node.fields);
75
+ else if (node.name.value === 'Mutation')
76
+ mutations = mutations.concat(node.fields);
77
+ else
78
+ types = types.concat(node);
79
+ },
80
+ });
81
+ const details = {
82
+ original: glob.sync('**/*.graphql', { cwd: options.output }).map(file => {
83
+ const content = fs.readFileSync(`${options.output}/${file}`, 'utf8');
84
+ return { ast: graphql_1.parse(content), file };
85
+ }),
86
+ imported: glob.sync('**/*.graphql', { cwd: imported.source }).map(file => {
87
+ const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8');
88
+ return { ast: graphql_1.parse(content), file };
89
+ }),
90
+ };
91
+ // Merge Queries and Mutations
92
+ for (const type of [...queries, ...mutations]) {
93
+ const isInOriginal = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.original);
94
+ const isInImported = merge_helpers_1.findQueryMutationInSchema(type.name.value, details.imported);
95
+ if (isInOriginal && isInImported) {
96
+ details.original = merge_helpers_1.mergeQueryMutationIntoSchema(type, details.original);
97
+ details.imported = merge_helpers_1.removeQueryMutationFromSchema(type.name.value, details.imported);
98
+ }
84
99
  }
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);
100
+ // Merge Types
101
+ for (const type of types) {
102
+ const isInOriginal = merge_helpers_1.findTypeInSchema(type.name.value, details.original);
103
+ const isInImported = merge_helpers_1.findTypeInSchema(type.name.value, details.imported);
104
+ if (isInOriginal && isInImported) {
105
+ details.original = merge_helpers_1.mergeTypeIntoSchema(type, details.original);
106
+ details.imported = merge_helpers_1.removeTypeFromSchema(type.name.value, details.imported);
107
+ }
93
108
  }
109
+ // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
110
+ const cleaned = {
111
+ original: details.original
112
+ .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
113
+ .filter(item => item.ast.definitions.length > 0),
114
+ imported: details.imported
115
+ .map(item => (Object.assign(Object.assign({}, item), { ast: strip_empty_queries_and_mutations_1.default(item.ast) })))
116
+ .filter(item => item.ast.definitions.length > 0),
117
+ };
118
+ // Write the files to the output directory
119
+ cleaned.original.forEach((a) => {
120
+ // eslint-disable-next-line
121
+ const file = path.join(options.output, a.file);
122
+ const deduped = merge_helpers_1.dedupeTempFolder(file);
123
+ fs.ensureFileSync(deduped);
124
+ fs.writeFileSync(deduped, print_1.default(a.ast));
125
+ });
126
+ cleaned.imported.forEach(a => {
127
+ // eslint-disable-next-line
128
+ const file = path.join(options.output, targetSubfolder, a.file);
129
+ const deduped = merge_helpers_1.dedupeTempFolder(file);
130
+ fs.ensureFileSync(deduped);
131
+ fs.writeFileSync(deduped, print_1.default(a.ast));
132
+ });
133
+ }
134
+ else {
135
+ // Write the files to the output directory
136
+ fs.copySync(original, options.output);
137
+ glob.sync('**/*.graphql', { cwd: imported.source }).forEach(relativePath => {
138
+ const importedFullPath = path.join(imported.source, relativePath);
139
+ const targetFullPath = path.join(options.output, targetSubfolder, relativePath);
140
+ fs.ensureDirSync(path.dirname(targetFullPath));
141
+ fs.copyFileSync(importedFullPath, targetFullPath);
142
+ });
94
143
  }
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
144
  // Make sure all files are referenced in @sdl
120
145
  set_files_in_sdl_1.default(options.output);
121
146
  // Generate configuration
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/actions/merge.ts"],"names":[],"mappings":"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"}
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":"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"}
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.38",
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'
@@ -24,7 +25,9 @@ const BLANK_INDEX_TEMPLATE = `
24
25
  schema @sdl(files: []) {
25
26
  query: Query
26
27
  }
28
+ `.trim()
27
29
 
30
+ const BLANK_QUERY_TYPE = `
28
31
  type Query {
29
32
  __query: String
30
33
  }
@@ -40,10 +43,13 @@ export default async (
40
43
  answers: any
41
44
  output: string | null
42
45
  silent: boolean
46
+ /** when `false` merge only covers config files and updates @sdl directrive */
47
+ mergeTypes?: boolean
43
48
  } = {
44
49
  answers: {},
45
50
  output: null,
46
51
  silent: false,
52
+ mergeTypes: true,
47
53
  },
48
54
  ) => {
49
55
  // Make sure there is an output directory
@@ -51,6 +57,7 @@ export default async (
51
57
  if (!options.output)
52
58
  options.output = path.join(os.tmpdir(), `stepzen-tmp-${Date.now()}`)
53
59
  if (!options.silent) options.silent = false
60
+ if (options.mergeTypes === undefined) options.mergeTypes = true
54
61
 
55
62
  // To stop things like
56
63
  // C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-config-1638293497187\C:\Users\Darren\AppData\Local\Temp\stepzen-tmp-1638293496286
@@ -69,104 +76,135 @@ export default async (
69
76
  // Ensure an index.graphql exists
70
77
  const outputIndex = path.join(options.output, 'index.graphql')
71
78
  if (!fs.existsSync(outputIndex)) {
72
- fs.writeFileSync(outputIndex, BLANK_INDEX_TEMPLATE)
73
- }
74
-
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
- }),
79
+ fs.writeFileSync(
80
+ outputIndex,
81
+ options.mergeTypes
82
+ ? // (2022-03-09, vluakshov) Not sure what'd break without the
83
+ // blank Query type, but that's why I do not want to remove it
84
+ // from the default code path.
85
+ BLANK_INDEX_TEMPLATE + BLANK_QUERY_TYPE
86
+ : // In the non-default code path that does NOT merge types
87
+ // the blank Query type causes explicit problems
88
+ // (https://github.com/steprz/stepzen-cli/issues/482).
89
+ BLANK_INDEX_TEMPLATE,
90
+ )
102
91
  }
103
92
 
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
- )
93
+ const targetSubfolder = findNextAvailableSubfolder(original, imported.name)
94
+
95
+ if (options.mergeTypes) {
96
+ const merged = mergeTypeDefs([
97
+ await getSchema(options.output),
98
+ await getSchema(imported.source),
99
+ ])
100
+
101
+ let queries: any[] = []
102
+ let mutations: any[] = []
103
+ let types: any[] = []
104
+
105
+ visit(merged, {
106
+ ObjectTypeDefinition(node) {
107
+ if (node.name.value === 'Query') queries = queries.concat(node.fields)
108
+ else if (node.name.value === 'Mutation')
109
+ mutations = mutations.concat(node.fields)
110
+ else types = types.concat(node)
111
+ },
112
+ })
113
+
114
+ const details = {
115
+ original: glob.sync('**/*.graphql', {cwd: options.output}).map(file => {
116
+ const content = fs.readFileSync(`${options.output}/${file}`, 'utf8')
117
+ return {ast: parse(content), file}
118
+ }),
119
+ imported: glob.sync('**/*.graphql', {cwd: imported.source}).map(file => {
120
+ const content = fs.readFileSync(`${imported.source}/${file}`, 'utf8')
121
+ return {ast: parse(content), file}
122
+ }),
123
+ }
114
124
 
115
- if (isInOriginal && isInImported) {
116
- details.original = mergeQueryMutationIntoSchema(type, details.original)
117
- details.imported = removeQueryMutationFromSchema(
125
+ // Merge Queries and Mutations
126
+ for (const type of [...queries, ...mutations]) {
127
+ const isInOriginal = findQueryMutationInSchema(
128
+ type.name.value,
129
+ details.original,
130
+ )
131
+ const isInImported = findQueryMutationInSchema(
118
132
  type.name.value,
119
133
  details.imported,
120
134
  )
135
+
136
+ if (isInOriginal && isInImported) {
137
+ details.original = mergeQueryMutationIntoSchema(type, details.original)
138
+ details.imported = removeQueryMutationFromSchema(
139
+ type.name.value,
140
+ details.imported,
141
+ )
142
+ }
121
143
  }
122
- }
123
144
 
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)
145
+ // Merge Types
146
+ for (const type of types) {
147
+ const isInOriginal = findTypeInSchema(type.name.value, details.original)
148
+ const isInImported = findTypeInSchema(type.name.value, details.imported)
149
+
150
+ if (isInOriginal && isInImported) {
151
+ details.original = mergeTypeIntoSchema(type, details.original)
152
+ details.imported = removeTypeFromSchema(
153
+ type.name.value,
154
+ details.imported,
155
+ )
156
+ }
157
+ }
128
158
 
129
- if (isInOriginal && isInImported) {
130
- details.original = mergeTypeIntoSchema(type, details.original)
131
- details.imported = removeTypeFromSchema(type.name.value, details.imported)
159
+ // Clean up the files. Remove empty Query / Mutation types, filter out now-empty files
160
+ const cleaned = {
161
+ original: details.original
162
+ .map(item => ({
163
+ ...item,
164
+ ast: stripEmptyQueriesAndMutations(item.ast),
165
+ }))
166
+ .filter(item => item.ast.definitions.length > 0),
167
+ imported: details.imported
168
+ .map(item => ({
169
+ ...item,
170
+ ast: stripEmptyQueriesAndMutations(item.ast),
171
+ }))
172
+ .filter(item => item.ast.definitions.length > 0),
132
173
  }
133
- }
134
174
 
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),
175
+ // Write the files to the output directory
176
+ cleaned.original.forEach((a: any) => {
177
+ // eslint-disable-next-line
178
+ const file = path.join(options.output as any, a.file)
179
+ const deduped = dedupeTempFolder(file)
180
+
181
+ fs.ensureFileSync(deduped)
182
+ fs.writeFileSync(deduped, print(a.ast))
183
+ })
184
+
185
+ cleaned.imported.forEach(a => {
186
+ // eslint-disable-next-line
187
+ const file = path.join(options.output as any, targetSubfolder, a.file)
188
+ const deduped = dedupeTempFolder(file)
189
+
190
+ fs.ensureFileSync(deduped)
191
+ fs.writeFileSync(deduped, print(a.ast))
192
+ })
193
+ } else {
194
+ // Write the files to the output directory
195
+ fs.copySync(original, options.output)
196
+ glob.sync('**/*.graphql', {cwd: imported.source}).forEach(relativePath => {
197
+ const importedFullPath = path.join(imported.source, relativePath)
198
+ const targetFullPath = path.join(
199
+ options.output!,
200
+ targetSubfolder,
201
+ relativePath,
202
+ )
203
+ fs.ensureDirSync(path.dirname(targetFullPath))
204
+ fs.copyFileSync(importedFullPath, targetFullPath)
205
+ })
149
206
  }
150
207
 
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
208
  // Make sure all files are referenced in @sdl
171
209
  setFilesInSDL(options.output)
172
210
 
@@ -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,