wgc 0.96.2 → 0.97.0

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/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wgc",
3
- "version": "0.96.2",
3
+ "version": "0.97.0",
4
4
  "description": "The official CLI tool to manage the GraphQL Federation Platform Cosmo",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -1,9 +1,9 @@
1
- import { access, constants, lstat, mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import { compileGraphQLToMapping, compileGraphQLToProto, validateGraphQLSDL, } from '@wundergraph/protographic';
1
+ import { access, constants, lstat, mkdir, readFile, readdir, writeFile } from 'node:fs/promises';
2
+ import { compileGraphQLToMapping, compileGraphQLToProto, compileOperationsToProto, validateGraphQLSDL, rootToProtoText, protobuf, } from '@wundergraph/protographic';
3
3
  import { Command, program } from 'commander';
4
4
  import { camelCase, upperFirst } from 'lodash-es';
5
5
  import Spinner from 'ora';
6
- import { resolve } from 'pathe';
6
+ import { resolve, extname } from 'pathe';
7
7
  import { renderResultTree, renderValidationResults } from '../../router/commands/plugin/helper.js';
8
8
  import { getGoModulePathProtoOption } from '../../router/commands/plugin/toolchain.js';
9
9
  export default (opts) => {
@@ -14,8 +14,27 @@ export default (opts) => {
14
14
  command.option('-o, --output <path-to-output>', 'The output directory for the protobuf schema. (default ".").', '.');
15
15
  command.option('-p, --package-name <name>', 'The name of the proto package. (default "service.v1")', 'service.v1');
16
16
  command.option('-g, --go-package <name>', 'Adds an `option go_package` to the proto file.');
17
+ // NOTE: The following language-specific options are not enabled for the alpha release
18
+ // command.option('--java-package <name>', 'Adds an `option java_package` to the proto file.');
19
+ // command.option('--java-outer-classname <name>', 'Adds an `option java_outer_classname` to the proto file.');
20
+ // command.option('--java-multiple-files', 'Adds `option java_multiple_files = true` to the proto file.');
21
+ // command.option('--csharp-namespace <name>', 'Adds an `option csharp_namespace` to the proto file.');
22
+ // command.option('--ruby-package <name>', 'Adds an `option ruby_package` to the proto file.');
23
+ // command.option('--php-namespace <name>', 'Adds an `option php_namespace` to the proto file.');
24
+ // command.option('--php-metadata-namespace <name>', 'Adds an `option php_metadata_namespace` to the proto file.');
25
+ // command.option('--objc-class-prefix <name>', 'Adds an `option objc_class_prefix` to the proto file.');
26
+ // command.option('--swift-prefix <name>', 'Adds an `option swift_prefix` to the proto file.');
17
27
  command.option('-l, --proto-lock <path-to-proto-lock>', 'The path to the existing proto lock file to use as the starting point for the updated proto lock file. ' +
18
28
  'Default is to use and overwrite the output file "<outdir>/service.proto.lock.json".');
29
+ command.option('-w, --with-operations <path-to-operations>', 'Path to directory containing GraphQL operation files (.graphql, .gql, .graphqls, .gqls). ' +
30
+ 'Subdirectories are traversed recursively. When provided, generates proto from operations instead of SDL types.');
31
+ command.option('--custom-scalar-mapping <json>', 'Custom scalar type mappings as JSON string. ' +
32
+ 'Example: \'{"DateTime":"google.protobuf.Timestamp","UUID":"string"}\'');
33
+ command.option('--custom-scalar-mapping-file <path>', 'Path to JSON file containing custom scalar type mappings. ' + 'Example: ./mappings.json');
34
+ command.option('--max-depth <number>', 'Maximum recursion depth for processing nested selections and fragments (default: 50). ' +
35
+ 'Increase this if you have deeply nested queries or decrease to catch potential circular references earlier.');
36
+ command.option('--prefix-operation-type', 'Prefix RPC method names with the operation type (Query/Mutation). Only applies with --with-operations. ' +
37
+ 'Subscriptions are not prefixed.');
19
38
  command.action(generateCommandAction);
20
39
  return command;
21
40
  };
@@ -37,25 +56,106 @@ async function generateCommandAction(name, options) {
37
56
  if (!(await exists(inputFile))) {
38
57
  program.error(`Input file ${options.input} does not exist`);
39
58
  }
59
+ // Validate operations directory if provided
60
+ if (options.withOperations) {
61
+ const operationsPath = resolve(options.withOperations);
62
+ if (!(await exists(operationsPath))) {
63
+ program.error(`Operations directory ${options.withOperations} does not exist`);
64
+ }
65
+ if (!(await lstat(operationsPath)).isDirectory()) {
66
+ program.error(`Path ${options.withOperations} is not a directory`);
67
+ }
68
+ }
69
+ // Parse custom scalar mappings if provided
70
+ let customScalarMappings;
71
+ if (options.customScalarMapping && options.customScalarMappingFile) {
72
+ program.error('Cannot use both --custom-scalar-mapping and --custom-scalar-mapping-file. Please use only one.');
73
+ }
74
+ if (options.customScalarMapping) {
75
+ try {
76
+ customScalarMappings = JSON.parse(options.customScalarMapping);
77
+ }
78
+ catch (error) {
79
+ program.error(`Failed to parse custom scalar mapping JSON: ${error instanceof Error ? error.message : String(error)}`);
80
+ }
81
+ }
82
+ else if (options.customScalarMappingFile) {
83
+ try {
84
+ const filePath = resolve(options.customScalarMappingFile);
85
+ if (!(await exists(filePath))) {
86
+ program.error(`Custom scalar mapping file not found: ${options.customScalarMappingFile}`);
87
+ }
88
+ const fileContent = await readFile(filePath, 'utf8');
89
+ customScalarMappings = JSON.parse(fileContent);
90
+ }
91
+ catch (error) {
92
+ program.error(`Failed to read or parse custom scalar mapping file: ${error instanceof Error ? error.message : String(error)}`);
93
+ }
94
+ }
95
+ // Parse maxDepth if provided
96
+ let maxDepth;
97
+ if (options.maxDepth) {
98
+ const parsed = Number.parseInt(options.maxDepth, 10);
99
+ if (Number.isNaN(parsed) || parsed < 1) {
100
+ program.error(`Invalid --max-depth value: ${options.maxDepth}. Must be a positive integer.`);
101
+ }
102
+ maxDepth = parsed;
103
+ }
104
+ // Validate prefix-operation-type usage
105
+ if (options.prefixOperationType && !options.withOperations) {
106
+ spinner.warn('--prefix-operation-type flag is ignored when not using --with-operations');
107
+ }
108
+ const languageOptions = {
109
+ goPackage: options.goPackage,
110
+ javaPackage: options.javaPackage,
111
+ javaOuterClassname: options.javaOuterClassname,
112
+ javaMultipleFiles: options.javaMultipleFiles,
113
+ csharpNamespace: options.csharpNamespace,
114
+ rubyPackage: options.rubyPackage,
115
+ phpNamespace: options.phpNamespace,
116
+ phpMetadataNamespace: options.phpMetadataNamespace,
117
+ objcClassPrefix: options.objcClassPrefix,
118
+ swiftPrefix: options.swiftPrefix,
119
+ };
40
120
  const result = await generateProtoAndMapping({
41
121
  outdir: options.output,
42
122
  schemaFile: inputFile,
43
123
  name,
44
124
  spinner,
45
125
  packageName: options.packageName,
46
- goPackage: options.goPackage,
126
+ languageOptions,
47
127
  lockFile: options.protoLock,
128
+ operationsDir: options.withOperations,
129
+ customScalarMappings,
130
+ maxDepth,
131
+ prefixOperationType: options.prefixOperationType,
48
132
  });
49
133
  // Write the generated files
50
- await writeFile(resolve(options.output, 'mapping.json'), result.mapping);
134
+ if (result.mapping) {
135
+ await writeFile(resolve(options.output, 'mapping.json'), result.mapping);
136
+ }
51
137
  await writeFile(resolve(options.output, 'service.proto'), result.proto);
52
- await writeFile(resolve(options.output, 'service.proto.lock.json'), JSON.stringify(result.lockData, null, 2));
53
- renderResultTree(spinner, 'Generated protobuf schema', true, name, {
138
+ if (result.lockData) {
139
+ await writeFile(resolve(options.output, 'service.proto.lock.json'), JSON.stringify(result.lockData, null, 2));
140
+ }
141
+ const generatedFiles = ['service.proto'];
142
+ if (result.mapping) {
143
+ generatedFiles.push('mapping.json');
144
+ }
145
+ if (result.lockData) {
146
+ generatedFiles.push('service.proto.lock.json');
147
+ }
148
+ const resultInfo = {
54
149
  'input file': inputFile,
55
150
  'output dir': options.output,
56
- 'service name': upperFirst(camelCase(name)) + 'Service',
57
- generated: 'mapping.json, service.proto, service.proto.lock.json',
58
- });
151
+ 'service name': upperFirst(camelCase(name)),
152
+ 'generation mode': result.isOperationsMode ? 'operations-based' : 'SDL-based',
153
+ generated: generatedFiles.join(', '),
154
+ };
155
+ if (result.isOperationsMode) {
156
+ resultInfo['query idempotency'] = 'NO_SIDE_EFFECTS';
157
+ }
158
+ renderResultTree(spinner, 'Generated protobuf schema', true, name, resultInfo);
59
159
  }
60
160
  catch (error) {
61
161
  renderResultTree(spinner, 'Failed to generate protobuf schema', false, name, {
@@ -65,24 +165,181 @@ async function generateCommandAction(name, options) {
65
165
  }
66
166
  }
67
167
  /**
68
- * Generate proto and mapping data from schema
168
+ * Read all GraphQL operation files from a directory recursively
169
+ * @param operationsDir - The directory path containing GraphQL operation files
170
+ * @returns An array of objects containing filename and content for each operation file
69
171
  */
70
- async function generateProtoAndMapping({ name, outdir, schemaFile, spinner, packageName, goPackage, lockFile = resolve(outdir, 'service.proto.lock.json'), }) {
71
- spinner.text = 'Generating proto schema...';
72
- const schema = await readFile(schemaFile, 'utf8');
73
- const serviceName = upperFirst(camelCase(name)) + 'Service';
172
+ async function readOperationFiles(operationsDir) {
173
+ const files = await readdir(operationsDir, { recursive: true });
174
+ const validExtensions = ['.graphql', '.gql', '.graphqls', '.gqls'];
175
+ // Sort files to ensure deterministic output and consistent RPC/method ordering across platforms
176
+ const operationFiles = files.filter((file) => validExtensions.includes(extname(file).toLowerCase())).sort();
177
+ if (operationFiles.length === 0) {
178
+ throw new Error(`No GraphQL operation files (${validExtensions.join(', ')}) found in ${operationsDir}`);
179
+ }
180
+ const operations = [];
181
+ for (const file of operationFiles) {
182
+ const filePath = resolve(operationsDir, file);
183
+ const content = await readFile(filePath, 'utf8');
184
+ operations.push({ filename: file, content });
185
+ }
186
+ return operations;
187
+ }
188
+ /**
189
+ * Merge multiple protobufjs Root ASTs into a single Root
190
+ * Combines all messages, enums, and RPC methods from multiple operations
191
+ */
192
+ function mergeProtoRoots(roots, serviceName) {
193
+ if (roots.length === 0) {
194
+ throw new Error('No proto roots to merge');
195
+ }
196
+ if (roots.length === 1) {
197
+ return roots[0];
198
+ }
199
+ // Create a new merged root
200
+ const mergedRoot = new protobuf.Root();
201
+ const seenMessages = new Set();
202
+ const seenEnums = new Set();
203
+ const mergedService = new protobuf.Service(serviceName);
204
+ for (const root of roots) {
205
+ // Iterate through all nested types in the root
206
+ for (const nested of Object.values(root.nestedArray)) {
207
+ if (nested instanceof protobuf.Type) {
208
+ // Add message if not already seen
209
+ const message = nested;
210
+ if (!seenMessages.has(message.name)) {
211
+ mergedRoot.add(message);
212
+ seenMessages.add(message.name);
213
+ }
214
+ }
215
+ else if (nested instanceof protobuf.Enum) {
216
+ // Add enum if not already seen
217
+ const enumType = nested;
218
+ if (!seenEnums.has(enumType.name)) {
219
+ mergedRoot.add(enumType);
220
+ seenEnums.add(enumType.name);
221
+ }
222
+ }
223
+ else if (nested instanceof protobuf.Service) {
224
+ // Merge all RPC methods from all services
225
+ const service = nested;
226
+ for (const method of Object.values(service.methods)) {
227
+ mergedService.add(method);
228
+ }
229
+ }
230
+ }
231
+ }
232
+ // Add the merged service to the root
233
+ mergedRoot.add(mergedService);
234
+ return mergedRoot;
235
+ }
236
+ /**
237
+ * Generate proto from GraphQL operations
238
+ * @param schema - The GraphQL schema content
239
+ * @param serviceName - The name of the proto service
240
+ * @param operationsPath - The resolved path to the operations directory
241
+ * @param spinner - The spinner instance for progress updates
242
+ * @param packageName - The proto package name
243
+ * @param languageOptions - Language-specific proto options
244
+ * @param lockFile - Path to the proto lock file
245
+ * @param customScalarMappings - Custom scalar type mappings
246
+ * @param maxDepth - Maximum recursion depth
247
+ * @param prefixOperationType - Whether to prefix operation types
248
+ * @returns Generation result with proto content and lock data
249
+ * @note All Query operations are automatically marked with NO_SIDE_EFFECTS idempotency level
250
+ */
251
+ async function generateFromOperations(schema, serviceName, operationsPath, spinner, packageName, languageOptions, lockFile, customScalarMappings, maxDepth, prefixOperationType) {
252
+ spinner.text = 'Reading operation files...';
253
+ const operationFiles = await readOperationFiles(operationsPath);
254
+ spinner.text = `Processing ${operationFiles.length} operation files...`;
255
+ // Load lock data for field number stability
256
+ let currentLockData = await fetchLockData(lockFile);
257
+ // Process each operation file separately to maintain reversibility
258
+ // Collect the AST roots instead of proto strings
259
+ const roots = [];
260
+ for (const { filename, content } of operationFiles) {
261
+ try {
262
+ const result = compileOperationsToProto(content, schema, {
263
+ serviceName,
264
+ packageName: packageName || 'service.v1',
265
+ ...languageOptions,
266
+ includeComments: true,
267
+ // All Query operations are automatically marked as NO_SIDE_EFFECTS (idempotent).
268
+ // This ensures consistent, safe retry behavior for all query operations.
269
+ queryIdempotency: 'NO_SIDE_EFFECTS',
270
+ lockData: currentLockData,
271
+ customScalarMappings,
272
+ maxDepth,
273
+ prefixOperationType,
274
+ });
275
+ // Keep the AST root instead of the string
276
+ roots.push(result.root);
277
+ // Use the updated lock data for the next operation to maintain field number stability
278
+ currentLockData = result.lockData;
279
+ }
280
+ catch (error) {
281
+ throw new Error(`Failed to process operation file ${filename}: ${error instanceof Error ? error.message : String(error)}`);
282
+ }
283
+ }
284
+ // Merge all proto ASTs into a single root
285
+ const mergedRoot = mergeProtoRoots(roots, serviceName);
286
+ // Convert the merged AST to proto text once
287
+ const mergedProto = rootToProtoText(mergedRoot, {
288
+ packageName: packageName || 'service.v1',
289
+ ...languageOptions,
290
+ includeComments: true,
291
+ });
292
+ return {
293
+ mapping: null,
294
+ proto: mergedProto,
295
+ lockData: currentLockData !== null && currentLockData !== void 0 ? currentLockData : null,
296
+ isOperationsMode: true,
297
+ };
298
+ }
299
+ /**
300
+ * Generate proto and mapping from GraphQL SDL
301
+ * @param schema - The GraphQL schema content
302
+ * @param serviceName - The name of the proto service
303
+ * @param spinner - The spinner instance for progress updates
304
+ * @param packageName - The proto package name
305
+ * @param languageOptions - Language-specific proto options
306
+ * @param lockFile - Path to the proto lock file
307
+ * @returns Generation result with proto, mapping, and lock data
308
+ */
309
+ async function generateFromSDL(schema, serviceName, spinner, packageName, languageOptions, lockFile) {
74
310
  spinner.text = 'Generating mapping and proto files...';
75
311
  const lockData = await fetchLockData(lockFile);
76
- // Validate the GraphQL schema and render results
77
- spinner.text = 'Validating GraphQL schema...';
78
- const validationResult = validateGraphQLSDL(schema);
79
- renderValidationResults(validationResult, schemaFile);
80
- // Continue with generation if validation passed (no errors)
81
- spinner.text = 'Generating mapping and proto files...';
82
312
  const mapping = compileGraphQLToMapping(schema, serviceName);
83
313
  const protoOptions = [];
84
- if (goPackage) {
85
- protoOptions.push(getGoModulePathProtoOption(goPackage));
314
+ if (languageOptions.goPackage) {
315
+ protoOptions.push(getGoModulePathProtoOption(languageOptions.goPackage));
316
+ }
317
+ if (languageOptions.javaPackage) {
318
+ protoOptions.push({ name: 'java_package', constant: `"${languageOptions.javaPackage}"` });
319
+ }
320
+ if (languageOptions.javaOuterClassname) {
321
+ protoOptions.push({ name: 'java_outer_classname', constant: `"${languageOptions.javaOuterClassname}"` });
322
+ }
323
+ if (languageOptions.javaMultipleFiles !== undefined) {
324
+ protoOptions.push({ name: 'java_multiple_files', constant: String(languageOptions.javaMultipleFiles) });
325
+ }
326
+ if (languageOptions.csharpNamespace) {
327
+ protoOptions.push({ name: 'csharp_namespace', constant: `"${languageOptions.csharpNamespace}"` });
328
+ }
329
+ if (languageOptions.rubyPackage) {
330
+ protoOptions.push({ name: 'ruby_package', constant: `"${languageOptions.rubyPackage}"` });
331
+ }
332
+ if (languageOptions.phpNamespace) {
333
+ protoOptions.push({ name: 'php_namespace', constant: `"${languageOptions.phpNamespace}"` });
334
+ }
335
+ if (languageOptions.phpMetadataNamespace) {
336
+ protoOptions.push({ name: 'php_metadata_namespace', constant: `"${languageOptions.phpMetadataNamespace}"` });
337
+ }
338
+ if (languageOptions.objcClassPrefix) {
339
+ protoOptions.push({ name: 'objc_class_prefix', constant: `"${languageOptions.objcClassPrefix}"` });
340
+ }
341
+ if (languageOptions.swiftPrefix) {
342
+ protoOptions.push({ name: 'swift_prefix', constant: `"${languageOptions.swiftPrefix}"` });
86
343
  }
87
344
  const proto = compileGraphQLToProto(schema, {
88
345
  serviceName,
@@ -94,8 +351,30 @@ async function generateProtoAndMapping({ name, outdir, schemaFile, spinner, pack
94
351
  mapping: JSON.stringify(mapping, null, 2),
95
352
  proto: proto.proto,
96
353
  lockData: proto.lockData,
354
+ isOperationsMode: false,
97
355
  };
98
356
  }
357
+ /**
358
+ * Generate proto and mapping data from schema
359
+ * @param options - Generation options including schema file, output directory, and configuration
360
+ * @returns Generation result with proto content, optional mapping, and lock data
361
+ */
362
+ async function generateProtoAndMapping({ name, outdir, schemaFile, spinner, packageName, languageOptions, lockFile = resolve(outdir, 'service.proto.lock.json'), operationsDir, customScalarMappings, maxDepth, prefixOperationType, }) {
363
+ const schema = await readFile(schemaFile, 'utf8');
364
+ const serviceName = upperFirst(camelCase(name));
365
+ // Validate the GraphQL schema
366
+ spinner.text = 'Validating GraphQL schema...';
367
+ const validationResult = validateGraphQLSDL(schema);
368
+ renderValidationResults(validationResult, schemaFile);
369
+ // Determine generation mode
370
+ if (operationsDir) {
371
+ const operationsPath = resolve(operationsDir);
372
+ return generateFromOperations(schema, serviceName, operationsPath, spinner, packageName || 'service.v1', languageOptions, lockFile, customScalarMappings, maxDepth, prefixOperationType);
373
+ }
374
+ else {
375
+ return generateFromSDL(schema, serviceName, spinner, packageName, languageOptions, lockFile);
376
+ }
377
+ }
99
378
  async function fetchLockData(lockFile) {
100
379
  if (!(await exists(lockFile))) {
101
380
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/commands/grpc-service/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/commands/grpc-service/commands/generate.ts"],"names":[],"mappings":"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"}