@volcengine/tls-observer-pi-install 0.0.1 → 0.0.2
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/index.js +97 -4
- package/package.json +5 -3
- package/src/installer/installer-runner.ts +3 -4
package/dist/index.js
CHANGED
|
@@ -1,12 +1,105 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
2
|
import { homedir } 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_PACKAGE_NAME = '@volcengine/tls-observer-pi';
|
|
11
104
|
const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
|
|
12
105
|
const DEFAULT_ENV_TARGET = __rspack_external_node_path_c5b9b54f.join(homedir(), '.pi', 'agent', 'tls-observer-pi.env');
|
|
@@ -501,7 +594,7 @@ function commandErrorDetail(error) {
|
|
|
501
594
|
}
|
|
502
595
|
async function execPiCli(options, args) {
|
|
503
596
|
try {
|
|
504
|
-
await
|
|
597
|
+
await (0, cross_platform_spawn.d)(options.piBin, args, {
|
|
505
598
|
env: piCliEnv(options)
|
|
506
599
|
});
|
|
507
600
|
} catch (error) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volcengine/tls-observer-pi-install",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "One-step installer for the TLS Observer Pi plugin.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -35,13 +35,15 @@
|
|
|
35
35
|
},
|
|
36
36
|
"license": "Apache-2.0",
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@volcengine/openapi": "^1.36.1"
|
|
38
|
+
"@volcengine/openapi": "^1.36.1",
|
|
39
|
+
"cross-spawn": "7.0.6"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@rslib/core": "^0.21.5",
|
|
42
43
|
"@types/node": "^24.10.9",
|
|
43
44
|
"prettier": "^3.4.2",
|
|
44
|
-
"typescript": "^6.0.3"
|
|
45
|
+
"typescript": "^6.0.3",
|
|
46
|
+
"@volcengine/tls-observer-shared": "0.0.1"
|
|
45
47
|
},
|
|
46
48
|
"scripts": {
|
|
47
49
|
"build": "rslib build",
|
|
@@ -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 } 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
|
|
|
@@ -64,7 +64,6 @@ type PluginInstallResult = {
|
|
|
64
64
|
dryRun?: boolean;
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
const execFileAsync = promisify(execFile);
|
|
68
67
|
const PLUGIN_PACKAGE_NAME = '@volcengine/tls-observer-pi';
|
|
69
68
|
const DEFAULT_REGISTRY = 'https://registry.npmjs.org';
|
|
70
69
|
const DEFAULT_ENV_TARGET = path.join(homedir(), '.pi', 'agent', 'tls-observer-pi.env');
|
|
@@ -638,7 +637,7 @@ function commandErrorDetail(error: unknown): string {
|
|
|
638
637
|
|
|
639
638
|
async function execPiCli(options: InstallOptions, args: string[]): Promise<void> {
|
|
640
639
|
try {
|
|
641
|
-
await
|
|
640
|
+
await runCommand(options.piBin, args, { env: piCliEnv(options) });
|
|
642
641
|
} catch (error) {
|
|
643
642
|
if ((error as NodeJS.ErrnoException).code === 'ENOENT') {
|
|
644
643
|
throw new Error(
|