@volcengine/tls-observer-opencode-install 0.0.3 → 0.0.4

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @volcengine/tls-observer-opencode-install
2
2
 
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - 兼容 windows 发布
8
+
3
9
  ## 0.0.3
4
10
 
5
11
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1,12 +1,105 @@
1
- import { execFile, execFileSync, spawn } from "node:child_process";
1
+ import { execFileSync } from "node:child_process";
2
2
  import { homedir, tmpdir } from "node:os";
3
3
  import { pathToFileURL } from "node:url";
4
- import { promisify } from "node:util";
5
4
  import promises from "node:readline/promises";
6
5
  import { randomInt } from "node:crypto";
6
+ import * as __rspack_external_cross_spawn_96b24ecb from "cross-spawn";
7
7
  import * as __rspack_external_node_fs_promises_153e37e0 from "node:fs/promises";
8
8
  import * as __rspack_external_node_path_c5b9b54f from "node:path";
9
- const execFileAsync = promisify(execFile);
9
+ var __webpack_modules__ = {};
10
+ var __webpack_module_cache__ = {};
11
+ function __webpack_require__(moduleId) {
12
+ var cachedModule = __webpack_module_cache__[moduleId];
13
+ if (void 0 !== cachedModule) return cachedModule.exports;
14
+ var module = __webpack_module_cache__[moduleId] = {
15
+ exports: {}
16
+ };
17
+ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
18
+ return module.exports;
19
+ }
20
+ __webpack_require__.m = __webpack_modules__;
21
+ (()=>{
22
+ __webpack_require__.add = function(modules) {
23
+ Object.assign(__webpack_require__.m, modules);
24
+ };
25
+ })();
26
+ __webpack_require__.add({
27
+ "cross-spawn" (module) {
28
+ module.exports = __rspack_external_cross_spawn_96b24ecb;
29
+ },
30
+ "../tls-observer-shared/src/cross-platform-spawn.cjs" (__unused_rspack_module, exports, __webpack_require__) {
31
+ const crossSpawnModule = __webpack_require__("cross-spawn");
32
+ const crossSpawn = crossSpawnModule.default ?? crossSpawnModule;
33
+ const DEFAULT_MAX_BUFFER = 1048576;
34
+ function outputTooLargeError(command, maxBuffer) {
35
+ const error = new Error(`${command} output exceeded ${maxBuffer} bytes`);
36
+ error.code = 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER';
37
+ return error;
38
+ }
39
+ async function runCommand(command, args, options = {}) {
40
+ return new Promise((resolve, reject)=>{
41
+ const child = crossSpawn(command, args, {
42
+ cwd: options.cwd,
43
+ env: options.env,
44
+ stdio: 'inherit' === options.stdio ? 'inherit' : [
45
+ 'ignore',
46
+ 'pipe',
47
+ 'pipe'
48
+ ],
49
+ windowsHide: true
50
+ });
51
+ const maxBuffer = options.maxBuffer ?? DEFAULT_MAX_BUFFER;
52
+ let stdout = '';
53
+ let stderr = '';
54
+ let outputBytes = 0;
55
+ let settled = false;
56
+ let timer;
57
+ const finish = (error)=>{
58
+ if (settled) return;
59
+ settled = true;
60
+ if (timer) clearTimeout(timer);
61
+ if (error) {
62
+ error.stdout ??= stdout;
63
+ error.stderr ??= stderr;
64
+ reject(error);
65
+ } else resolve({
66
+ stdout,
67
+ stderr
68
+ });
69
+ };
70
+ const appendOutput = (target, chunk)=>{
71
+ const text = String(chunk);
72
+ outputBytes += Buffer.byteLength(text);
73
+ if (outputBytes > maxBuffer) {
74
+ child.kill();
75
+ finish(outputTooLargeError(command, maxBuffer));
76
+ return;
77
+ }
78
+ if ('stdout' === target) stdout += text;
79
+ else stderr += text;
80
+ };
81
+ child.stdout?.on('data', (chunk)=>appendOutput('stdout', chunk));
82
+ child.stderr?.on('data', (chunk)=>appendOutput('stderr', chunk));
83
+ child.once('error', finish);
84
+ child.once('close', (code, signal)=>{
85
+ if (0 === code) return void finish();
86
+ const detail = signal ? `signal ${signal}` : `code ${code}`;
87
+ const error = new Error(`${command} exited with ${detail}`);
88
+ error.code = code;
89
+ finish(error);
90
+ });
91
+ if (options.timeoutMs && options.timeoutMs > 0) timer = setTimeout(()=>{
92
+ child.kill();
93
+ const error = new Error(`${command} timed out after ${options.timeoutMs}ms`);
94
+ error.code = 'ETIMEDOUT';
95
+ finish(error);
96
+ }, options.timeoutMs);
97
+ });
98
+ }
99
+ exports.d = runCommand;
100
+ }
101
+ });
102
+ const cross_platform_spawn = __webpack_require__("../tls-observer-shared/src/cross-platform-spawn.cjs");
10
103
  const PLUGIN_NAME = 'tls-observer-opencode';
11
104
  const PLUGIN_PACKAGE_NAME = '@volcengine/tls-observer-opencode';
12
105
  const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
@@ -480,7 +573,6 @@ function pluginPackageSpec(options) {
480
573
  async function installPluginPackageToTemp(options) {
481
574
  const root = await __rspack_external_node_fs_promises_153e37e0.mkdtemp(__rspack_external_node_path_c5b9b54f.join(tmpdir(), 'tls-observer-opencode-plugin-'));
482
575
  const packageSpec = pluginPackageSpec(options);
483
- const npm = 'win32' === process.platform ? 'npm.cmd' : 'npm';
484
576
  const args = [
485
577
  'install',
486
578
  '--prefix',
@@ -494,8 +586,8 @@ async function installPluginPackageToTemp(options) {
494
586
  packageSpec
495
587
  ];
496
588
  try {
497
- await execFileAsync(npm, args, {
498
- timeout: 120000
589
+ await (0, cross_platform_spawn.d)('npm', args, {
590
+ timeoutMs: 120000
499
591
  });
500
592
  } catch (error) {
501
593
  const detail = error && 'object' == typeof error && 'stderr' in error ? String(error.stderr || '') : error instanceof Error ? error.message : String(error);
@@ -553,30 +645,20 @@ async function installPlugin(options) {
553
645
  for (const entry of runtimeEntries)await __rspack_external_node_fs_promises_153e37e0.cp(__rspack_external_node_path_c5b9b54f.join(source, entry), __rspack_external_node_path_c5b9b54f.join(options.pluginTarget, entry), {
554
646
  recursive: true
555
647
  });
556
- const npm = 'win32' === process.platform ? 'npm.cmd' : 'npm';
557
648
  console.log('插件依赖安装中,请稍后...');
558
649
  try {
559
- await new Promise((resolve, reject)=>{
560
- const child = spawn(npm, [
561
- 'install',
562
- '--omit=dev',
563
- "--ignore-scripts",
564
- '--no-audit',
565
- '--no-fund'
566
- ], {
567
- cwd: options.pluginTarget,
568
- stdio: 'inherit'
569
- });
570
- const timer = setTimeout(()=>{
571
- child.kill();
572
- reject(new Error("npm install timed out after 120s"));
573
- }, 120000);
574
- child.on('exit', (code)=>{
575
- clearTimeout(timer);
576
- if (0 === code) resolve();
577
- else reject(new Error(`npm install exited with code ${code}`));
578
- });
579
- child.on('error', reject);
650
+ await (0, cross_platform_spawn.d)('npm', [
651
+ 'install',
652
+ '--omit=dev',
653
+ "--ignore-scripts",
654
+ '--no-audit',
655
+ '--no-fund',
656
+ '--registry',
657
+ options.registry
658
+ ], {
659
+ cwd: options.pluginTarget,
660
+ stdio: 'inherit',
661
+ timeoutMs: 120000
580
662
  });
581
663
  } catch (error) {
582
664
  const detail = error && 'object' == typeof error && 'stderr' in error ? String(error.stderr || '') : error instanceof Error ? error.message : String(error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volcengine/tls-observer-opencode-install",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "One-step installer for the TLS Observer OpenCode plugin.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,13 +19,15 @@
19
19
  "node": ">=18"
20
20
  },
21
21
  "dependencies": {
22
- "@volcengine/openapi": "^1.36.1"
22
+ "@volcengine/openapi": "^1.36.1",
23
+ "cross-spawn": "7.0.6"
23
24
  },
24
25
  "devDependencies": {
25
26
  "@rslib/core": "^0.21.5",
26
27
  "@types/node": "^24.10.9",
27
28
  "prettier": "^3.4.2",
28
- "typescript": "^6.0.3"
29
+ "typescript": "^6.0.3",
30
+ "@volcengine/tls-observer-shared": "0.0.1"
29
31
  },
30
32
  "publishConfig": {
31
33
  "access": "public"
@@ -1,11 +1,11 @@
1
1
  import * as fs from 'node:fs/promises';
2
2
  import * as path from 'node:path';
3
- import { execFile, execFileSync, spawn } from 'node:child_process';
3
+ import { execFileSync } from 'node:child_process';
4
4
  import { homedir, tmpdir } from 'node:os';
5
5
  import { pathToFileURL } from 'node:url';
6
- import { promisify } from 'node:util';
7
6
  import readline from 'node:readline/promises';
8
7
  import { randomInt } from 'node:crypto';
8
+ import { runCommand } from '@volcengine/tls-observer-shared/cross-platform-spawn';
9
9
 
10
10
  type AnyRecord = Record<string, any>;
11
11
 
@@ -68,7 +68,6 @@ type PluginInstallResult = {
68
68
  version?: string;
69
69
  };
70
70
 
71
- const execFileAsync = promisify(execFile);
72
71
  const PLUGIN_NAME = 'tls-observer-opencode';
73
72
  const PLUGIN_PACKAGE_NAME = '@volcengine/tls-observer-opencode';
74
73
  const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
@@ -620,7 +619,6 @@ async function installPluginPackageToTemp(options: InstallOptions): Promise<{
620
619
  }> {
621
620
  const root = await fs.mkdtemp(path.join(tmpdir(), 'tls-observer-opencode-plugin-'));
622
621
  const packageSpec = pluginPackageSpec(options);
623
- const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
624
622
  const args = [
625
623
  'install',
626
624
  '--prefix',
@@ -635,7 +633,7 @@ async function installPluginPackageToTemp(options: InstallOptions): Promise<{
635
633
  ];
636
634
 
637
635
  try {
638
- await execFileAsync(npm, args, { timeout: 120_000 });
636
+ await runCommand('npm', args, { timeoutMs: 120_000 });
639
637
  } catch (error) {
640
638
  const detail =
641
639
  error && typeof error === 'object' && 'stderr' in error
@@ -695,25 +693,25 @@ async function installPlugin(options: InstallOptions): Promise<PluginInstallResu
695
693
  for (const entry of runtimeEntries) {
696
694
  await fs.cp(path.join(source, entry), path.join(options.pluginTarget, entry), { recursive: true });
697
695
  }
698
- const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
699
696
  console.log('插件依赖安装中,请稍后...');
700
697
  try {
701
- await new Promise<void>((resolve, reject) => {
702
- const child = spawn(npm, ['install', '--omit=dev', '--ignore-scripts', '--no-audit', '--no-fund'], {
698
+ await runCommand(
699
+ 'npm',
700
+ [
701
+ 'install',
702
+ '--omit=dev',
703
+ '--ignore-scripts',
704
+ '--no-audit',
705
+ '--no-fund',
706
+ '--registry',
707
+ options.registry,
708
+ ],
709
+ {
703
710
  cwd: options.pluginTarget,
704
711
  stdio: 'inherit',
705
- });
706
- const timer = setTimeout(() => {
707
- child.kill();
708
- reject(new Error(`npm install timed out after 120s`));
709
- }, 120_000);
710
- child.on('exit', (code) => {
711
- clearTimeout(timer);
712
- if (code === 0) resolve();
713
- else reject(new Error(`npm install exited with code ${code}`));
714
- });
715
- child.on('error', reject);
716
- });
712
+ timeoutMs: 120_000,
713
+ },
714
+ );
717
715
  } catch (error) {
718
716
  const detail =
719
717
  error && typeof error === 'object' && 'stderr' in error