@vforsh/argus 0.1.10 → 0.1.11
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/.tsbuildinfo +1 -1
- package/dist/argus.js +1032 -1120
- package/dist/cdp/sendCdpCommand.d.ts +11 -0
- package/dist/cdp/sendCdpCommand.d.ts.map +1 -0
- package/dist/cdp/sendCdpCommand.js +103 -0
- package/dist/cdp/sendCdpCommand.js.map +1 -0
- package/dist/cli/program.js +1 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/commands/chrome.d.ts.map +1 -1
- package/dist/commands/chrome.js +1 -99
- package/dist/commands/chrome.js.map +1 -1
- package/dist/commands/chromeStart.d.ts.map +1 -1
- package/dist/commands/chromeStart.js +14 -44
- package/dist/commands/chromeStart.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +3 -5
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +10 -57
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/net.d.ts.map +1 -1
- package/dist/commands/net.js +8 -22
- package/dist/commands/net.js.map +1 -1
- package/dist/commands/netTail.d.ts.map +1 -1
- package/dist/commands/netTail.js +11 -25
- package/dist/commands/netTail.js.map +1 -1
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +1 -99
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +6 -46
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/startShared.d.ts +32 -0
- package/dist/commands/startShared.d.ts.map +1 -0
- package/dist/commands/startShared.js +74 -0
- package/dist/commands/startShared.js.map +1 -0
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +8 -43
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands/trace.d.ts.map +1 -1
- package/dist/commands/trace.js +7 -9
- package/dist/commands/trace.js.map +1 -1
- package/dist/commands/watcherStart.d.ts.map +1 -1
- package/dist/commands/watcherStart.js +10 -51
- package/dist/commands/watcherStart.js.map +1 -1
- package/dist/eval/evalClient.js +5 -14
- package/dist/eval/evalClient.js.map +1 -1
- package/dist/httpClient.d.ts +1 -12
- package/dist/httpClient.d.ts.map +1 -1
- package/dist/httpClient.js +1 -84
- package/dist/httpClient.js.map +1 -1
- package/dist/runtime-code/strings.js +9 -1
- package/dist/runtime-code/strings.js.map +1 -1
- package/dist/watchers/queryParams.d.ts +34 -0
- package/dist/watchers/queryParams.d.ts.map +1 -0
- package/dist/watchers/queryParams.js +80 -0
- package/dist/watchers/queryParams.js.map +1 -0
- package/dist/watchers/requestWatcher.d.ts +3 -0
- package/dist/watchers/requestWatcher.d.ts.map +1 -1
- package/dist/watchers/requestWatcher.js +15 -9
- package/dist/watchers/requestWatcher.js.map +1 -1
- package/dist/watchers/resolveWatcher.js +2 -3
- package/dist/watchers/resolveWatcher.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import { resolvePath } from '../utils/paths.js';
|
|
3
|
+
/**
|
|
4
|
+
* Read an optional inject script once and keep command handlers free of file-system boilerplate.
|
|
5
|
+
*/
|
|
6
|
+
export const resolveInjectScript = async (inject, output) => {
|
|
7
|
+
if (!inject) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const resolvedPath = resolvePath(inject.file);
|
|
11
|
+
let script;
|
|
12
|
+
try {
|
|
13
|
+
script = await fs.readFile(resolvedPath, 'utf8');
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
output.writeWarn(`Failed to read inject script at ${resolvedPath}: ${error instanceof Error ? error.message : String(error)}. Skipping injection.`);
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
if (script.trim() === '') {
|
|
20
|
+
output.writeWarn(`Inject script at ${resolvedPath} is empty. Skipping injection.`);
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return { script, exposeArgus: inject.exposeArgus };
|
|
24
|
+
};
|
|
25
|
+
export const normalizeHttpUrl = (value) => {
|
|
26
|
+
if (!value) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (value.startsWith('http://') || value.startsWith('https://')) {
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
return `http://${value}`;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Collect watcher target filters from CLI options and return `undefined` when nothing was set.
|
|
36
|
+
*/
|
|
37
|
+
export const buildWatcherMatch = (options) => {
|
|
38
|
+
const match = {};
|
|
39
|
+
const url = options.url?.trim();
|
|
40
|
+
if (url) {
|
|
41
|
+
match.url = url;
|
|
42
|
+
}
|
|
43
|
+
const type = options.type?.trim();
|
|
44
|
+
if (type) {
|
|
45
|
+
match.type = type;
|
|
46
|
+
}
|
|
47
|
+
const origin = options.origin?.trim();
|
|
48
|
+
if (origin) {
|
|
49
|
+
match.origin = origin;
|
|
50
|
+
}
|
|
51
|
+
const targetId = options.target?.trim();
|
|
52
|
+
if (targetId) {
|
|
53
|
+
match.targetId = targetId;
|
|
54
|
+
}
|
|
55
|
+
const parent = options.parent?.trim();
|
|
56
|
+
if (parent) {
|
|
57
|
+
match.parent = parent;
|
|
58
|
+
}
|
|
59
|
+
return Object.keys(match).length > 0 ? match : undefined;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Keep long-running commands consistent: terminate on SIGINT/SIGTERM, no per-command signal boilerplate.
|
|
63
|
+
*/
|
|
64
|
+
export const registerTerminationHandlers = (terminate) => {
|
|
65
|
+
const handleTermination = () => {
|
|
66
|
+
void terminate().then(() => process.exit(0));
|
|
67
|
+
};
|
|
68
|
+
process.on('SIGINT', handleTermination);
|
|
69
|
+
process.on('SIGTERM', handleTermination);
|
|
70
|
+
};
|
|
71
|
+
export const waitForever = async () => {
|
|
72
|
+
await new Promise(() => { });
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=startShared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startShared.js","sourceRoot":"","sources":["../../src/commands/startShared.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AASA,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,OAAO,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAgExF,CAAA"}
|
package/dist/commands/tail.js
CHANGED
|
@@ -2,8 +2,9 @@ import { fetchJson } from '../httpClient.js';
|
|
|
2
2
|
import { formatLogEvent } from '../output/format.js';
|
|
3
3
|
import { createOutput } from '../output/io.js';
|
|
4
4
|
import { previewLogEvent } from '../output/preview.js';
|
|
5
|
-
import {
|
|
6
|
-
import { resolveWatcherOrExit } from '../watchers/requestWatcher.js';
|
|
5
|
+
import { parseNumber } from '../cli/parse.js';
|
|
6
|
+
import { buildWatcherUrl, formatWatcherTransportError, resolveWatcherOrExit } from '../watchers/requestWatcher.js';
|
|
7
|
+
import { appendLogFilterParams } from '../watchers/queryParams.js';
|
|
7
8
|
/** Execute the tail command for a watcher id. */
|
|
8
9
|
export const runTail = async (id, options) => {
|
|
9
10
|
const output = createOutput(options);
|
|
@@ -27,35 +28,19 @@ export const runTail = async (id, options) => {
|
|
|
27
28
|
if (limit != null) {
|
|
28
29
|
params.set('limit', String(limit));
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const normalizedMatch = normalizeMatch(options.match);
|
|
34
|
-
if (normalizedMatch.error) {
|
|
35
|
-
output.writeWarn(normalizedMatch.error);
|
|
31
|
+
const filters = appendLogFilterParams(params, options);
|
|
32
|
+
if (filters.error) {
|
|
33
|
+
output.writeWarn(filters.error);
|
|
36
34
|
process.exitCode = 2;
|
|
37
35
|
return;
|
|
38
36
|
}
|
|
39
|
-
|
|
40
|
-
for (const pattern of normalizedMatch.match) {
|
|
41
|
-
params.append('match', pattern);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const matchCase = resolveMatchCase(options);
|
|
45
|
-
if (matchCase) {
|
|
46
|
-
params.set('matchCase', matchCase);
|
|
47
|
-
}
|
|
48
|
-
const source = normalizeQueryValue(options.source);
|
|
49
|
-
if (source) {
|
|
50
|
-
params.set('source', source);
|
|
51
|
-
}
|
|
52
|
-
const url = `http://${watcher.host}:${watcher.port}/tail?${params.toString()}`;
|
|
37
|
+
const url = buildWatcherUrl(watcher, '/tail', params);
|
|
53
38
|
let response;
|
|
54
39
|
try {
|
|
55
40
|
response = await fetchJson(url, { timeoutMs: timeoutMs + 5_000 });
|
|
56
41
|
}
|
|
57
42
|
catch (error) {
|
|
58
|
-
output.writeWarn(
|
|
43
|
+
output.writeWarn(formatWatcherTransportError(watcher, error));
|
|
59
44
|
process.exitCode = 1;
|
|
60
45
|
return;
|
|
61
46
|
}
|
|
@@ -78,24 +63,4 @@ export const runTail = async (id, options) => {
|
|
|
78
63
|
after = response.nextAfter;
|
|
79
64
|
}
|
|
80
65
|
};
|
|
81
|
-
const normalizeMatch = (match) => {
|
|
82
|
-
if (!match || match.length === 0) {
|
|
83
|
-
return {};
|
|
84
|
-
}
|
|
85
|
-
const normalized = match.map((value) => value.trim());
|
|
86
|
-
const invalid = normalized.find((value) => value.length === 0);
|
|
87
|
-
if (invalid != null) {
|
|
88
|
-
return { error: 'Invalid --match value: empty pattern.' };
|
|
89
|
-
}
|
|
90
|
-
return { match: normalized };
|
|
91
|
-
};
|
|
92
|
-
const resolveMatchCase = (options) => {
|
|
93
|
-
if (options.caseSensitive) {
|
|
94
|
-
return 'sensitive';
|
|
95
|
-
}
|
|
96
|
-
if (options.ignoreCase) {
|
|
97
|
-
return 'insensitive';
|
|
98
|
-
}
|
|
99
|
-
return undefined;
|
|
100
|
-
};
|
|
101
66
|
//# sourceMappingURL=tail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAA;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAgBlE,iDAAiD;AACjD,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,EAAsB,EAAE,OAAoB,EAAiB,EAAE;IAC5F,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IAC3D,IAAI,CAAC,QAAQ;QAAE,OAAM;IAErB,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;IAE5B,IAAI,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAA;IACxD,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAExC,IAAI,OAAO,GAAG,IAAI,CAAA;IAClB,MAAM,IAAI,GAAG,GAAS,EAAE;QACvB,OAAO,GAAG,KAAK,CAAA;IAChB,CAAC,CAAA;IAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC1B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;IAE3B,OAAO,OAAO,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QAClC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;QAC1C,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACnC,CAAC;QACD,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACtD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC/B,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACP,CAAC;QAED,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACrD,IAAI,QAAsB,CAAA;QAC1B,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,SAAS,CAAe,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,GAAG,KAAK,EAAE,CAAC,CAAA;QAChF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,CAAC,2BAA2B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;YAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACP,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACtB,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;oBACpD,SAAQ;gBACT,CAAC;gBACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;oBAClB,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;oBAC3C,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAA;oBAClE,SAAQ;gBACT,CAAC;gBACD,MAAM,CAAC,UAAU,CAChB,cAAc,CAAC,KAAK,EAAE;oBACrB,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;iBAC5C,CAAC,CACF,CAAA;YACF,CAAC;QACF,CAAC;QAED,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAA;IAC3B,CAAC;AACF,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AAKA,oDAAoD;AACpD,MAAM,MAAM,YAAY,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,2CAA2C;AAC3C,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,gDAAgD;AAChD,eAAO,MAAM,QAAQ,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,YAAY,KAAG,OAAO,CAAC,IAAI,CAsC1F,CAAA;AAED,wDAAwD;AACxD,eAAO,MAAM,aAAa,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,iBAAiB,KAAG,OAAO,CAAC,IAAI,CAkBpG,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,YAAY,GAAU,IAAI,MAAM,GAAG,SAAS,EAAE,SAAS,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAgBlG,CAAA"}
|
package/dist/commands/trace.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import { fetchJson } from '../httpClient.js';
|
|
2
1
|
import { createOutput } from '../output/io.js';
|
|
3
|
-
import { formatError } from '../cli/parse.js';
|
|
4
2
|
import { parseDurationMs } from '../time.js';
|
|
5
|
-
import { resolveWatcherOrExit } from '../watchers/requestWatcher.js';
|
|
3
|
+
import { fetchWatcherJson, formatWatcherTransportError, resolveWatcherOrExit } from '../watchers/requestWatcher.js';
|
|
6
4
|
/** Execute trace start + stop with duration. */
|
|
7
5
|
export const runTrace = async (id, options) => {
|
|
8
6
|
const output = createOutput(options);
|
|
@@ -71,9 +69,9 @@ export const runTraceStop = async (id, options) => {
|
|
|
71
69
|
output.writeHuman(`Trace saved: ${stop.outFile} (${stop.eventCount} events, ${formatDurationMs(stop.durationMs)})`);
|
|
72
70
|
};
|
|
73
71
|
const runTraceStartInternal = async (watcher, options, output) => {
|
|
74
|
-
const url = `http://${watcher.host}:${watcher.port}/trace/start`;
|
|
75
72
|
try {
|
|
76
|
-
const response = await
|
|
73
|
+
const response = await fetchWatcherJson(watcher, {
|
|
74
|
+
path: '/trace/start',
|
|
77
75
|
method: 'POST',
|
|
78
76
|
body: {
|
|
79
77
|
outFile: options.out,
|
|
@@ -85,15 +83,15 @@ const runTraceStartInternal = async (watcher, options, output) => {
|
|
|
85
83
|
return response;
|
|
86
84
|
}
|
|
87
85
|
catch (error) {
|
|
88
|
-
output.writeWarn(
|
|
86
|
+
output.writeWarn(formatWatcherTransportError(watcher, error));
|
|
89
87
|
process.exitCode = 1;
|
|
90
88
|
return null;
|
|
91
89
|
}
|
|
92
90
|
};
|
|
93
91
|
const runTraceStopInternal = async (watcher, options, output) => {
|
|
94
|
-
const url = `http://${watcher.host}:${watcher.port}/trace/stop`;
|
|
95
92
|
try {
|
|
96
|
-
const response = await
|
|
93
|
+
const response = await fetchWatcherJson(watcher, {
|
|
94
|
+
path: '/trace/stop',
|
|
97
95
|
method: 'POST',
|
|
98
96
|
body: { traceId: options.traceId, outFile: options.outFile },
|
|
99
97
|
timeoutMs: 20_000,
|
|
@@ -101,7 +99,7 @@ const runTraceStopInternal = async (watcher, options, output) => {
|
|
|
101
99
|
return response;
|
|
102
100
|
}
|
|
103
101
|
catch (error) {
|
|
104
|
-
output.writeWarn(
|
|
102
|
+
output.writeWarn(formatWatcherTransportError(watcher, error));
|
|
105
103
|
process.exitCode = 1;
|
|
106
104
|
return null;
|
|
107
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../../src/commands/trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcherStart.d.ts","sourceRoot":"","sources":["../../src/commands/watcherStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"watcherStart.d.ts","sourceRoot":"","sources":["../../src/commands/watcherStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAGzH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAInE,MAAM,MAAM,mBAAmB,GAAG;IACjC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,sEAAsE;IACtE,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,8CAA8C;IAC9C,MAAM,CAAC,EAAE,mBAAmB,CAAA;IAC5B,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAyBD,eAAO,MAAM,eAAe,GAAU,SAAS,mBAAmB,KAAG,OAAO,CAAC,IAAI,CA2JhF,CAAA"}
|
|
@@ -1,32 +1,13 @@
|
|
|
1
1
|
import { startWatcher } from '@vforsh/argus-watcher';
|
|
2
2
|
import crypto from 'node:crypto';
|
|
3
|
-
import fs from 'node:fs/promises';
|
|
4
3
|
import { createOutput } from '../output/io.js';
|
|
5
4
|
import { resolvePath } from '../utils/paths.js';
|
|
5
|
+
import { buildWatcherMatch, registerTerminationHandlers, resolveInjectScript, waitForever } from './startShared.js';
|
|
6
6
|
const isValidPort = (port) => Number.isFinite(port) && port >= 1 && port <= 65535;
|
|
7
7
|
const parsePort = (value) => {
|
|
8
8
|
const port = typeof value === 'string' ? parseInt(value, 10) : value;
|
|
9
9
|
return isValidPort(port) ? port : null;
|
|
10
10
|
};
|
|
11
|
-
const resolveInjectScript = async (inject, output) => {
|
|
12
|
-
if (!inject) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
const resolvedPath = resolvePath(inject.file);
|
|
16
|
-
let script;
|
|
17
|
-
try {
|
|
18
|
-
script = await fs.readFile(resolvedPath, 'utf8');
|
|
19
|
-
}
|
|
20
|
-
catch (error) {
|
|
21
|
-
output.writeWarn(`Failed to read inject script at ${resolvedPath}: ${error instanceof Error ? error.message : String(error)}. Skipping injection.`);
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
if (script.trim() === '') {
|
|
25
|
-
output.writeWarn(`Inject script at ${resolvedPath} is empty. Skipping injection.`);
|
|
26
|
-
return null;
|
|
27
|
-
}
|
|
28
|
-
return { script, exposeArgus: inject.exposeArgus };
|
|
29
|
-
};
|
|
30
11
|
export const runWatcherStart = async (options) => {
|
|
31
12
|
const output = createOutput(options);
|
|
32
13
|
// Validate source option
|
|
@@ -81,7 +62,6 @@ export const runWatcherStart = async (options) => {
|
|
|
81
62
|
}
|
|
82
63
|
}
|
|
83
64
|
const watcherId = options.id?.trim() || generateWatcherId();
|
|
84
|
-
const matchUrl = options.url?.trim();
|
|
85
65
|
let artifactsBaseDir;
|
|
86
66
|
if (options.artifacts != null) {
|
|
87
67
|
const trimmed = options.artifacts.trim();
|
|
@@ -93,29 +73,13 @@ export const runWatcherStart = async (options) => {
|
|
|
93
73
|
artifactsBaseDir = resolvePath(trimmed);
|
|
94
74
|
}
|
|
95
75
|
const inject = await resolveInjectScript(options.inject, output);
|
|
96
|
-
|
|
97
|
-
const match = {};
|
|
98
|
-
if (matchUrl) {
|
|
99
|
-
match.url = matchUrl;
|
|
100
|
-
}
|
|
101
|
-
if (options.type?.trim()) {
|
|
102
|
-
match.type = options.type.trim();
|
|
103
|
-
}
|
|
104
|
-
if (options.origin?.trim()) {
|
|
105
|
-
match.origin = options.origin.trim();
|
|
106
|
-
}
|
|
107
|
-
if (options.target?.trim()) {
|
|
108
|
-
match.targetId = options.target.trim();
|
|
109
|
-
}
|
|
110
|
-
if (options.parent?.trim()) {
|
|
111
|
-
match.parent = options.parent.trim();
|
|
112
|
-
}
|
|
76
|
+
const match = sourceMode === 'cdp' ? buildWatcherMatch(options) : undefined;
|
|
113
77
|
let handle;
|
|
114
78
|
try {
|
|
115
79
|
handle = await startWatcher({
|
|
116
80
|
id: watcherId,
|
|
117
81
|
source: sourceMode,
|
|
118
|
-
match
|
|
82
|
+
match,
|
|
119
83
|
chrome: sourceMode === 'cdp' ? { host: chromeHost, port: chromePort } : undefined,
|
|
120
84
|
host: '127.0.0.1',
|
|
121
85
|
port: 0,
|
|
@@ -137,11 +101,11 @@ export const runWatcherStart = async (options) => {
|
|
|
137
101
|
port: handle.watcher.port,
|
|
138
102
|
pid: handle.watcher.pid,
|
|
139
103
|
source: sourceMode,
|
|
140
|
-
matchUrl: match
|
|
141
|
-
matchType: match
|
|
142
|
-
matchOrigin: match
|
|
143
|
-
matchTarget: match
|
|
144
|
-
matchParent: match
|
|
104
|
+
matchUrl: match?.url,
|
|
105
|
+
matchType: match?.type,
|
|
106
|
+
matchOrigin: match?.origin,
|
|
107
|
+
matchTarget: match?.targetId,
|
|
108
|
+
matchParent: match?.parent,
|
|
145
109
|
chromeHost,
|
|
146
110
|
chromePort,
|
|
147
111
|
artifactsBaseDir,
|
|
@@ -152,12 +116,7 @@ export const runWatcherStart = async (options) => {
|
|
|
152
116
|
}
|
|
153
117
|
catch { }
|
|
154
118
|
};
|
|
155
|
-
|
|
156
|
-
void cleanup().then(() => process.exit(0));
|
|
157
|
-
});
|
|
158
|
-
process.on('SIGTERM', () => {
|
|
159
|
-
void cleanup().then(() => process.exit(0));
|
|
160
|
-
});
|
|
119
|
+
registerTerminationHandlers(cleanup);
|
|
161
120
|
handle.events.on('cdpAttached', ({ target }) => {
|
|
162
121
|
const typeInfo = target?.type ? ` (type: ${target.type})` : '';
|
|
163
122
|
output.writeHuman(`[${handle.watcher.id}] CDP attached: ${target?.title} (${target?.url})${typeInfo}`);
|
|
@@ -196,7 +155,7 @@ export const runWatcherStart = async (options) => {
|
|
|
196
155
|
output.writeHuman(` artifacts=${result.artifactsBaseDir}`);
|
|
197
156
|
}
|
|
198
157
|
}
|
|
199
|
-
await
|
|
158
|
+
await waitForever();
|
|
200
159
|
};
|
|
201
160
|
/** Generate a short random watcher ID (e.g. "a3f1b2"). */
|
|
202
161
|
const generateWatcherId = () => crypto.randomBytes(3).toString('hex');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcherStart.js","sourceRoot":"","sources":["../../src/commands/watcherStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuE,MAAM,uBAAuB,CAAA;AACzH,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"watcherStart.js","sourceRoot":"","sources":["../../src/commands/watcherStart.ts"],"names":[],"mappings":"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"}
|
package/dist/eval/evalClient.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fetchWatcherJson, formatWatcherTransportError } from '../watchers/requestWatcher.js';
|
|
2
2
|
export const evalOnce = async (input) => {
|
|
3
|
-
const url = `http://${input.watcher.host}:${input.watcher.port}/eval`;
|
|
4
3
|
const body = {
|
|
5
4
|
expression: input.expression,
|
|
6
5
|
awaitPromise: input.awaitPromise,
|
|
@@ -10,7 +9,8 @@ export const evalOnce = async (input) => {
|
|
|
10
9
|
};
|
|
11
10
|
let response;
|
|
12
11
|
try {
|
|
13
|
-
response = await
|
|
12
|
+
response = await fetchWatcherJson(input.watcher, {
|
|
13
|
+
path: '/eval',
|
|
14
14
|
method: 'POST',
|
|
15
15
|
body,
|
|
16
16
|
timeoutMs: input.timeoutMs ? input.timeoutMs + 5_000 : 10_000,
|
|
@@ -20,7 +20,7 @@ export const evalOnce = async (input) => {
|
|
|
20
20
|
return {
|
|
21
21
|
ok: false,
|
|
22
22
|
kind: 'transport',
|
|
23
|
-
error:
|
|
23
|
+
error: formatWatcherTransportError(input.watcher, error),
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
if (response.exception && input.failOnException) {
|
|
@@ -57,17 +57,8 @@ export const evalWithRetries = async (input) => {
|
|
|
57
57
|
return {
|
|
58
58
|
ok: false,
|
|
59
59
|
kind: 'transport',
|
|
60
|
-
error:
|
|
60
|
+
error: formatWatcherTransportError(input.watcher, 'unknown error'),
|
|
61
61
|
attempt,
|
|
62
62
|
};
|
|
63
63
|
};
|
|
64
|
-
const formatError = (error) => {
|
|
65
|
-
if (!error) {
|
|
66
|
-
return 'unknown error';
|
|
67
|
-
}
|
|
68
|
-
if (error instanceof Error) {
|
|
69
|
-
return error.message;
|
|
70
|
-
}
|
|
71
|
-
return String(error);
|
|
72
|
-
};
|
|
73
64
|
//# sourceMappingURL=evalClient.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evalClient.js","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"evalClient.js","sourceRoot":"","sources":["../../src/eval/evalClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAwB7F,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,KAAoB,EAAwB,EAAE;IAC5E,MAAM,IAAI,GAAG;QACZ,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC1B,CAAA;IAED,IAAI,QAAsB,CAAA;IAC1B,IAAI,CAAC;QACJ,QAAQ,GAAG,MAAM,gBAAgB,CAAe,KAAK,CAAC,OAAO,EAAE;YAC9D,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,MAAM;YACd,IAAI;YACJ,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM;SAC7D,CAAC,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC;SACxD,CAAA;IACF,CAAC;IAED,IAAI,QAAQ,CAAC,SAAS,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QACjD,OAAO;YACN,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,WAAW;YACjB,QAAQ;YACR,KAAK,EAAE,cAAc,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE;SAC9C,CAAA;IACF,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC9B,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,KAA2B,EAA8B,EAAE;IAChG,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,CAAA;QACZ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;YAC9B,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,aAAa,EAAE,KAAK,CAAC,aAAa;YAClC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,eAAe,EAAE,KAAK,CAAC,eAAe;SACtC,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAA;QAC/B,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,UAAU,CAAA;QAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAA;QAC/B,CAAC;IACF,CAAC;IAED,OAAO;QACN,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,2BAA2B,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC;QAClE,OAAO;KACP,CAAA;AACF,CAAC,CAAA"}
|
package/dist/httpClient.d.ts
CHANGED
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export type HttpOptions = {
|
|
3
|
-
timeoutMs?: number;
|
|
4
|
-
method?: 'GET' | 'POST' | 'PUT';
|
|
5
|
-
body?: unknown;
|
|
6
|
-
/** If true, return JSON body for 4xx responses instead of throwing. Default: false. */
|
|
7
|
-
returnErrorResponse?: boolean;
|
|
8
|
-
};
|
|
9
|
-
/** Fetch JSON with timeout and typed response. */
|
|
10
|
-
export declare const fetchJson: <T>(url: string, options?: HttpOptions) => Promise<T>;
|
|
11
|
-
/** Fetch text with timeout. */
|
|
12
|
-
export declare const fetchText: (url: string, options?: HttpOptions) => Promise<string>;
|
|
1
|
+
export { fetchJson, fetchText, type HttpOptions } from '@vforsh/argus-core';
|
|
13
2
|
//# sourceMappingURL=httpClient.d.ts.map
|
package/dist/httpClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/httpClient.js
CHANGED
|
@@ -1,85 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export const fetchJson = async (url, options = {}) => {
|
|
3
|
-
const controller = new AbortController();
|
|
4
|
-
const timeoutMs = options.timeoutMs ?? 5_000;
|
|
5
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
6
|
-
const body = options.body != null ? JSON.stringify(options.body) : undefined;
|
|
7
|
-
try {
|
|
8
|
-
const response = await fetch(url, {
|
|
9
|
-
method: options.method ?? 'GET',
|
|
10
|
-
signal: controller.signal,
|
|
11
|
-
body,
|
|
12
|
-
headers: body ? { 'Content-Type': 'application/json' } : undefined,
|
|
13
|
-
});
|
|
14
|
-
// For error responses, try to extract the error message from the JSON body
|
|
15
|
-
if (!response.ok) {
|
|
16
|
-
if (options.returnErrorResponse && response.status >= 400) {
|
|
17
|
-
return (await response.json());
|
|
18
|
-
}
|
|
19
|
-
// Try to read the error message from the response body
|
|
20
|
-
const errorMessage = await extractErrorMessage(response);
|
|
21
|
-
throw new Error(errorMessage ?? `Request failed (${response.status} ${response.statusText})`);
|
|
22
|
-
}
|
|
23
|
-
return (await response.json());
|
|
24
|
-
}
|
|
25
|
-
catch (error) {
|
|
26
|
-
if (isAbortError(error)) {
|
|
27
|
-
throw new Error(`Request timed out after ${timeoutMs}ms`);
|
|
28
|
-
}
|
|
29
|
-
throw error;
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
clearTimeout(timer);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
const isAbortError = (error) => {
|
|
36
|
-
if (!error || typeof error !== 'object' || !('name' in error)) {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return error.name === 'AbortError';
|
|
40
|
-
};
|
|
41
|
-
/** Try to extract an error message from a response's JSON body. */
|
|
42
|
-
const extractErrorMessage = async (response) => {
|
|
43
|
-
try {
|
|
44
|
-
const body = await response.json();
|
|
45
|
-
if (body && typeof body === 'object' && 'error' in body) {
|
|
46
|
-
const error = body.error;
|
|
47
|
-
if (error && typeof error === 'object' && 'message' in error) {
|
|
48
|
-
return error.message;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// Ignore JSON parse errors - fall back to status text
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
};
|
|
57
|
-
/** Fetch text with timeout. */
|
|
58
|
-
export const fetchText = async (url, options = {}) => {
|
|
59
|
-
const controller = new AbortController();
|
|
60
|
-
const timeoutMs = options.timeoutMs ?? 5_000;
|
|
61
|
-
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
62
|
-
const body = options.body != null ? JSON.stringify(options.body) : undefined;
|
|
63
|
-
try {
|
|
64
|
-
const response = await fetch(url, {
|
|
65
|
-
method: options.method ?? 'GET',
|
|
66
|
-
signal: controller.signal,
|
|
67
|
-
body,
|
|
68
|
-
headers: body ? { 'Content-Type': 'application/json' } : undefined,
|
|
69
|
-
});
|
|
70
|
-
if (!response.ok) {
|
|
71
|
-
throw new Error(`Request failed (${response.status} ${response.statusText})`);
|
|
72
|
-
}
|
|
73
|
-
return await response.text();
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
if (isAbortError(error)) {
|
|
77
|
-
throw new Error(`Request timed out after ${timeoutMs}ms`);
|
|
78
|
-
}
|
|
79
|
-
throw error;
|
|
80
|
-
}
|
|
81
|
-
finally {
|
|
82
|
-
clearTimeout(timer);
|
|
83
|
-
}
|
|
84
|
-
};
|
|
1
|
+
export { fetchJson, fetchText } from '@vforsh/argus-core';
|
|
85
2
|
//# sourceMappingURL=httpClient.js.map
|
package/dist/httpClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../src/httpClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAA"}
|
|
@@ -128,7 +128,7 @@ const readQuotedLiteral = (source, startIndex, startLineNumber, quote) => {
|
|
|
128
128
|
return { value: null, nextIndex: index, lineNumber, startLineNumber };
|
|
129
129
|
};
|
|
130
130
|
const classifyCodeString = (value, includeAll) => {
|
|
131
|
-
if (
|
|
131
|
+
if (hasControlChars(value)) {
|
|
132
132
|
return null;
|
|
133
133
|
}
|
|
134
134
|
const kind = detectInterestingKind(value);
|
|
@@ -152,6 +152,14 @@ const detectInterestingKind = (value) => {
|
|
|
152
152
|
}
|
|
153
153
|
return null;
|
|
154
154
|
};
|
|
155
|
+
const hasControlChars = (value) => {
|
|
156
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
157
|
+
if (value.charCodeAt(index) < 32) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
162
|
+
};
|
|
155
163
|
const rankCodeStrings = (matches) => matches
|
|
156
164
|
.map((match) => ({
|
|
157
165
|
...match,
|