wgc 0.84.2 → 0.85.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/dist/package.json +1 -1
- package/dist/src/commands/grpc-service/commands/generate.js +85 -0
- package/dist/src/commands/grpc-service/commands/generate.js.map +1 -0
- package/dist/src/commands/{router/plugin/commands/test.d.ts → grpc-service/index.d.ts} +1 -1
- package/dist/src/commands/grpc-service/index.js +9 -0
- package/dist/src/commands/grpc-service/index.js.map +1 -0
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/router/commands/compose.js +315 -241
- package/dist/src/commands/router/commands/compose.js.map +1 -1
- package/dist/src/commands/router/commands/plugin/commands/build.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/build.js.map +1 -0
- package/dist/src/commands/router/{plugin → commands/plugin}/commands/init.d.ts +1 -1
- package/dist/src/commands/router/commands/plugin/commands/init.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/commands/test.d.ts +4 -0
- package/dist/src/commands/router/commands/plugin/commands/test.js.map +1 -0
- package/dist/src/commands/router/{plugin → commands/plugin}/helper.js +4 -1
- package/dist/src/commands/router/commands/plugin/helper.js.map +1 -0
- package/dist/src/commands/router/commands/plugin/index.js.map +1 -0
- package/dist/src/commands/router/{plugin → commands/plugin}/templates/plugin.js +4 -4
- package/dist/src/commands/router/commands/plugin/templates/plugin.js.map +1 -0
- package/dist/src/commands/router/{plugin → commands/plugin}/templates/project.js +6 -6
- package/dist/src/commands/router/commands/plugin/templates/project.js.map +1 -0
- package/dist/src/commands/router/{plugin → commands/plugin}/toolchain.js +1 -1
- package/dist/src/commands/router/commands/plugin/toolchain.js.map +1 -0
- package/dist/src/commands/router/index.js +1 -1
- package/dist/src/commands/router/index.js.map +1 -1
- package/dist/src/core/client/client.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/dist/src/commands/router/plugin/commands/build.js.map +0 -1
- package/dist/src/commands/router/plugin/commands/init.js.map +0 -1
- package/dist/src/commands/router/plugin/commands/test.js.map +0 -1
- package/dist/src/commands/router/plugin/helper.js.map +0 -1
- package/dist/src/commands/router/plugin/index.js.map +0 -1
- package/dist/src/commands/router/plugin/templates/plugin.js.map +0 -1
- package/dist/src/commands/router/plugin/templates/project.js.map +0 -1
- package/dist/src/commands/router/plugin/toolchain.js.map +0 -1
- /package/dist/src/commands/{router/plugin/index.d.ts → grpc-service/commands/generate.d.ts} +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/commands/build.js +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/commands/init.js +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/commands/test.js +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/helper.d.ts +0 -0
- /package/dist/src/commands/router/{plugin/commands/build.d.ts → commands/plugin/index.d.ts} +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/index.js +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/templates/plugin.d.ts +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/templates/project.d.ts +0 -0
- /package/dist/src/commands/router/{plugin → commands/plugin}/toolchain.d.ts +0 -0
package/dist/package.json
CHANGED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { existsSync, lstatSync } from 'node:fs';
|
|
3
|
+
import { resolve } from 'pathe';
|
|
4
|
+
import Spinner from 'ora';
|
|
5
|
+
import { Command, program } from 'commander';
|
|
6
|
+
import { compileGraphQLToMapping, compileGraphQLToProto } from '@wundergraph/protographic';
|
|
7
|
+
import { camelCase, upperFirst } from 'lodash-es';
|
|
8
|
+
import { renderResultTree } from '../../router/commands/plugin/helper.js';
|
|
9
|
+
export default (opts) => {
|
|
10
|
+
const command = new Command('generate');
|
|
11
|
+
command.description('Generate a protobuf schema for a remote gRPC service.');
|
|
12
|
+
command.argument('[name]', 'The name of the proto service.');
|
|
13
|
+
command.requiredOption('-i, --input <path-to-input>', 'The GraphQL schema file to generate a protobuf schema from.');
|
|
14
|
+
command.option('-o, --output <path-to-output>', 'The output directory for the protobuf schema. (default ".").', '.');
|
|
15
|
+
command.option('-p, --package-name <name>', 'The name of the proto package. (default "service.v1")', 'service.v1');
|
|
16
|
+
command.option('-g, --go-package <name>', 'Adds an `option go_package` to the proto file.');
|
|
17
|
+
command.action(generateCommandAction);
|
|
18
|
+
return command;
|
|
19
|
+
};
|
|
20
|
+
async function generateCommandAction(name, options) {
|
|
21
|
+
if (!name) {
|
|
22
|
+
program.error('A name is required for the proto service');
|
|
23
|
+
}
|
|
24
|
+
const spinner = Spinner();
|
|
25
|
+
spinner.start('Generating protobuf schema...');
|
|
26
|
+
try {
|
|
27
|
+
const inputFile = resolve(options.input);
|
|
28
|
+
if (!existsSync(options.output)) {
|
|
29
|
+
program.error(`Output directory ${options.output} does not exist`);
|
|
30
|
+
}
|
|
31
|
+
if (!lstatSync(options.output).isDirectory()) {
|
|
32
|
+
program.error(`Output directory ${options.output} is not a directory`);
|
|
33
|
+
}
|
|
34
|
+
if (!existsSync(inputFile)) {
|
|
35
|
+
program.error(`Input file ${options.input} does not exist`);
|
|
36
|
+
}
|
|
37
|
+
const result = await generateProtoAndMapping(options.output, inputFile, name, options, spinner);
|
|
38
|
+
// Write the generated files
|
|
39
|
+
await writeFile(resolve(options.output, 'mapping.json'), result.mapping);
|
|
40
|
+
await writeFile(resolve(options.output, 'service.proto'), result.proto);
|
|
41
|
+
await writeFile(resolve(options.output, 'service.proto.lock.json'), JSON.stringify(result.lockData, null, 2));
|
|
42
|
+
renderResultTree(spinner, 'Generated protobuf schema', true, name, {
|
|
43
|
+
'input file': inputFile,
|
|
44
|
+
'output dir': options.output,
|
|
45
|
+
'service name': upperFirst(camelCase(name)) + 'Service',
|
|
46
|
+
generated: 'mapping.json, service.proto, service.proto.lock.json',
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
renderResultTree(spinner, 'Failed to generate protobuf schema', false, name, {
|
|
51
|
+
error: error instanceof Error ? error.message : String(error),
|
|
52
|
+
});
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Generate proto and mapping data from schema
|
|
58
|
+
*/
|
|
59
|
+
async function generateProtoAndMapping(outdir, schemaFile, name, options, spinner) {
|
|
60
|
+
spinner.text = 'Generating proto schema...';
|
|
61
|
+
const lockFile = resolve(outdir, 'service.proto.lock.json');
|
|
62
|
+
const schema = await readFile(schemaFile, 'utf8');
|
|
63
|
+
const serviceName = upperFirst(camelCase(name)) + 'Service';
|
|
64
|
+
spinner.text = 'Generating mapping and proto files...';
|
|
65
|
+
let lockData;
|
|
66
|
+
if (existsSync(lockFile)) {
|
|
67
|
+
const existingLockData = JSON.parse(await readFile(lockFile, 'utf8'));
|
|
68
|
+
if (existingLockData) {
|
|
69
|
+
lockData = existingLockData;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const mapping = compileGraphQLToMapping(schema, serviceName);
|
|
73
|
+
const proto = compileGraphQLToProto(schema, {
|
|
74
|
+
serviceName,
|
|
75
|
+
packageName: options.packageName,
|
|
76
|
+
goPackage: options.goPackage,
|
|
77
|
+
lockData,
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
mapping: JSON.stringify(mapping, null, 2),
|
|
81
|
+
proto: proto.proto,
|
|
82
|
+
lockData: proto.lockData,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../../../src/commands/grpc-service/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import generateCommand from './commands/generate.js';
|
|
3
|
+
export default (opts) => {
|
|
4
|
+
const command = new Command('grpc-service');
|
|
5
|
+
command.description('Manage protobuf schemas for remote gRPC services');
|
|
6
|
+
command.addCommand(generateCommand(opts));
|
|
7
|
+
return command;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/grpc-service/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,eAAe,MAAM,wBAAwB,CAAC;AAErD,eAAe,CAAC,IAAwB,EAAE,EAAE;IAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5C,OAAO,CAAC,WAAW,CAAC,kDAAkD,CAAC,CAAC;IACxE,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1C,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -16,6 +16,7 @@ import FeatureGraphCommands from './feature-subgraph/index.js';
|
|
|
16
16
|
import FeatureFlagCommands from './feature-flag/index.js';
|
|
17
17
|
import ProposalCommands from './proposal/index.js';
|
|
18
18
|
import MCPCommands from './mcp/index.js';
|
|
19
|
+
import GRPCServiceCommands from './grpc-service/index.js';
|
|
19
20
|
const proxyUrl = process.env.HTTPS_PROXY || process.env.HTTP_PROXY;
|
|
20
21
|
if (proxyUrl) {
|
|
21
22
|
// Lazy load undici only when needed
|
|
@@ -73,6 +74,9 @@ program.addCommand(MCPCommands({
|
|
|
73
74
|
program.addCommand(ProposalCommands({
|
|
74
75
|
client,
|
|
75
76
|
}));
|
|
77
|
+
program.addCommand(GRPCServiceCommands({
|
|
78
|
+
client,
|
|
79
|
+
}));
|
|
76
80
|
program.hook('preAction', async () => {
|
|
77
81
|
mkdirSync(configDir, { recursive: true });
|
|
78
82
|
await checkForUpdates();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,iBAAiB,MAAM,4BAA4B,CAAC;AAC3D,OAAO,sBAAsB,MAAM,kCAAkC,CAAC;AACtE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,iBAAiB,MAAM,uBAAuB,CAAC;AACtD,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAC/C,OAAO,cAAc,MAAM,qBAAqB,CAAC;AACjD,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,oBAAoB,MAAM,6BAA6B,CAAC;AAC/D,OAAO,mBAAmB,MAAM,yBAAyB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,WAAW,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/index.ts"],"names":[],"mappings":"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"}
|