@volcengine/tls-observer-cursor-install 0.0.4 → 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 +12 -0
- package/dist/index.js +110 -28
- package/package.json +5 -3
- package/src/installer/installer-runner.ts +18 -20
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,12 +1,105 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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
|
|
505
|
-
|
|
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
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
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.
|
|
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 {
|
|
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
|
|
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
|
|
716
|
-
|
|
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
|
-
|
|
721
|
-
|
|
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
|