wgc 0.95.0 → 0.96.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.
Files changed (28) hide show
  1. package/dist/package.json +4 -1
  2. package/dist/src/commands/grpc-service/commands/generate.js +6 -1
  3. package/dist/src/commands/grpc-service/commands/generate.js.map +1 -1
  4. package/dist/src/commands/router/commands/plugin/commands/build.js +44 -19
  5. package/dist/src/commands/router/commands/plugin/commands/build.js.map +1 -1
  6. package/dist/src/commands/router/commands/plugin/commands/generate.js +32 -10
  7. package/dist/src/commands/router/commands/plugin/commands/generate.js.map +1 -1
  8. package/dist/src/commands/router/commands/plugin/commands/init.js +79 -48
  9. package/dist/src/commands/router/commands/plugin/commands/init.js.map +1 -1
  10. package/dist/src/commands/router/commands/plugin/commands/test.js +36 -7
  11. package/dist/src/commands/router/commands/plugin/commands/test.js.map +1 -1
  12. package/dist/src/commands/router/commands/plugin/templates/go.d.ts +9 -0
  13. package/dist/src/commands/router/commands/plugin/templates/go.js +18 -0
  14. package/dist/src/commands/router/commands/plugin/templates/go.js.map +1 -0
  15. package/dist/src/commands/router/commands/plugin/templates/plugin.d.ts +3 -8
  16. package/dist/src/commands/router/commands/plugin/templates/plugin.js +11 -424
  17. package/dist/src/commands/router/commands/plugin/templates/plugin.js.map +1 -1
  18. package/dist/src/commands/router/commands/plugin/templates/project.d.ts +5 -5
  19. package/dist/src/commands/router/commands/plugin/templates/project.js +14 -200
  20. package/dist/src/commands/router/commands/plugin/templates/project.js.map +1 -1
  21. package/dist/src/commands/router/commands/plugin/templates/typescript.d.ts +14 -0
  22. package/dist/src/commands/router/commands/plugin/templates/typescript.js +28 -0
  23. package/dist/src/commands/router/commands/plugin/templates/typescript.js.map +1 -0
  24. package/dist/src/commands/router/commands/plugin/toolchain.d.ts +25 -6
  25. package/dist/src/commands/router/commands/plugin/toolchain.js +334 -78
  26. package/dist/src/commands/router/commands/plugin/toolchain.js.map +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/package.json +6 -3
@@ -1,4 +1,4 @@
1
- import { chmod, mkdir, readFile, rm, writeFile } from 'node:fs/promises';
1
+ import { chmod, mkdir, readFile, rm, writeFile, copyFile } from 'node:fs/promises';
2
2
  import os from 'node:os';
3
3
  import { existsSync } from 'node:fs';
4
4
  import { basename, join, resolve } from 'pathe';
@@ -8,22 +8,97 @@ import { compileGraphQLToMapping, compileGraphQLToProto, validateGraphQLSDL, } f
8
8
  import prompts from 'prompts';
9
9
  import semver from 'semver';
10
10
  import { camelCase, upperFirst } from 'lodash-es';
11
+ import pupa from 'pupa';
11
12
  import { dataDir } from '../../../../core/config.js';
13
+ import TsTemplates from './templates/typescript.js';
12
14
  import { renderValidationResults } from './helper.js';
13
15
  // Define platform-architecture combinations
14
- export const HOST_PLATFORM = `${os.platform()}-${getOSArch()}`;
15
- const ALL_PLATFORMS = ['linux-amd64', 'linux-arm64', 'darwin-amd64', 'darwin-arm64', 'windows-amd64'];
16
- const installScriptUrl = 'https://raw.githubusercontent.com/wundergraph/cosmo/refs/tags/wgc%400.80.0/scripts/install-proto-tools.sh';
16
+ export function getHostPlatform(language) {
17
+ const basePlatform = `${os.platform()}-${getOSArch(language)}`;
18
+ if (language === 'ts') {
19
+ return `bun-${basePlatform}`;
20
+ }
21
+ return basePlatform;
22
+ }
23
+ const ALL_GO_PLATFORMS = ['linux-amd64', 'linux-arm64', 'darwin-amd64', 'darwin-arm64', 'windows-amd64'];
24
+ // Both bun-linux-x64 share the same bun-linux-x64-musl target name of linux-amd64, thus we prefer musl, since it seems to be
25
+ // more compatible, users can still override this by explicitly specifying what they want
26
+ const ALL_BUN_PLATFORMS = [
27
+ 'bun-linux-x64-musl',
28
+ 'bun-linux-arm64-musl',
29
+ 'bun-windows-x64',
30
+ 'bun-darwin-arm64',
31
+ 'bun-darwin-x64',
32
+ ];
33
+ const ALL_BUN_PLATFORM_MAPPINGS = {
34
+ 'bun-linux-x64': 'linux-amd64',
35
+ 'bun-linux-arm64': 'linux-arm64',
36
+ 'bun-darwin-x64': 'darwin-amd64',
37
+ 'bun-darwin-arm64': 'darwin-arm64',
38
+ 'bun-windows-x64': 'windows-amd64',
39
+ 'bun-linux-x64-musl': 'linux-amd64',
40
+ 'bun-linux-arm64-musl': 'linux-arm64',
41
+ };
42
+ const installScriptUrl = 'https://raw.githubusercontent.com/wundergraph/cosmo/refs/tags/wgc%400.96.0/scripts/install-proto-tools.sh';
43
+ const defaultGoModulePath = 'github.com/wundergraph/cosmo/plugin';
17
44
  // Get paths for tool installation
18
45
  const TOOLS_DIR = join(dataDir, 'proto-tools');
19
46
  const TOOLS_BIN_DIR = join(TOOLS_DIR, 'bin');
20
47
  const TOOLS_VERSIONS_FILE = join(TOOLS_DIR, 'versions.json');
48
+ const COMMON_TOOL_VERSIONS = {
49
+ protoc: {
50
+ range: '^29.3',
51
+ envVar: 'PROTOC_VERSION',
52
+ scriptVersion: '29.3',
53
+ versionCommand: 'protoc',
54
+ versionFlag: '--version',
55
+ },
56
+ };
21
57
  // Exact tool versions to be installed for the script, but you can specify a semver range to express compatibility
22
- const TOOL_VERSIONS = {
23
- protoc: { range: '^29.3', envVar: 'PROTOC_VERSION', scriptVersion: '29.3' },
24
- protocGenGo: { range: '^1.34.2', envVar: 'PROTOC_GEN_GO_VERSION', scriptVersion: '1.34.2' },
25
- protocGenGoGrpc: { range: '^1.5.1', envVar: 'PROTOC_GEN_GO_GRPC_VERSION', scriptVersion: '1.5.1' },
26
- go: { range: '>=1.22.0', envVar: 'GO_VERSION', scriptVersion: '1.24.1' },
58
+ const GO_TOOL_VERSIONS = {
59
+ go: {
60
+ range: '>=1.22.0',
61
+ envVar: 'GO_VERSION',
62
+ scriptVersion: '1.24.1',
63
+ versionCommand: 'go',
64
+ versionFlag: 'version',
65
+ },
66
+ protocGenGo: {
67
+ range: '^1.34.2',
68
+ envVar: 'PROTOC_GEN_GO_VERSION',
69
+ scriptVersion: '1.34.2',
70
+ versionCommand: 'protoc-gen-go',
71
+ versionFlag: '--version',
72
+ },
73
+ protocGenGoGrpc: {
74
+ range: '^1.5.1',
75
+ envVar: 'PROTOC_GEN_GO_GRPC_VERSION',
76
+ scriptVersion: '1.5.1',
77
+ versionCommand: 'protoc-gen-go-grpc',
78
+ versionFlag: '--version',
79
+ },
80
+ };
81
+ const TS_TOOL_VERSIONS = {
82
+ bun: {
83
+ range: '^1.2.15',
84
+ envVar: 'BUN_VERSION',
85
+ scriptVersion: '1.2.15',
86
+ versionCommand: 'bun',
87
+ versionFlag: '--version',
88
+ },
89
+ // Node is needed for the protoc-gen-js plugins, for runtime we still only use bun
90
+ node: {
91
+ range: '^22.12.0',
92
+ envVar: 'NODE_VERSION',
93
+ scriptVersion: '22.12.0',
94
+ versionCommand: 'node',
95
+ versionFlag: '--version',
96
+ },
97
+ };
98
+ // We combine all tool versions here, per language
99
+ const LanguageSpecificTools = {
100
+ go: { ...COMMON_TOOL_VERSIONS, ...GO_TOOL_VERSIONS },
101
+ ts: { ...COMMON_TOOL_VERSIONS, ...TS_TOOL_VERSIONS },
27
102
  };
28
103
  /**
29
104
  * Get the path to a tool, preferring the installed version if available
@@ -31,8 +106,11 @@ const TOOL_VERSIONS = {
31
106
  function getToolPath(toolName) {
32
107
  return existsSync(join(TOOLS_BIN_DIR, toolName)) ? join(TOOLS_BIN_DIR, toolName) : toolName;
33
108
  }
34
- function getOSArch() {
109
+ function getOSArch(language) {
35
110
  const arch = os.arch();
111
+ if (language !== 'go') {
112
+ return arch;
113
+ }
36
114
  if (arch === 'x64') {
37
115
  return 'amd64';
38
116
  }
@@ -41,10 +119,10 @@ function getOSArch() {
41
119
  /**
42
120
  * Check if tools need to be reinstalled by comparing version matrices
43
121
  */
44
- async function shouldReinstallTools(force = false) {
45
- // If forcing reinstallation, return true
122
+ async function shouldReinstallTools(force = false, language) {
123
+ // If forcing reinstallation, return true for both
46
124
  if (force) {
47
- return true;
125
+ return [true, true];
48
126
  }
49
127
  // If a version file exists, we assume the user manages the tools via toolchain
50
128
  if (existsSync(TOOLS_VERSIONS_FILE)) {
@@ -52,77 +130,95 @@ async function shouldReinstallTools(force = false) {
52
130
  // Read stored versions and compare with current versions
53
131
  const storedVersionsStr = await readFile(TOOLS_VERSIONS_FILE, 'utf8');
54
132
  const storedVersions = JSON.parse(storedVersionsStr);
55
- // Compare each tool version
56
- for (const [tool, version] of Object.entries(TOOL_VERSIONS)) {
57
- // Check if the stored exact version satisfies the required range
58
- if (!storedVersions[tool] || !isSemverSatisfied(storedVersions[tool], version.range)) {
59
- console.log(pc.yellow(`Version mismatch for ${tool}: found ${storedVersions[tool]}, required ${version.range}. Reinstalling...`));
60
- return true;
133
+ const toolVersionsForLanguage = LanguageSpecificTools[language];
134
+ // Separate common tools from language-specific tools
135
+ const commonToolNames = Object.keys(COMMON_TOOL_VERSIONS);
136
+ const languageSpecificToolNames = Object.keys(toolVersionsForLanguage).filter((tool) => !commonToolNames.includes(tool));
137
+ let commonToolsChanged = false;
138
+ let existingToolsNeedUpdate = false;
139
+ let newToolsNeeded = false;
140
+ // Check if common tools have changed versions
141
+ for (const commonTool of commonToolNames) {
142
+ const toolConfig = toolVersionsForLanguage[commonTool];
143
+ if (!toolConfig) {
144
+ continue;
145
+ }
146
+ const storedVersion = storedVersions[commonTool];
147
+ if (!storedVersion) {
148
+ commonToolsChanged = true;
149
+ break;
150
+ }
151
+ if (!isSemverSatisfied(storedVersion, toolConfig.range)) {
152
+ console.log(pc.yellow(`Common tool ${commonTool} version mismatch: found ${storedVersion}, required ${toolConfig.range}. Reinstalling...`));
153
+ commonToolsChanged = true;
154
+ break;
61
155
  }
62
156
  }
63
- // Check for any new tools that weren't in the stored versions
64
- for (const tool of Object.keys(TOOL_VERSIONS)) {
65
- if (!(tool in storedVersions)) {
66
- return true;
157
+ // Check language-specific tools
158
+ for (const langTool of languageSpecificToolNames) {
159
+ const toolConfig = toolVersionsForLanguage[langTool];
160
+ const storedVersion = storedVersions[langTool];
161
+ if (!storedVersion) {
162
+ // Tool not installed - this is a new language being added
163
+ console.log(pc.yellow(`Language-specific tool ${langTool} not found. Installing ${language} toolchain...`));
164
+ newToolsNeeded = true;
165
+ }
166
+ else if (!isSemverSatisfied(storedVersion, toolConfig.range)) {
167
+ // Tool exists but needs update
168
+ console.log(pc.yellow(`Language-specific tool ${langTool} version mismatch: found ${storedVersion}, required ${toolConfig.range}. Reinstalling...`));
169
+ existingToolsNeedUpdate = true;
170
+ break;
67
171
  }
68
172
  }
69
- // If we got here, all versions match
70
- return false;
173
+ // Determine if we need to reinstall and cleanup
174
+ const shouldReinstall = commonToolsChanged || existingToolsNeedUpdate || newToolsNeeded;
175
+ if (!shouldReinstall) {
176
+ return [false, false];
177
+ }
178
+ // Only cleanup if common tools changed or existing tools need update, not for new tools
179
+ const shouldCleanup = commonToolsChanged || existingToolsNeedUpdate;
180
+ return [shouldReinstall, shouldCleanup];
71
181
  }
72
182
  catch {
73
183
  // If any error occurs during version checking, assume reinstallation is needed
74
- return true;
184
+ return [true, true];
75
185
  }
76
186
  }
77
187
  // if we haven't installed the tools yet, we check first if the tools are installed on the host system,
78
188
  // and if they are not, we need to install them through the toolchain installation
79
189
  try {
80
- const toolsOnHost = await areToolsInstalledOnHost();
190
+ const toolsOnHost = await areToolsInstalledOnHost(language);
81
191
  if (toolsOnHost) {
82
- return false;
192
+ return [false, false];
83
193
  }
84
- return true;
194
+ return [true, true]; // Fresh install, cleanup needed
85
195
  }
86
196
  catch {
87
197
  // If error checking host tools, installation is needed
88
- return true;
198
+ return [true, true];
89
199
  }
90
200
  }
91
201
  /**
92
202
  * Check if all required tools are installed on the host system with correct versions
93
203
  */
94
- async function areToolsInstalledOnHost() {
204
+ async function areToolsInstalledOnHost(language) {
205
+ const languageSpecificTools = LanguageSpecificTools[language];
206
+ if (!languageSpecificTools) {
207
+ console.log(pc.yellow(`No toolchain configuration found for language '${language}'.`));
208
+ return false;
209
+ }
95
210
  try {
96
- // Check Go version
97
- const goVersion = await getCommandVersion('go', 'version');
98
- if (!isSemverSatisfied(goVersion, TOOL_VERSIONS.go.range)) {
99
- console.log(pc.yellow(`Go version mismatch: found ${goVersion}, required ${TOOL_VERSIONS.go.range}`));
100
- return false;
101
- }
102
- // Check Protoc version
103
- const protocVersion = await getCommandVersion('protoc', '--version');
104
- if (!isSemverSatisfied(protocVersion, TOOL_VERSIONS.protoc.range)) {
105
- console.log(pc.yellow(`Protoc version mismatch: found ${protocVersion}, required ${TOOL_VERSIONS.protoc.range}`));
106
- return false;
107
- }
108
- // Check protoc-gen-go version
109
- // The output format is typically "protoc-gen-go v1.36.5"
110
- const protocGenGoVersion = await getCommandVersion('protoc-gen-go', '--version');
111
- if (!isSemverSatisfied(protocGenGoVersion, TOOL_VERSIONS.protocGenGo.range)) {
112
- console.log(pc.yellow(`protoc-gen-go version mismatch: found ${protocGenGoVersion}, required ${TOOL_VERSIONS.protocGenGo.range}`));
113
- return false;
114
- }
115
- // Check protoc-gen-go-grpc version
116
- // The output format is typically "protoc-gen-go-grpc 1.5.1"
117
- const protocGenGoGrpcVersion = await getCommandVersion('protoc-gen-go-grpc', '--version');
118
- if (!isSemverSatisfied(protocGenGoGrpcVersion, TOOL_VERSIONS.protocGenGoGrpc.range)) {
119
- console.log(pc.yellow(`protoc-gen-go-grpc version mismatch: found ${protocGenGoGrpcVersion}, required ${TOOL_VERSIONS.protocGenGoGrpc.range}`));
120
- return false;
211
+ for (const [toolName, toolConfig] of Object.entries(languageSpecificTools)) {
212
+ const installedVersion = await getCommandVersion(toolConfig.versionCommand, toolConfig.versionFlag);
213
+ if (!isSemverSatisfied(installedVersion, toolConfig.range)) {
214
+ console.log(pc.yellow(`${pc.bold(toolName)} version mismatch on host: found ${installedVersion}, required ${toolConfig.range}`));
215
+ return false;
216
+ }
121
217
  }
122
218
  return true;
123
219
  }
124
220
  catch (error) {
125
- console.log(pc.yellow(`Error checking tools: ${error.message}`));
221
+ console.log(pc.yellow(`Error checking tools for language '${language}': ${error.message}`));
126
222
  return false;
127
223
  }
128
224
  }
@@ -176,11 +272,22 @@ async function getCommandVersion(command, versionFlag) {
176
272
  throw new Error(`Failed to get version for ${command}: ${error}`);
177
273
  }
178
274
  }
275
+ export function validateAndGetGoModulePath(language, goModulePath) {
276
+ if (language === 'go') {
277
+ if (goModulePath === undefined) {
278
+ goModulePath = defaultGoModulePath;
279
+ }
280
+ return goModulePath;
281
+ }
282
+ if (goModulePath !== undefined) {
283
+ throw new Error(`Go Module Path not supported for language '${language}'`);
284
+ }
285
+ }
179
286
  /**
180
287
  * Check if tools need installation and ask the user if needed
181
288
  */
182
- export async function checkAndInstallTools(force = false) {
183
- const needsReinstall = await shouldReinstallTools(force);
289
+ export async function checkAndInstallTools(force = false, language) {
290
+ const [needsReinstall, shouldCleanup] = await shouldReinstallTools(force, language);
184
291
  if (!needsReinstall) {
185
292
  return true;
186
293
  }
@@ -188,8 +295,9 @@ export async function checkAndInstallTools(force = false) {
188
295
  const installMessage = existsSync(TOOLS_DIR)
189
296
  ? 'Version changes detected. Install required toolchain?'
190
297
  : 'Install required toolchain?';
298
+ const toolVersionsForLanguage = LanguageSpecificTools[language];
191
299
  // Create a more informative message with simple formatting
192
- const toolsInfo = Object.entries(TOOL_VERSIONS)
300
+ const toolsInfo = Object.entries(toolVersionsForLanguage)
193
301
  .map(([tool, { range: version }]) => ` ${pc.cyan('•')} ${pc.bold(tool)}: ${version}`)
194
302
  .join('\n');
195
303
  console.log(pc.yellow('\n=== Required Toolchain ===') +
@@ -212,7 +320,7 @@ export async function checkAndInstallTools(force = false) {
212
320
  return false;
213
321
  }
214
322
  try {
215
- await installTools();
323
+ await installTools(language, shouldCleanup);
216
324
  return true;
217
325
  }
218
326
  catch (error) {
@@ -236,11 +344,11 @@ function getToolsEnv() {
236
344
  /**
237
345
  * Install tools using the install-proto-tools.sh script
238
346
  */
239
- async function installTools() {
347
+ async function installTools(language, shouldCleanup) {
240
348
  const tmpDir = join(TOOLS_DIR, 'download');
241
349
  const scriptPath = join(tmpDir, 'install-proto-tools.sh');
242
350
  // Make installation idempotent - remove existing tools directory if it exists
243
- if (existsSync(TOOLS_DIR)) {
351
+ if (shouldCleanup && existsSync(TOOLS_DIR)) {
244
352
  try {
245
353
  await rm(TOOLS_DIR, { recursive: true, force: true });
246
354
  }
@@ -269,11 +377,14 @@ async function installTools() {
269
377
  ...process.env,
270
378
  INSTALL_DIR: TOOLS_DIR,
271
379
  PRINT_INSTRUCTIONS: 'false',
380
+ LANGUAGE: language,
381
+ INSTALL_COMMON_TOOLS: shouldCleanup ? 'true' : 'false',
272
382
  };
273
383
  // Store exact versions that we install
274
384
  const exactVersions = {};
385
+ const toolVersions = LanguageSpecificTools[language];
275
386
  // Add version variables to env
276
- for (const [tool, version] of Object.entries(TOOL_VERSIONS)) {
387
+ for (const [tool, version] of Object.entries(toolVersions)) {
277
388
  env[version.envVar] = version.scriptVersion;
278
389
  exactVersions[tool] = version.scriptVersion;
279
390
  }
@@ -295,7 +406,7 @@ async function installTools() {
295
406
  /**
296
407
  * Generate proto and mapping files from schema
297
408
  */
298
- export async function generateProtoAndMapping(pluginDir, goModulePath, spinner) {
409
+ export async function generateProtoAndMapping(pluginDir, protoOptions, spinner) {
299
410
  const srcDir = resolve(pluginDir, 'src');
300
411
  const generatedDir = resolve(pluginDir, 'generated');
301
412
  // Ensure a generated directory exists
@@ -322,7 +433,7 @@ export async function generateProtoAndMapping(pluginDir, goModulePath, spinner)
322
433
  const proto = compileGraphQLToProto(schema, {
323
434
  serviceName,
324
435
  packageName: 'service',
325
- goPackage: goModulePath,
436
+ protoOptions,
326
437
  lockData,
327
438
  });
328
439
  await writeFile(resolve(generatedDir, 'service.proto'), proto.proto);
@@ -332,18 +443,50 @@ export async function generateProtoAndMapping(pluginDir, goModulePath, spinner)
332
443
  /**
333
444
  * Generate gRPC code using protoc
334
445
  */
335
- export async function generateGRPCCode(pluginDir, spinner) {
446
+ export async function generateGRPCCode(pluginDir, spinner, language) {
336
447
  spinner.text = 'Generating gRPC code...\n';
337
448
  const env = getToolsEnv();
338
449
  const protocPath = getToolPath('protoc');
339
450
  console.log('');
340
- await execa(protocPath, [
341
- '--go_out=.',
342
- '--go_opt=paths=source_relative',
343
- '--go-grpc_out=.',
344
- '--go-grpc_opt=paths=source_relative',
345
- 'generated/service.proto',
346
- ], { cwd: pluginDir, stdout: 'inherit', stderr: 'inherit', env });
451
+ switch (language) {
452
+ case 'go': {
453
+ await execa(protocPath, [
454
+ '--go_out=.',
455
+ '--go_opt=paths=source_relative',
456
+ '--go-grpc_out=.',
457
+ '--go-grpc_opt=paths=source_relative',
458
+ 'generated/service.proto',
459
+ ], { cwd: pluginDir, stdout: 'inherit', stderr: 'inherit', env });
460
+ break;
461
+ }
462
+ case 'ts': {
463
+ const protocGenTsPath = resolve(pluginDir, 'node_modules/.bin/protoc-gen-ts');
464
+ const protoGenJsPath = resolve(pluginDir, 'node_modules/.bin/protoc-gen-js');
465
+ const protocGenGrpcPath = resolve(pluginDir, 'node_modules/.bin/grpc_tools_node_protoc_plugin');
466
+ const generatedDir = resolve(pluginDir, 'generated');
467
+ const protoFile = resolve(pluginDir, 'generated/service.proto');
468
+ if (!existsSync(protocGenTsPath)) {
469
+ throw new Error(`protoc-gen-ts not found at ${protocGenTsPath}.`);
470
+ }
471
+ if (!existsSync(protocGenGrpcPath)) {
472
+ throw new Error(`grpc_tools_node_protoc_plugin not found at ${protocGenGrpcPath}.`);
473
+ }
474
+ if (!existsSync(protoGenJsPath)) {
475
+ throw new Error(`protoc-gen-js not found at ${protoGenJsPath}.`);
476
+ }
477
+ await execa(protocPath, [
478
+ `--plugin=protoc-gen-ts=${protocGenTsPath}`,
479
+ `--plugin=protoc-gen-grpc=${protocGenGrpcPath}`,
480
+ `--plugin=protoc-gen-js=${protoGenJsPath}`,
481
+ `--ts_out=grpc_js:${generatedDir}`,
482
+ `--js_out=import_style=commonjs,binary:${generatedDir}`,
483
+ `--grpc_out=grpc_js:${generatedDir}`,
484
+ `--proto_path=${generatedDir}`,
485
+ protoFile,
486
+ ], { cwd: pluginDir, stdout: 'inherit', stderr: 'inherit', env });
487
+ break;
488
+ }
489
+ }
347
490
  }
348
491
  /**
349
492
  * Run Go tests
@@ -363,6 +506,18 @@ export function runGoTests(pluginDir, spinner, debug = false) {
363
506
  env,
364
507
  });
365
508
  }
509
+ export function runTsTests(pluginDir, spinner) {
510
+ spinner.text = 'Running tests...\n';
511
+ const env = getToolsEnv();
512
+ const bunPath = getToolPath('bun');
513
+ const args = ['test'];
514
+ return execa(bunPath, args, {
515
+ cwd: pluginDir,
516
+ stdout: 'inherit',
517
+ stderr: 'inherit',
518
+ env,
519
+ });
520
+ }
366
521
  /**
367
522
  * Install Go dependencies
368
523
  */
@@ -377,10 +532,90 @@ export async function installGoDependencies(pluginDir, spinner) {
377
532
  env,
378
533
  });
379
534
  }
535
+ export async function installTsDependencies(pluginDir, spinner) {
536
+ spinner.text = 'Installing dependencies...\n';
537
+ const env = getToolsEnv();
538
+ const bunPath = getToolPath('bun');
539
+ await execa(bunPath, ['install'], {
540
+ cwd: pluginDir,
541
+ stdout: 'inherit',
542
+ stderr: 'inherit',
543
+ env,
544
+ });
545
+ }
546
+ export function getGoModulePathProtoOption(goModulePath) {
547
+ return {
548
+ name: 'go_package',
549
+ constant: `"${goModulePath}"`,
550
+ };
551
+ }
552
+ /**
553
+ * Run TypeScript type-check (no emit) to fail build on TS errors
554
+ */
555
+ export async function typeCheckTs(pluginDir, spinner) {
556
+ spinner.text = 'Type-checking Plugin...\n';
557
+ const env = getToolsEnv();
558
+ const bunPath = getToolPath('bun');
559
+ // Use `bun x tsc` to ensure TypeScript is available without requiring it as a dependency
560
+ await execa(bunPath, ['x', 'tsc', '--noEmit'], {
561
+ cwd: pluginDir,
562
+ stdout: 'inherit',
563
+ stderr: 'inherit',
564
+ env,
565
+ });
566
+ }
380
567
  /**
381
568
  * Build binaries for specified platforms
382
569
  */
383
- export async function buildBinaries(pluginDir, platforms, debug, spinner) {
570
+ export async function buildTsBinaries(pluginDir, platforms, debug, spinner) {
571
+ spinner.text = 'Building binaries...';
572
+ const binDir = resolve(pluginDir, 'bin');
573
+ await mkdir(binDir, { recursive: true });
574
+ const env = getToolsEnv();
575
+ const bunPath = getToolPath('bun');
576
+ // Ensure grpc-health-check proto is available in bin for runtime
577
+ const healthProtoRelDir = 'grpc-health-check/proto/health/v1';
578
+ const healthProtoFile = 'health.proto';
579
+ await mkdir(resolve(pluginDir, join('bin', healthProtoRelDir)), { recursive: true });
580
+ await copyFile(resolve(pluginDir, join('node_modules', healthProtoRelDir, healthProtoFile)), resolve(pluginDir, join('bin', healthProtoRelDir, healthProtoFile)));
581
+ await Promise.all(platforms.map(async (originalPlatformArch) => {
582
+ const platformArch = ALL_BUN_PLATFORM_MAPPINGS[originalPlatformArch];
583
+ if (!platformArch) {
584
+ throw new Error(`Unsupported platform for Bun: ${originalPlatformArch}`);
585
+ }
586
+ const [platform, arch] = platformArch.split('-');
587
+ if (!platform || !arch) {
588
+ throw new Error(`Invalid platform-architecture format: ${originalPlatformArch}. Use format like 'bun-darwin-arm64'`);
589
+ }
590
+ const binaryName = `${platform}_${arch}`;
591
+ spinner.text = `Building ${originalPlatformArch}...`;
592
+ if (debug) {
593
+ const debugScript = resolve(pluginDir, join('bin', binaryName));
594
+ await writeFile(debugScript, pupa(TsTemplates.debugBuild, {}));
595
+ await chmod(debugScript, 0o755);
596
+ }
597
+ else {
598
+ const flags = [
599
+ 'build',
600
+ 'src/plugin.ts',
601
+ '--compile',
602
+ '--outfile',
603
+ `bin/${binaryName}`,
604
+ `--target=${originalPlatformArch}`,
605
+ ];
606
+ await execa(bunPath, flags, {
607
+ cwd: pluginDir,
608
+ stdout: 'inherit',
609
+ stderr: 'inherit',
610
+ env,
611
+ });
612
+ }
613
+ }));
614
+ }
615
+ /**
616
+ * Build binaries for specified platforms
617
+ */
618
+ export async function buildGoBinaries(pluginDir, platforms, debug, spinner) {
384
619
  spinner.text = 'Building binaries...';
385
620
  const binDir = resolve(pluginDir, 'bin');
386
621
  // Ensure bin directory exists
@@ -416,11 +651,32 @@ export async function buildBinaries(pluginDir, platforms, debug, spinner) {
416
651
  /**
417
652
  * Normalize a platform list based on options
418
653
  */
419
- export function normalizePlatforms(platforms, allPlatforms) {
654
+ export function normalizePlatforms(platforms, allPlatforms, language) {
655
+ if (platforms.length === 0) {
656
+ platforms = [getHostPlatform(language)];
657
+ }
420
658
  if (!allPlatforms) {
421
659
  return platforms;
422
660
  }
423
- // Add all platforms and remove duplicates
424
- return [...new Set([...platforms, ...ALL_PLATFORMS])];
661
+ switch (language) {
662
+ case 'go': {
663
+ return [...new Set([...platforms, ...ALL_GO_PLATFORMS])];
664
+ }
665
+ case 'ts': {
666
+ return [...new Set([...platforms, ...ALL_BUN_PLATFORMS])];
667
+ }
668
+ }
669
+ throw new Error(`Unsupported language for platform normalization: ${language}`);
670
+ }
671
+ export function getLanguage(pluginDir) {
672
+ const goModFile = resolve(pluginDir, 'go.mod');
673
+ const packageJsonFile = resolve(pluginDir, 'package.json');
674
+ if (existsSync(goModFile)) {
675
+ return 'go';
676
+ }
677
+ if (existsSync(packageJsonFile)) {
678
+ return 'ts';
679
+ }
680
+ return null;
425
681
  }
426
682
  //# sourceMappingURL=toolchain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../../../../../src/commands/router/commands/plugin/toolchain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolchain.js","sourceRoot":"","sources":["../../../../../../src/commands/router/commands/plugin/toolchain.ts"],"names":[],"mappings":"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"}