@volcengine/tls-observer-cursor-install 0.0.5 → 0.0.6

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-cursor-install
2
2
 
3
+ ## 0.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 兼容 windows 发布
8
+
3
9
  ## 0.0.5
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-cursor';
11
104
  const PLUGIN_PACKAGE_NAME = '@volcengine/tls-observer-cursor';
12
105
  const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
@@ -487,7 +580,6 @@ function pluginPackageSpec(options) {
487
580
  async function installPluginPackageToTemp(options) {
488
581
  const root = await __rspack_external_node_fs_promises_153e37e0.mkdtemp(__rspack_external_node_path_c5b9b54f.join(tmpdir(), 'tls-observer-cursor-plugin-'));
489
582
  const packageSpec = pluginPackageSpec(options);
490
- const npm = 'win32' === process.platform ? 'npm.cmd' : 'npm';
491
583
  const args = [
492
584
  'install',
493
585
  '--prefix',
@@ -501,8 +593,8 @@ async function installPluginPackageToTemp(options) {
501
593
  packageSpec
502
594
  ];
503
595
  try {
504
- await execFileAsync(npm, args, {
505
- timeout: 120000
596
+ await (0, cross_platform_spawn.d)('npm', args, {
597
+ timeoutMs: 120000
506
598
  });
507
599
  } catch (error) {
508
600
  const detail = error && 'object' == typeof error && 'stderr' in error ? String(error.stderr || '') : error instanceof Error ? error.message : String(error);
@@ -573,30 +665,20 @@ async function installPlugin(options) {
573
665
  recursive: true
574
666
  });
575
667
  await writeHookWrapper(options);
576
- const npm = 'win32' === process.platform ? 'npm.cmd' : 'npm';
577
668
  console.log('插件依赖安装中,请稍后...');
578
669
  try {
579
- await new Promise((resolve, reject)=>{
580
- const child = spawn(npm, [
581
- 'install',
582
- '--omit=dev',
583
- "--ignore-scripts",
584
- '--no-audit',
585
- '--no-fund'
586
- ], {
587
- cwd: options.pluginTarget,
588
- stdio: 'inherit'
589
- });
590
- const timer = setTimeout(()=>{
591
- child.kill();
592
- reject(new Error("npm install timed out after 120s"));
593
- }, 120000);
594
- child.on('exit', (code)=>{
595
- clearTimeout(timer);
596
- if (0 === code) resolve();
597
- else reject(new Error(`npm install exited with code ${code}`));
598
- });
599
- child.on('error', reject);
670
+ await (0, cross_platform_spawn.d)('npm', [
671
+ 'install',
672
+ '--omit=dev',
673
+ "--ignore-scripts",
674
+ '--no-audit',
675
+ '--no-fund',
676
+ '--registry',
677
+ options.registry
678
+ ], {
679
+ cwd: options.pluginTarget,
680
+ stdio: 'inherit',
681
+ timeoutMs: 120000
600
682
  });
601
683
  } catch (error) {
602
684
  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-cursor-install",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "One-step installer for the TLS Observer Cursor 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
 
@@ -66,7 +66,6 @@ type PluginInstallResult = {
66
66
  version?: string;
67
67
  };
68
68
 
69
- const execFileAsync = promisify(execFile);
70
69
  const PLUGIN_NAME = 'tls-observer-cursor';
71
70
  const PLUGIN_PACKAGE_NAME = '@volcengine/tls-observer-cursor';
72
71
  const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
@@ -623,7 +622,6 @@ async function installPluginPackageToTemp(options: InstallOptions): Promise<{
623
622
  }> {
624
623
  const root = await fs.mkdtemp(path.join(tmpdir(), 'tls-observer-cursor-plugin-'));
625
624
  const packageSpec = pluginPackageSpec(options);
626
- const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
627
625
  const args = [
628
626
  'install',
629
627
  '--prefix',
@@ -638,7 +636,7 @@ async function installPluginPackageToTemp(options: InstallOptions): Promise<{
638
636
  ];
639
637
 
640
638
  try {
641
- await execFileAsync(npm, args, { timeout: 120_000 });
639
+ await runCommand('npm', args, { timeoutMs: 120_000 });
642
640
  } catch (error) {
643
641
  const detail =
644
642
  error && typeof error === 'object' && 'stderr' in error
@@ -709,25 +707,25 @@ async function installPlugin(options: InstallOptions): Promise<PluginInstallResu
709
707
  await fs.cp(path.join(source, entry), path.join(options.pluginTarget, entry), { recursive: true });
710
708
  }
711
709
  await writeHookWrapper(options);
712
- const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';
713
710
  console.log('插件依赖安装中,请稍后...');
714
711
  try {
715
- await new Promise<void>((resolve, reject) => {
716
- const child = spawn(npm, ['install', '--omit=dev', '--ignore-scripts', '--no-audit', '--no-fund'], {
712
+ await runCommand(
713
+ 'npm',
714
+ [
715
+ 'install',
716
+ '--omit=dev',
717
+ '--ignore-scripts',
718
+ '--no-audit',
719
+ '--no-fund',
720
+ '--registry',
721
+ options.registry,
722
+ ],
723
+ {
717
724
  cwd: options.pluginTarget,
718
725
  stdio: 'inherit',
719
- });
720
- const timer = setTimeout(() => {
721
- child.kill();
722
- reject(new Error(`npm install timed out after 120s`));
723
- }, 120_000);
724
- child.on('exit', (code) => {
725
- clearTimeout(timer);
726
- if (code === 0) resolve();
727
- else reject(new Error(`npm install exited with code ${code}`));
728
- });
729
- child.on('error', reject);
730
- });
726
+ timeoutMs: 120_000,
727
+ },
728
+ );
731
729
  } catch (error) {
732
730
  const detail =
733
731
  error && typeof error === 'object' && 'stderr' in error