@vforsh/argus 0.1.8 → 0.1.9

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.
Files changed (59) hide show
  1. package/README.md +11 -314
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/argus.js +23324 -882
  4. package/dist/bin.js +2 -0
  5. package/dist/bin.js.map +1 -1
  6. package/dist/cli/register/registerCode.d.ts +3 -0
  7. package/dist/cli/register/registerCode.d.ts.map +1 -0
  8. package/dist/cli/register/registerCode.js +55 -0
  9. package/dist/cli/register/registerCode.js.map +1 -0
  10. package/dist/cli/register/registerDom.d.ts.map +1 -1
  11. package/dist/cli/register/registerDom.js +0 -17
  12. package/dist/cli/register/registerDom.js.map +1 -1
  13. package/dist/cli/register/registerEval.d.ts.map +1 -1
  14. package/dist/cli/register/registerEval.js +1 -0
  15. package/dist/cli/register/registerEval.js.map +1 -1
  16. package/dist/cli/register/registerTrace.d.ts.map +1 -1
  17. package/dist/cli/register/registerTrace.js +25 -7
  18. package/dist/cli/register/registerTrace.js.map +1 -1
  19. package/dist/cli/register/registerWatcher.js +2 -2
  20. package/dist/cli/register/registerWatcher.js.map +1 -1
  21. package/dist/commands/chrome.d.ts.map +1 -1
  22. package/dist/commands/chrome.js +38 -11
  23. package/dist/commands/chrome.js.map +1 -1
  24. package/dist/commands/code.d.ts +32 -0
  25. package/dist/commands/code.d.ts.map +1 -0
  26. package/dist/commands/code.js +315 -0
  27. package/dist/commands/code.js.map +1 -0
  28. package/dist/commands/domSetFile.d.ts.map +1 -1
  29. package/dist/commands/domSetFile.js +0 -5
  30. package/dist/commands/domSetFile.js.map +1 -1
  31. package/dist/commands/trace.d.ts +1 -0
  32. package/dist/commands/trace.d.ts.map +1 -1
  33. package/dist/commands/trace.js +7 -5
  34. package/dist/commands/trace.js.map +1 -1
  35. package/dist/commands/watcherNativeHost.js +1 -1
  36. package/dist/commands/watcherNativeHost.js.map +1 -1
  37. package/dist/commands/watcherStart.js +1 -1
  38. package/dist/commands/watcherStart.js.map +1 -1
  39. package/dist/eval/evalClient.d.ts +1 -0
  40. package/dist/eval/evalClient.d.ts.map +1 -1
  41. package/dist/eval/evalClient.js +2 -0
  42. package/dist/eval/evalClient.js.map +1 -1
  43. package/dist/output/code.d.ts +7 -0
  44. package/dist/output/code.d.ts.map +1 -0
  45. package/dist/output/code.js +16 -0
  46. package/dist/output/code.js.map +1 -0
  47. package/dist/runtime-code/format.d.ts +6 -0
  48. package/dist/runtime-code/format.d.ts.map +1 -0
  49. package/dist/runtime-code/format.js +89 -0
  50. package/dist/runtime-code/format.js.map +1 -0
  51. package/dist/runtime-code/strings.d.ts +13 -0
  52. package/dist/runtime-code/strings.d.ts.map +1 -0
  53. package/dist/runtime-code/strings.js +225 -0
  54. package/dist/runtime-code/strings.js.map +1 -0
  55. package/dist/runtime-code/types.d.ts +31 -0
  56. package/dist/runtime-code/types.d.ts.map +1 -0
  57. package/dist/runtime-code/types.js +2 -0
  58. package/dist/runtime-code/types.js.map +1 -0
  59. package/package.json +3 -2
@@ -0,0 +1,89 @@
1
+ import { findTextPatternMatch } from '@vforsh/argus-core';
2
+ import prettier from 'prettier/standalone';
3
+ import babelPlugin from 'prettier/plugins/babel';
4
+ import estreePlugin from 'prettier/plugins/estree';
5
+ import postcssPlugin from 'prettier/plugins/postcss';
6
+ const PRETTY_CONTEXT_BEFORE = 1;
7
+ const PRETTY_CONTEXT_AFTER = 1;
8
+ const MAX_PRETTY_LINE_WIDTH = 160;
9
+ const PRETTIER_PLUGINS = [babelPlugin, estreePlugin, postcssPlugin];
10
+ export const formatRuntimeSource = async (source, type) => {
11
+ const parser = getPrettierParser(type);
12
+ if (!parser) {
13
+ return { source, changed: false };
14
+ }
15
+ try {
16
+ const formatted = await prettier.format(source, {
17
+ parser,
18
+ plugins: PRETTIER_PLUGINS,
19
+ });
20
+ return {
21
+ source: formatted,
22
+ changed: formatted !== source,
23
+ };
24
+ }
25
+ catch (error) {
26
+ return {
27
+ source,
28
+ changed: false,
29
+ error: error instanceof Error ? error.message : String(error),
30
+ };
31
+ }
32
+ };
33
+ export const buildPrettyCodeMatches = (matches, sourceByUrl, pattern) => matches.map((match) => {
34
+ const source = sourceByUrl.get(match.url) ?? '';
35
+ const lines = source.split('\n');
36
+ const currentIndex = Math.max(0, match.lineNumber - 1);
37
+ const startIndex = Math.max(0, currentIndex - PRETTY_CONTEXT_BEFORE);
38
+ const endIndex = Math.min(lines.length, currentIndex + PRETTY_CONTEXT_AFTER + 1);
39
+ const snippet = [];
40
+ for (let index = startIndex; index < endIndex; index++) {
41
+ const rawLine = lines[index] ?? '';
42
+ const isMatch = index === currentIndex;
43
+ const matchRange = isMatch ? findTextPatternMatch(rawLine, pattern) : null;
44
+ snippet.push({
45
+ lineNumber: index + 1,
46
+ content: formatSnippetLine(rawLine, matchRange),
47
+ isMatch,
48
+ });
49
+ }
50
+ return {
51
+ ...match,
52
+ snippet,
53
+ };
54
+ });
55
+ const getPrettierParser = (type) => {
56
+ switch (type) {
57
+ case 'script':
58
+ return 'babel';
59
+ case 'stylesheet':
60
+ return 'css';
61
+ default:
62
+ return null;
63
+ }
64
+ };
65
+ const formatSnippetLine = (line, match) => {
66
+ if (!match) {
67
+ return clipLine(line);
68
+ }
69
+ if (line.length <= MAX_PRETTY_LINE_WIDTH) {
70
+ return injectMatchMarkers(line, match.index, match.length);
71
+ }
72
+ const windowStart = Math.max(0, match.index - 50);
73
+ const windowEnd = Math.min(line.length, match.index + match.length + 70);
74
+ const prefix = windowStart > 0 ? '...' : '';
75
+ const suffix = windowEnd < line.length ? '...' : '';
76
+ const sliced = line.slice(windowStart, windowEnd);
77
+ return `${prefix}${injectMatchMarkers(sliced, match.index - windowStart, match.length)}${suffix}`;
78
+ };
79
+ const clipLine = (line) => {
80
+ if (line.length <= MAX_PRETTY_LINE_WIDTH) {
81
+ return line;
82
+ }
83
+ return `${line.slice(0, MAX_PRETTY_LINE_WIDTH - 3)}...`;
84
+ };
85
+ const injectMatchMarkers = (line, index, length) => {
86
+ const safeLength = Math.max(1, length);
87
+ return `${line.slice(0, index)}[[${line.slice(index, index + safeLength)}]]${line.slice(index + safeLength)}`;
88
+ };
89
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/runtime-code/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CodeResourceType } from '@vforsh/argus-core';
2
+ import type { CodeStringFilters, CodeStringMatch } from './types.js';
3
+ export type ExtractCodeStringsOptions = {
4
+ minLength: number;
5
+ includeAll: boolean;
6
+ filters?: CodeStringFilters;
7
+ };
8
+ export declare const extractCodeStrings: (input: {
9
+ source: string;
10
+ type: CodeResourceType;
11
+ url: string;
12
+ }, options: ExtractCodeStringsOptions) => CodeStringMatch[];
13
+ //# sourceMappingURL=strings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/runtime-code/strings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAA;AAOpF,MAAM,MAAM,yBAAyB,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,EAAE,iBAAiB,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC9B,OAAO;IACN,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,gBAAgB,CAAA;IACtB,GAAG,EAAE,MAAM,CAAA;CACX,EACD,SAAS,yBAAyB,KAChC,eAAe,EAwCjB,CAAA"}
@@ -0,0 +1,225 @@
1
+ import { findTextPatternMatch, parseTextPattern } from '@vforsh/argus-core';
2
+ export const extractCodeStrings = (input, options) => {
3
+ const literals = collectStringLiterals(input.source);
4
+ const matchPattern = options.filters?.matchPattern ? parseTextPattern(options.filters.matchPattern) : undefined;
5
+ const seen = new Set();
6
+ const matches = [];
7
+ for (const literal of literals) {
8
+ const value = literal.value.trim();
9
+ if (value.length < options.minLength) {
10
+ continue;
11
+ }
12
+ const kind = classifyCodeString(value, options.includeAll);
13
+ if (!kind) {
14
+ continue;
15
+ }
16
+ if (options.filters?.kinds && !options.filters.kinds.has(kind)) {
17
+ continue;
18
+ }
19
+ if (matchPattern && !findTextPatternMatch(value, matchPattern)) {
20
+ continue;
21
+ }
22
+ if (seen.has(value)) {
23
+ continue;
24
+ }
25
+ seen.add(value);
26
+ matches.push({
27
+ url: input.url,
28
+ type: input.type,
29
+ lineNumber: literal.lineNumber,
30
+ kind,
31
+ value,
32
+ });
33
+ }
34
+ return rankCodeStrings(matches);
35
+ };
36
+ const collectStringLiterals = (source) => {
37
+ const literals = [];
38
+ let index = 0;
39
+ let lineNumber = 1;
40
+ while (index < source.length) {
41
+ const char = source[index];
42
+ const next = source[index + 1];
43
+ if (char === '\n') {
44
+ lineNumber += 1;
45
+ index += 1;
46
+ continue;
47
+ }
48
+ if (char === '/' && next === '/') {
49
+ index += 2;
50
+ while (index < source.length && source[index] !== '\n') {
51
+ index += 1;
52
+ }
53
+ continue;
54
+ }
55
+ if (char === '/' && next === '*') {
56
+ index += 2;
57
+ while (index < source.length) {
58
+ if (source[index] === '\n') {
59
+ lineNumber += 1;
60
+ }
61
+ if (source[index] === '*' && source[index + 1] === '/') {
62
+ index += 2;
63
+ break;
64
+ }
65
+ index += 1;
66
+ }
67
+ continue;
68
+ }
69
+ if (char === '"' || char === "'" || char === '`') {
70
+ const literal = readQuotedLiteral(source, index, lineNumber, char);
71
+ index = literal.nextIndex;
72
+ lineNumber = literal.lineNumber;
73
+ if (literal.value != null) {
74
+ literals.push({
75
+ value: literal.value,
76
+ lineNumber: literal.startLineNumber,
77
+ });
78
+ }
79
+ continue;
80
+ }
81
+ index += 1;
82
+ }
83
+ return literals;
84
+ };
85
+ const readQuotedLiteral = (source, startIndex, startLineNumber, quote) => {
86
+ let index = startIndex + 1;
87
+ let lineNumber = startLineNumber;
88
+ let escaped = false;
89
+ let dynamicTemplate = false;
90
+ let value = '';
91
+ while (index < source.length) {
92
+ const char = source[index];
93
+ const next = source[index + 1];
94
+ if (escaped) {
95
+ value += char;
96
+ escaped = false;
97
+ if (char === '\n') {
98
+ lineNumber += 1;
99
+ }
100
+ index += 1;
101
+ continue;
102
+ }
103
+ if (char === '\\') {
104
+ escaped = true;
105
+ index += 1;
106
+ continue;
107
+ }
108
+ if (char === '\n') {
109
+ lineNumber += 1;
110
+ if (quote !== '`') {
111
+ return { value: null, nextIndex: index + 1, lineNumber, startLineNumber };
112
+ }
113
+ }
114
+ if (quote === '`' && char === '$' && next === '{') {
115
+ dynamicTemplate = true;
116
+ }
117
+ if (char === quote) {
118
+ return {
119
+ value: dynamicTemplate ? null : value,
120
+ nextIndex: index + 1,
121
+ lineNumber,
122
+ startLineNumber,
123
+ };
124
+ }
125
+ value += char;
126
+ index += 1;
127
+ }
128
+ return { value: null, nextIndex: index, lineNumber, startLineNumber };
129
+ };
130
+ const classifyCodeString = (value, includeAll) => {
131
+ if (/[\u0000-\u001f]/.test(value)) {
132
+ return null;
133
+ }
134
+ const kind = detectInterestingKind(value);
135
+ if (kind) {
136
+ return kind;
137
+ }
138
+ return includeAll ? 'other' : null;
139
+ };
140
+ const detectInterestingKind = (value) => {
141
+ if (/^(https?:\/\/|\/|\.{1,2}\/)/.test(value) || value.includes('/api/')) {
142
+ return 'url';
143
+ }
144
+ if (!/\s/.test(value) && /^[A-Za-z0-9_$.:/-]+$/.test(value) && /[:._-]/.test(value)) {
145
+ return 'key';
146
+ }
147
+ if (!/\s/.test(value) && /^[A-Za-z_$][A-Za-z0-9_$]+$/.test(value) && /[a-z][A-Z]/.test(value)) {
148
+ return 'identifier';
149
+ }
150
+ if (/\s/.test(value) && /[A-Za-z]/.test(value) && value.length >= 16) {
151
+ return 'message';
152
+ }
153
+ return null;
154
+ };
155
+ const rankCodeStrings = (matches) => matches
156
+ .map((match) => ({
157
+ ...match,
158
+ score: scoreCodeString(match),
159
+ }))
160
+ .sort(compareCodeStringMatches)
161
+ .map(({ score: _score, ...match }) => match);
162
+ /**
163
+ * Prefer strings that usually help reverse-engineering real apps:
164
+ * API paths, camelCase endpoint names, storage keys, and readable messages.
165
+ * Generic webpack/module paths still show up, just lower in the list.
166
+ */
167
+ const scoreCodeString = (match) => {
168
+ const value = match.value;
169
+ let score = baseKindScore(match.kind);
170
+ if (value.includes('/api/')) {
171
+ score += 60;
172
+ }
173
+ if (/^\/admin\//.test(value)) {
174
+ score += 35;
175
+ }
176
+ if (/^[A-Za-z_$][A-Za-z0-9_$]+$/.test(value) && /[a-z][A-Z]/.test(value)) {
177
+ score += 28;
178
+ }
179
+ if (/^[A-Za-z0-9_$.-]+:[A-Za-z0-9_$./-]+$/.test(value)) {
180
+ score += 24;
181
+ }
182
+ if (/\s/.test(value) && /[A-Za-z]/.test(value) && value.length >= 24) {
183
+ score += 18;
184
+ }
185
+ if (/^\.\.?\/[^/\s]+(?:\/[^/\s]+)*\.[A-Za-z0-9]+$/.test(value)) {
186
+ score -= 75;
187
+ }
188
+ if (/^\.\/[a-z]{2}(?:-[a-z]{2})?\.js$/i.test(value)) {
189
+ score -= 90;
190
+ }
191
+ if (/^(?:chunk|module|vendor)[-./_]/i.test(value)) {
192
+ score -= 20;
193
+ }
194
+ return score;
195
+ };
196
+ const baseKindScore = (kind) => {
197
+ switch (kind) {
198
+ case 'url':
199
+ return 140;
200
+ case 'identifier':
201
+ return 115;
202
+ case 'key':
203
+ return 100;
204
+ case 'message':
205
+ return 90;
206
+ case 'other':
207
+ return 10;
208
+ }
209
+ };
210
+ const compareCodeStringMatches = (left, right) => {
211
+ if (right.score !== left.score) {
212
+ return right.score - left.score;
213
+ }
214
+ if (left.kind !== right.kind) {
215
+ return left.kind.localeCompare(right.kind);
216
+ }
217
+ if (left.url !== right.url) {
218
+ return left.url.localeCompare(right.url);
219
+ }
220
+ if (left.lineNumber !== right.lineNumber) {
221
+ return left.lineNumber - right.lineNumber;
222
+ }
223
+ return left.value.localeCompare(right.value);
224
+ };
225
+ //# sourceMappingURL=strings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strings.js","sourceRoot":"","sources":["../../src/runtime-code/strings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CodeGrepMatch, CodeResource, CodeResourceType } from '@vforsh/argus-core';
2
+ export type LoadedCodeResource = {
3
+ resource: CodeResource;
4
+ source: string;
5
+ };
6
+ export type RuntimeSourceFormatResult = {
7
+ source: string;
8
+ changed: boolean;
9
+ error?: string;
10
+ };
11
+ export type PrettyCodeLine = {
12
+ lineNumber: number;
13
+ content: string;
14
+ isMatch: boolean;
15
+ };
16
+ export type PrettyCodeMatch = CodeGrepMatch & {
17
+ snippet: PrettyCodeLine[];
18
+ };
19
+ export type CodeStringKind = 'url' | 'key' | 'identifier' | 'message' | 'other';
20
+ export type CodeStringFilters = {
21
+ kinds?: Set<CodeStringKind>;
22
+ matchPattern?: string;
23
+ };
24
+ export type CodeStringMatch = {
25
+ url: string;
26
+ type: CodeResourceType;
27
+ lineNumber: number;
28
+ kind: CodeStringKind;
29
+ value: string;
30
+ };
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime-code/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEvF,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE,YAAY,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG;IACvC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC7C,OAAO,EAAE,cAAc,EAAE,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,CAAA;AAE/E,MAAM,MAAM,iBAAiB,GAAG;IAC/B,KAAK,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,gBAAgB,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime-code/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vforsh/argus",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/vforsh/argus.git",
@@ -30,7 +30,8 @@
30
30
  "access": "public"
31
31
  },
32
32
  "dependencies": {
33
- "commander": "14.0.2"
33
+ "commander": "14.0.2",
34
+ "prettier": "3.7.4"
34
35
  },
35
36
  "scripts": {
36
37
  "build": "tsc -b && bun run bundle",