@constructive-io/graphql-codegen 4.3.0 → 4.4.1
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/core/codegen/cli/index.d.ts +3 -1
- package/core/codegen/cli/index.js +11 -1
- package/core/codegen/cli/utils-generator.d.ts +9 -0
- package/core/codegen/cli/utils-generator.js +15 -0
- package/core/codegen/templates/cli-entry.ts +33 -0
- package/core/generate.d.ts +2 -1
- package/core/generate.js +4 -0
- package/esm/core/codegen/cli/index.d.ts +3 -1
- package/esm/core/codegen/cli/index.js +11 -2
- package/esm/core/codegen/cli/utils-generator.d.ts +9 -0
- package/esm/core/codegen/cli/utils-generator.js +14 -0
- package/esm/core/generate.d.ts +2 -1
- package/esm/core/generate.js +4 -0
- package/esm/types/config.d.ts +8 -0
- package/package.json +2 -2
- package/types/config.d.ts +8 -0
|
@@ -41,6 +41,8 @@ export interface GenerateMultiTargetCliOptions {
|
|
|
41
41
|
targets: MultiTargetCliTarget[];
|
|
42
42
|
/** Enable NodeHttpAdapter for *.localhost subdomain routing */
|
|
43
43
|
nodeHttpAdapter?: boolean;
|
|
44
|
+
/** Generate a runnable index.ts entry point */
|
|
45
|
+
entryPoint?: boolean;
|
|
44
46
|
}
|
|
45
47
|
export declare function resolveBuiltinNames(targetNames: string[], userOverrides?: BuiltinNames): {
|
|
46
48
|
auth: string;
|
|
@@ -56,5 +58,5 @@ export { generateReadme, generateAgentsDocs, getCliMcpTools, generateSkills, gen
|
|
|
56
58
|
export type { MultiTargetDocsInput } from './docs-generator';
|
|
57
59
|
export { resolveDocsConfig } from '../docs-utils';
|
|
58
60
|
export type { GeneratedDocFile, McpTool } from '../docs-utils';
|
|
59
|
-
export { generateUtilsFile } from './utils-generator';
|
|
61
|
+
export { generateUtilsFile, generateEntryPointFile } from './utils-generator';
|
|
60
62
|
export type { GeneratedFile, MultiTargetExecutorInput } from './executor-generator';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateUtilsFile = exports.resolveDocsConfig = exports.generateMultiTargetSkills = exports.getMultiTargetCliMcpTools = exports.generateMultiTargetAgentsDocs = exports.generateMultiTargetReadme = exports.generateSkills = exports.getCliMcpTools = exports.generateAgentsDocs = exports.generateReadme = exports.generateAuthCommandWithName = exports.generateMultiTargetContextCommand = exports.generateAuthCommand = exports.generateContextCommand = exports.generateMultiTargetCommandMap = exports.generateCommandMap = exports.generateCustomCommand = exports.generateTableCommand = exports.generateMultiTargetExecutorFile = exports.generateExecutorFile = void 0;
|
|
3
|
+
exports.generateEntryPointFile = exports.generateUtilsFile = exports.resolveDocsConfig = exports.generateMultiTargetSkills = exports.getMultiTargetCliMcpTools = exports.generateMultiTargetAgentsDocs = exports.generateMultiTargetReadme = exports.generateSkills = exports.getCliMcpTools = exports.generateAgentsDocs = exports.generateReadme = exports.generateAuthCommandWithName = exports.generateMultiTargetContextCommand = exports.generateAuthCommand = exports.generateContextCommand = exports.generateMultiTargetCommandMap = exports.generateCommandMap = exports.generateCustomCommand = exports.generateTableCommand = exports.generateMultiTargetExecutorFile = exports.generateExecutorFile = void 0;
|
|
4
4
|
exports.generateCli = generateCli;
|
|
5
5
|
exports.resolveBuiltinNames = resolveBuiltinNames;
|
|
6
6
|
exports.generateMultiTargetCli = generateMultiTargetCli;
|
|
@@ -49,6 +49,11 @@ function generateCli(options) {
|
|
|
49
49
|
}
|
|
50
50
|
const commandMapFile = (0, command_map_generator_1.generateCommandMap)(tables, allCustomOps, toolName);
|
|
51
51
|
files.push(commandMapFile);
|
|
52
|
+
// Generate entry point if configured
|
|
53
|
+
const generateEntryPoint = typeof cliConfig === 'object' && !!cliConfig.entryPoint;
|
|
54
|
+
if (generateEntryPoint) {
|
|
55
|
+
files.push((0, utils_generator_1.generateEntryPointFile)());
|
|
56
|
+
}
|
|
52
57
|
return {
|
|
53
58
|
files,
|
|
54
59
|
stats: {
|
|
@@ -136,6 +141,10 @@ function generateMultiTargetCli(options) {
|
|
|
136
141
|
targets: commandMapTargets,
|
|
137
142
|
});
|
|
138
143
|
files.push(commandMapFile);
|
|
144
|
+
// Generate entry point if configured
|
|
145
|
+
if (options.entryPoint) {
|
|
146
|
+
files.push((0, utils_generator_1.generateEntryPointFile)());
|
|
147
|
+
}
|
|
139
148
|
return {
|
|
140
149
|
files,
|
|
141
150
|
stats: {
|
|
@@ -175,3 +184,4 @@ var docs_utils_1 = require("../docs-utils");
|
|
|
175
184
|
Object.defineProperty(exports, "resolveDocsConfig", { enumerable: true, get: function () { return docs_utils_1.resolveDocsConfig; } });
|
|
176
185
|
var utils_generator_2 = require("./utils-generator");
|
|
177
186
|
Object.defineProperty(exports, "generateUtilsFile", { enumerable: true, get: function () { return utils_generator_2.generateUtilsFile; } });
|
|
187
|
+
Object.defineProperty(exports, "generateEntryPointFile", { enumerable: true, get: function () { return utils_generator_2.generateEntryPointFile; } });
|
|
@@ -16,3 +16,12 @@ export declare function generateUtilsFile(): GeneratedFile;
|
|
|
16
16
|
* routing (DNS resolution + Host header) without any global patching.
|
|
17
17
|
*/
|
|
18
18
|
export declare function generateNodeFetchFile(): GeneratedFile;
|
|
19
|
+
/**
|
|
20
|
+
* Generate an index.ts entry point file for the CLI.
|
|
21
|
+
*
|
|
22
|
+
* Creates a runnable entry point that imports the command map,
|
|
23
|
+
* handles --version and --tty flags, and starts the CLI.
|
|
24
|
+
* This is off by default (cliEntryPoint: false) since many projects
|
|
25
|
+
* provide their own entry point with custom configuration.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateEntryPointFile(): GeneratedFile;
|
|
@@ -35,6 +35,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.generateUtilsFile = generateUtilsFile;
|
|
37
37
|
exports.generateNodeFetchFile = generateNodeFetchFile;
|
|
38
|
+
exports.generateEntryPointFile = generateEntryPointFile;
|
|
38
39
|
const fs = __importStar(require("fs"));
|
|
39
40
|
const path = __importStar(require("path"));
|
|
40
41
|
const utils_1 = require("../utils");
|
|
@@ -90,3 +91,17 @@ function generateNodeFetchFile() {
|
|
|
90
91
|
content: readTemplateFile('node-fetch.ts', 'Node HTTP adapter for localhost subdomain routing'),
|
|
91
92
|
};
|
|
92
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Generate an index.ts entry point file for the CLI.
|
|
96
|
+
*
|
|
97
|
+
* Creates a runnable entry point that imports the command map,
|
|
98
|
+
* handles --version and --tty flags, and starts the CLI.
|
|
99
|
+
* This is off by default (cliEntryPoint: false) since many projects
|
|
100
|
+
* provide their own entry point with custom configuration.
|
|
101
|
+
*/
|
|
102
|
+
function generateEntryPointFile() {
|
|
103
|
+
return {
|
|
104
|
+
fileName: 'index.ts',
|
|
105
|
+
content: readTemplateFile('cli-entry.ts', 'CLI entry point'),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI entry point for running the generated CLI application.
|
|
3
|
+
*
|
|
4
|
+
* Creates an inquirerer CLI instance with the generated command map,
|
|
5
|
+
* handles --version and --tty flags, and runs the CLI.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This file is read at codegen time and written to output.
|
|
8
|
+
* Any changes here will affect all generated CLI entry points.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { CLI, CLIOptions, getPackageJson } from 'inquirerer';
|
|
12
|
+
import { commands } from './commands';
|
|
13
|
+
|
|
14
|
+
if (process.argv.includes('--version') || process.argv.includes('-v')) {
|
|
15
|
+
const pkg = getPackageJson(__dirname);
|
|
16
|
+
console.log(pkg.version);
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Check for --tty false to enable non-interactive mode (noTty)
|
|
21
|
+
const ttyIdx = process.argv.indexOf('--tty');
|
|
22
|
+
const noTty = ttyIdx !== -1 && process.argv[ttyIdx + 1] === 'false';
|
|
23
|
+
|
|
24
|
+
const options: Partial<CLIOptions> = {
|
|
25
|
+
noTty,
|
|
26
|
+
minimistOpts: { alias: { v: 'version', h: 'help' } },
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const app = new CLI(commands, options);
|
|
30
|
+
app.run().catch((e) => {
|
|
31
|
+
console.error('Unexpected error:', e);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
package/core/generate.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CliConfig, GraphQLSDKConfigTarget } from '../types/config';
|
|
2
|
-
import type { CleanOperation, CleanTable } from '../types/schema';
|
|
2
|
+
import type { CleanOperation, CleanTable, TypeRegistry } from '../types/schema';
|
|
3
3
|
export interface GenerateOptions extends GraphQLSDKConfigTarget {
|
|
4
4
|
authorization?: string;
|
|
5
5
|
verbose?: boolean;
|
|
@@ -21,6 +21,7 @@ export interface GenerateResult {
|
|
|
21
21
|
customOperations: {
|
|
22
22
|
queries: CleanOperation[];
|
|
23
23
|
mutations: CleanOperation[];
|
|
24
|
+
typeRegistry?: TypeRegistry;
|
|
24
25
|
};
|
|
25
26
|
};
|
|
26
27
|
}
|
package/core/generate.js
CHANGED
|
@@ -239,6 +239,7 @@ async function generate(options = {}, internalOptions) {
|
|
|
239
239
|
mutations: customOperations.mutations,
|
|
240
240
|
},
|
|
241
241
|
config: { ...config, nodeHttpAdapter: useNodeHttpAdapter },
|
|
242
|
+
typeRegistry: customOperations.typeRegistry,
|
|
242
243
|
});
|
|
243
244
|
filesToWrite.push(...files.map((file) => ({
|
|
244
245
|
path: node_path_1.default.posix.join('cli', file.fileName),
|
|
@@ -372,6 +373,7 @@ async function generate(options = {}, internalOptions) {
|
|
|
372
373
|
customOperations: {
|
|
373
374
|
queries: customOperations.queries,
|
|
374
375
|
mutations: customOperations.mutations,
|
|
376
|
+
typeRegistry: customOperations.typeRegistry,
|
|
375
377
|
},
|
|
376
378
|
},
|
|
377
379
|
};
|
|
@@ -557,6 +559,7 @@ async function generateMulti(options) {
|
|
|
557
559
|
tables: result.pipelineData.tables,
|
|
558
560
|
customOperations: result.pipelineData.customOperations,
|
|
559
561
|
isAuthTarget,
|
|
562
|
+
typeRegistry: result.pipelineData.customOperations.typeRegistry,
|
|
560
563
|
});
|
|
561
564
|
}
|
|
562
565
|
}
|
|
@@ -574,6 +577,7 @@ async function generateMulti(options) {
|
|
|
574
577
|
builtinNames: cliConfig.builtinNames,
|
|
575
578
|
targets: cliTargets,
|
|
576
579
|
nodeHttpAdapter: multiNodeHttpAdapter,
|
|
580
|
+
entryPoint: cliConfig.entryPoint,
|
|
577
581
|
});
|
|
578
582
|
const cliFilesToWrite = files.map((file) => ({
|
|
579
583
|
path: node_path_1.default.posix.join('cli', file.fileName),
|
|
@@ -41,6 +41,8 @@ export interface GenerateMultiTargetCliOptions {
|
|
|
41
41
|
targets: MultiTargetCliTarget[];
|
|
42
42
|
/** Enable NodeHttpAdapter for *.localhost subdomain routing */
|
|
43
43
|
nodeHttpAdapter?: boolean;
|
|
44
|
+
/** Generate a runnable index.ts entry point */
|
|
45
|
+
entryPoint?: boolean;
|
|
44
46
|
}
|
|
45
47
|
export declare function resolveBuiltinNames(targetNames: string[], userOverrides?: BuiltinNames): {
|
|
46
48
|
auth: string;
|
|
@@ -56,5 +58,5 @@ export { generateReadme, generateAgentsDocs, getCliMcpTools, generateSkills, gen
|
|
|
56
58
|
export type { MultiTargetDocsInput } from './docs-generator';
|
|
57
59
|
export { resolveDocsConfig } from '../docs-utils';
|
|
58
60
|
export type { GeneratedDocFile, McpTool } from '../docs-utils';
|
|
59
|
-
export { generateUtilsFile } from './utils-generator';
|
|
61
|
+
export { generateUtilsFile, generateEntryPointFile } from './utils-generator';
|
|
60
62
|
export type { GeneratedFile, MultiTargetExecutorInput } from './executor-generator';
|
|
@@ -3,7 +3,7 @@ import { generateCustomCommand } from './custom-command-generator';
|
|
|
3
3
|
import { generateExecutorFile, generateMultiTargetExecutorFile } from './executor-generator';
|
|
4
4
|
import { generateAuthCommand, generateAuthCommandWithName, generateContextCommand, generateMultiTargetContextCommand, } from './infra-generator';
|
|
5
5
|
import { generateTableCommand } from './table-command-generator';
|
|
6
|
-
import { generateUtilsFile, generateNodeFetchFile } from './utils-generator';
|
|
6
|
+
import { generateUtilsFile, generateNodeFetchFile, generateEntryPointFile } from './utils-generator';
|
|
7
7
|
export function generateCli(options) {
|
|
8
8
|
const { tables, customOperations, config } = options;
|
|
9
9
|
const files = [];
|
|
@@ -43,6 +43,11 @@ export function generateCli(options) {
|
|
|
43
43
|
}
|
|
44
44
|
const commandMapFile = generateCommandMap(tables, allCustomOps, toolName);
|
|
45
45
|
files.push(commandMapFile);
|
|
46
|
+
// Generate entry point if configured
|
|
47
|
+
const generateEntryPoint = typeof cliConfig === 'object' && !!cliConfig.entryPoint;
|
|
48
|
+
if (generateEntryPoint) {
|
|
49
|
+
files.push(generateEntryPointFile());
|
|
50
|
+
}
|
|
46
51
|
return {
|
|
47
52
|
files,
|
|
48
53
|
stats: {
|
|
@@ -130,6 +135,10 @@ export function generateMultiTargetCli(options) {
|
|
|
130
135
|
targets: commandMapTargets,
|
|
131
136
|
});
|
|
132
137
|
files.push(commandMapFile);
|
|
138
|
+
// Generate entry point if configured
|
|
139
|
+
if (options.entryPoint) {
|
|
140
|
+
files.push(generateEntryPointFile());
|
|
141
|
+
}
|
|
133
142
|
return {
|
|
134
143
|
files,
|
|
135
144
|
stats: {
|
|
@@ -148,4 +157,4 @@ export { generateCommandMap, generateMultiTargetCommandMap } from './command-map
|
|
|
148
157
|
export { generateContextCommand, generateAuthCommand, generateMultiTargetContextCommand, generateAuthCommandWithName, } from './infra-generator';
|
|
149
158
|
export { generateReadme, generateAgentsDocs, getCliMcpTools, generateSkills, generateMultiTargetReadme, generateMultiTargetAgentsDocs, getMultiTargetCliMcpTools, generateMultiTargetSkills, } from './docs-generator';
|
|
150
159
|
export { resolveDocsConfig } from '../docs-utils';
|
|
151
|
-
export { generateUtilsFile } from './utils-generator';
|
|
160
|
+
export { generateUtilsFile, generateEntryPointFile } from './utils-generator';
|
|
@@ -16,3 +16,12 @@ export declare function generateUtilsFile(): GeneratedFile;
|
|
|
16
16
|
* routing (DNS resolution + Host header) without any global patching.
|
|
17
17
|
*/
|
|
18
18
|
export declare function generateNodeFetchFile(): GeneratedFile;
|
|
19
|
+
/**
|
|
20
|
+
* Generate an index.ts entry point file for the CLI.
|
|
21
|
+
*
|
|
22
|
+
* Creates a runnable entry point that imports the command map,
|
|
23
|
+
* handles --version and --tty flags, and starts the CLI.
|
|
24
|
+
* This is off by default (cliEntryPoint: false) since many projects
|
|
25
|
+
* provide their own entry point with custom configuration.
|
|
26
|
+
*/
|
|
27
|
+
export declare function generateEntryPointFile(): GeneratedFile;
|
|
@@ -53,3 +53,17 @@ export function generateNodeFetchFile() {
|
|
|
53
53
|
content: readTemplateFile('node-fetch.ts', 'Node HTTP adapter for localhost subdomain routing'),
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate an index.ts entry point file for the CLI.
|
|
58
|
+
*
|
|
59
|
+
* Creates a runnable entry point that imports the command map,
|
|
60
|
+
* handles --version and --tty flags, and starts the CLI.
|
|
61
|
+
* This is off by default (cliEntryPoint: false) since many projects
|
|
62
|
+
* provide their own entry point with custom configuration.
|
|
63
|
+
*/
|
|
64
|
+
export function generateEntryPointFile() {
|
|
65
|
+
return {
|
|
66
|
+
fileName: 'index.ts',
|
|
67
|
+
content: readTemplateFile('cli-entry.ts', 'CLI entry point'),
|
|
68
|
+
};
|
|
69
|
+
}
|
package/esm/core/generate.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CliConfig, GraphQLSDKConfigTarget } from '../types/config';
|
|
2
|
-
import type { CleanOperation, CleanTable } from '../types/schema';
|
|
2
|
+
import type { CleanOperation, CleanTable, TypeRegistry } from '../types/schema';
|
|
3
3
|
export interface GenerateOptions extends GraphQLSDKConfigTarget {
|
|
4
4
|
authorization?: string;
|
|
5
5
|
verbose?: boolean;
|
|
@@ -21,6 +21,7 @@ export interface GenerateResult {
|
|
|
21
21
|
customOperations: {
|
|
22
22
|
queries: CleanOperation[];
|
|
23
23
|
mutations: CleanOperation[];
|
|
24
|
+
typeRegistry?: TypeRegistry;
|
|
24
25
|
};
|
|
25
26
|
};
|
|
26
27
|
}
|
package/esm/core/generate.js
CHANGED
|
@@ -197,6 +197,7 @@ export async function generate(options = {}, internalOptions) {
|
|
|
197
197
|
mutations: customOperations.mutations,
|
|
198
198
|
},
|
|
199
199
|
config: { ...config, nodeHttpAdapter: useNodeHttpAdapter },
|
|
200
|
+
typeRegistry: customOperations.typeRegistry,
|
|
200
201
|
});
|
|
201
202
|
filesToWrite.push(...files.map((file) => ({
|
|
202
203
|
path: path.posix.join('cli', file.fileName),
|
|
@@ -330,6 +331,7 @@ export async function generate(options = {}, internalOptions) {
|
|
|
330
331
|
customOperations: {
|
|
331
332
|
queries: customOperations.queries,
|
|
332
333
|
mutations: customOperations.mutations,
|
|
334
|
+
typeRegistry: customOperations.typeRegistry,
|
|
333
335
|
},
|
|
334
336
|
},
|
|
335
337
|
};
|
|
@@ -515,6 +517,7 @@ export async function generateMulti(options) {
|
|
|
515
517
|
tables: result.pipelineData.tables,
|
|
516
518
|
customOperations: result.pipelineData.customOperations,
|
|
517
519
|
isAuthTarget,
|
|
520
|
+
typeRegistry: result.pipelineData.customOperations.typeRegistry,
|
|
518
521
|
});
|
|
519
522
|
}
|
|
520
523
|
}
|
|
@@ -532,6 +535,7 @@ export async function generateMulti(options) {
|
|
|
532
535
|
builtinNames: cliConfig.builtinNames,
|
|
533
536
|
targets: cliTargets,
|
|
534
537
|
nodeHttpAdapter: multiNodeHttpAdapter,
|
|
538
|
+
entryPoint: cliConfig.entryPoint,
|
|
535
539
|
});
|
|
536
540
|
const cliFilesToWrite = files.map((file) => ({
|
|
537
541
|
path: path.posix.join('cli', file.fileName),
|
package/esm/types/config.d.ts
CHANGED
|
@@ -169,6 +169,14 @@ export interface CliConfig {
|
|
|
169
169
|
* context -> 'context' (renamed to 'env' on collision)
|
|
170
170
|
*/
|
|
171
171
|
builtinNames?: BuiltinNames;
|
|
172
|
+
/**
|
|
173
|
+
* Generate a runnable index.ts entry point for the CLI.
|
|
174
|
+
* When true, generates an index.ts that imports the command map,
|
|
175
|
+
* handles --version and --tty flags, and starts the inquirerer CLI.
|
|
176
|
+
* Useful for projects that want a ready-to-run CLI without a custom entry point.
|
|
177
|
+
* @default false
|
|
178
|
+
*/
|
|
179
|
+
entryPoint?: boolean;
|
|
172
180
|
}
|
|
173
181
|
/**
|
|
174
182
|
* Target configuration for graphql-codegen
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@constructive-io/graphql-codegen",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.4.1",
|
|
4
4
|
"description": "GraphQL SDK generator for Constructive databases with React Query hooks",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"graphql",
|
|
@@ -100,5 +100,5 @@
|
|
|
100
100
|
"tsx": "^4.21.0",
|
|
101
101
|
"typescript": "^5.9.3"
|
|
102
102
|
},
|
|
103
|
-
"gitHead": "
|
|
103
|
+
"gitHead": "e699d19180e350049e69d8c5bdf4f6991a05c0e6"
|
|
104
104
|
}
|
package/types/config.d.ts
CHANGED
|
@@ -169,6 +169,14 @@ export interface CliConfig {
|
|
|
169
169
|
* context -> 'context' (renamed to 'env' on collision)
|
|
170
170
|
*/
|
|
171
171
|
builtinNames?: BuiltinNames;
|
|
172
|
+
/**
|
|
173
|
+
* Generate a runnable index.ts entry point for the CLI.
|
|
174
|
+
* When true, generates an index.ts that imports the command map,
|
|
175
|
+
* handles --version and --tty flags, and starts the inquirerer CLI.
|
|
176
|
+
* Useful for projects that want a ready-to-run CLI without a custom entry point.
|
|
177
|
+
* @default false
|
|
178
|
+
*/
|
|
179
|
+
entryPoint?: boolean;
|
|
172
180
|
}
|
|
173
181
|
/**
|
|
174
182
|
* Target configuration for graphql-codegen
|