aihand 0.0.1 → 0.1.0
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/README.md +136 -2
- package/dist/chunk-2NTK7H4W.js +10 -0
- package/dist/chunk-3X4FTHLC.cjs +369 -0
- package/dist/chunk-BXVNR4E2.js +399 -0
- package/dist/chunk-C7DGE6MY.cjs +1456 -0
- package/dist/chunk-DUUCVLC3.cjs +254 -0
- package/dist/chunk-FAHI53KO.cjs +125 -0
- package/dist/chunk-G7KVJ7NF.js +369 -0
- package/dist/chunk-GNEUSRGP.js +52 -0
- package/dist/chunk-IGNEAOLT.cjs +130 -0
- package/dist/chunk-IS5XFUDB.js +125 -0
- package/dist/chunk-JLYC76XL.js +2448 -0
- package/dist/chunk-KQOABC2O.cjs +52 -0
- package/dist/chunk-OVMK33AC.cjs +104 -0
- package/dist/chunk-OWYK2IGV.js +250 -0
- package/dist/chunk-PQSQN4CN.js +126 -0
- package/dist/chunk-QF6AG3M5.cjs +410 -0
- package/dist/chunk-QSAMLXML.js +1456 -0
- package/dist/chunk-VEKYRKPF.cjs +399 -0
- package/dist/chunk-Y6H7W7PI.cjs +2451 -0
- package/dist/chunk-YKSYW77R.js +410 -0
- package/dist/chunk-Z2Y65YOY.cjs +7 -0
- package/dist/chunk-ZJQRNIK7.js +104 -0
- package/dist/cli-FDS2C2CZ.cjs +651 -0
- package/dist/cli-HHRGYPSM.js +649 -0
- package/dist/cli-JQEIE7RQ.js +120 -0
- package/dist/cli-K3OS2QQH.cjs +122 -0
- package/dist/cli-OSYG6LJD.cjs +89 -0
- package/dist/cli-TXRW5PG6.js +89 -0
- package/dist/cli.cjs +81 -0
- package/dist/cli.js +81 -0
- package/dist/config-5KEQLN6L.cjs +13 -0
- package/dist/config-PJPYKDLQ.js +13 -0
- package/dist/graph-IH56SCPK.js +8 -0
- package/dist/graph-ZUXXCJ5A.cjs +8 -0
- package/dist/index.cjs +481 -0
- package/dist/index.d.cts +461 -0
- package/dist/index.d.ts +461 -0
- package/dist/index.js +479 -0
- package/dist/locate-5XFSXJ5J.cjs +15 -0
- package/dist/locate-NKSUGL3A.js +15 -0
- package/dist/refactor-5FWSZIBN.cjs +19 -0
- package/dist/refactor-BOB3SZSA.js +19 -0
- package/dist/scan-4R7GQG2W.cjs +9 -0
- package/dist/scan-VF54GAAX.js +9 -0
- package/dist/ui/probe/server.cjs +505 -0
- package/dist/ui/probe/server.js +507 -0
- package/dist/vite.cjs +12 -0
- package/dist/vite.d.cts +12 -0
- package/dist/vite.d.ts +12 -0
- package/dist/vite.js +12 -0
- package/package.json +82 -9
- package/src/cli.ts +107 -0
- package/src/index.ts +54 -0
- package/src/read/cli.ts +650 -0
- package/src/read/compact.ts +286 -0
- package/src/read/config.ts +62 -0
- package/src/read/graph.ts +182 -0
- package/src/read/index.ts +12 -0
- package/src/read/inject.ts +121 -0
- package/src/read/locate.ts +104 -0
- package/src/read/panel.ts +335 -0
- package/src/read/pipeline.ts +78 -0
- package/src/read/refactor.ts +576 -0
- package/src/read/render.ts +1118 -0
- package/src/read/scan.ts +61 -0
- package/src/read/seam.ts +0 -0
- package/src/read/security.ts +171 -0
- package/src/read/signals.ts +333 -0
- package/src/read/state.ts +71 -0
- package/src/read/stategraph.ts +205 -0
- package/src/read/types.ts +162 -0
- package/src/read/vite.ts +77 -0
- package/src/ui/babel/line-profiler.ts +197 -0
- package/src/ui/babel/source-loc.ts +68 -0
- package/src/ui/bridge/cdp-bridge.ts +138 -0
- package/src/ui/bridge/compile-probe.ts +80 -0
- package/src/ui/bridge/transport.ts +26 -0
- package/src/ui/bridge/vite-bridge.ts +116 -0
- package/src/ui/client/client-patch.ts +899 -0
- package/src/ui/client/client.ts +2562 -0
- package/src/ui/core/action.ts +747 -0
- package/src/ui/core/candidates.ts +348 -0
- package/src/ui/core/canvas.ts +305 -0
- package/src/ui/core/check.ts +34 -0
- package/src/ui/core/compact.ts +314 -0
- package/src/ui/core/detail.ts +244 -0
- package/src/ui/core/diff.ts +253 -0
- package/src/ui/core/emit.ts +198 -0
- package/src/ui/core/knob-exec.ts +137 -0
- package/src/ui/core/perf.ts +254 -0
- package/src/ui/core/types.ts +164 -0
- package/src/ui/core/util.ts +221 -0
- package/src/ui/index.ts +5 -0
- package/src/ui/probe/cli.ts +139 -0
- package/src/ui/probe/server.ts +468 -0
- package/src/ui/self/act.ts +47 -0
- package/src/ui/self/discover.ts +101 -0
- package/src/ui/self/grow.ts +121 -0
- package/src/ui/self/install.ts +100 -0
- package/src/ui/self/probe.ts +105 -0
- package/src/ui/self/screen-hook.ts +44 -0
- package/src/ui/self/self.ts +48 -0
- package/src/ui/self/store-refs.ts +123 -0
- package/src/ui/self/store-schema.ts +65 -0
- package/src/ui/self/synth.ts +37 -0
- package/src/ui/server/cli.ts +102 -0
- package/src/ui/server/dispatch.ts +276 -0
- package/src/ui/server/help-text.ts +237 -0
- package/src/ui/server/knob-schema.ts +87 -0
- package/src/ui/server/plugin.ts +1151 -0
- package/src/vite.ts +39 -0
- package/index.js +0 -2
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
var _chunkVEKYRKPFcjs = require('./chunk-VEKYRKPF.cjs');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
var _chunkC7DGE6MYcjs = require('./chunk-C7DGE6MY.cjs');
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
var _chunkY6H7W7PIcjs = require('./chunk-Y6H7W7PI.cjs');
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
var _chunk3X4FTHLCcjs = require('./chunk-3X4FTHLC.cjs');
|
|
43
|
+
require('./chunk-QF6AG3M5.cjs');
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
var _chunkIGNEAOLTcjs = require('./chunk-IGNEAOLT.cjs');
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
var _chunkKQOABC2Ocjs = require('./chunk-KQOABC2O.cjs');
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
var _chunkFAHI53KOcjs = require('./chunk-FAHI53KO.cjs');
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
var _chunkDUUCVLC3cjs = require('./chunk-DUUCVLC3.cjs');
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
var _chunkOVMK33ACcjs = require('./chunk-OVMK33AC.cjs');
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
var _chunkZ2Y65YOYcjs = require('./chunk-Z2Y65YOY.cjs');
|
|
77
|
+
|
|
78
|
+
// src/ui/babel/line-profiler.ts
|
|
79
|
+
var _core = require('@babel/core');
|
|
80
|
+
var _path = require('path'); var _path2 = _interopRequireDefault(_path);
|
|
81
|
+
function lineProfilerPlugin() {
|
|
82
|
+
return {
|
|
83
|
+
name: "aihand-line-profiler",
|
|
84
|
+
visitor: {
|
|
85
|
+
VariableDeclaration(nodePath, state) {
|
|
86
|
+
if (shouldSkip(nodePath, state)) return;
|
|
87
|
+
const decl = nodePath.node.declarations[0];
|
|
88
|
+
if (!_optionalChain([decl, 'optionalAccess', _ => _.init])) return;
|
|
89
|
+
if (hasAwaitOrYield(decl.init)) return;
|
|
90
|
+
const label = makeLabel(nodePath, state, decl.id.type === "Identifier" ? decl.id.name : void 0);
|
|
91
|
+
const wrapped = wrapExpr(decl.init, label);
|
|
92
|
+
decl.init = wrapped;
|
|
93
|
+
},
|
|
94
|
+
ExpressionStatement(nodePath, state) {
|
|
95
|
+
if (shouldSkip(nodePath, state)) return;
|
|
96
|
+
if (hasAwaitOrYield(nodePath.node.expression)) return;
|
|
97
|
+
const label = makeLabel(nodePath, state);
|
|
98
|
+
const wrapped = wrapExpr(nodePath.node.expression, label);
|
|
99
|
+
nodePath.node.expression = wrapped;
|
|
100
|
+
},
|
|
101
|
+
ReturnStatement(nodePath, state) {
|
|
102
|
+
if (shouldSkip(nodePath, state)) return;
|
|
103
|
+
if (!nodePath.node.argument) return;
|
|
104
|
+
if (hasAwaitOrYield(nodePath.node.argument)) return;
|
|
105
|
+
const label = makeLabel(nodePath, state);
|
|
106
|
+
const wrapped = wrapExpr(nodePath.node.argument, label);
|
|
107
|
+
nodePath.node.argument = wrapped;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function shouldSkip(nodePath, state) {
|
|
113
|
+
const filename = _nullishCoalesce(_optionalChain([state, 'access', _2 => _2.file, 'optionalAccess', _3 => _3.opts, 'optionalAccess', _4 => _4.filename]), () => ( ""));
|
|
114
|
+
if (filename.includes("node_modules")) return true;
|
|
115
|
+
if (filename.includes("packages/aidev/")) return true;
|
|
116
|
+
const node = nodePath.node;
|
|
117
|
+
if (_core.types.isImportDeclaration(node)) return true;
|
|
118
|
+
if (_core.types.isExportNamedDeclaration(node)) return true;
|
|
119
|
+
if (_core.types.isExportDefaultDeclaration(node)) return true;
|
|
120
|
+
if (_core.types.isExportAllDeclaration(node)) return true;
|
|
121
|
+
if (_core.types.isExpressionStatement(node) && _core.types.isCallExpression(node.expression)) {
|
|
122
|
+
const callee = node.expression.callee;
|
|
123
|
+
if (_core.types.isIdentifier(callee) && callee.name === "__line") return true;
|
|
124
|
+
}
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
function makeLabel(nodePath, state, varName) {
|
|
128
|
+
const filename = _nullishCoalesce(state.file.opts.filename, () => ( "unknown"));
|
|
129
|
+
const basename = _path2.default.basename(filename);
|
|
130
|
+
const line = resolveLine(nodePath);
|
|
131
|
+
if (varName) {
|
|
132
|
+
return `${basename}:${line}:${varName}`;
|
|
133
|
+
}
|
|
134
|
+
return `${basename}:${line}`;
|
|
135
|
+
}
|
|
136
|
+
function resolveLine(nodePath) {
|
|
137
|
+
if (nodePath.node.loc) return nodePath.node.loc.start.line;
|
|
138
|
+
const descend = firstLocLine(nodePath.node);
|
|
139
|
+
if (descend != null) return descend;
|
|
140
|
+
let p = nodePath.parentPath;
|
|
141
|
+
while (p) {
|
|
142
|
+
if (p.node.loc) return p.node.loc.start.line;
|
|
143
|
+
p = p.parentPath;
|
|
144
|
+
}
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
function firstLocLine(node) {
|
|
148
|
+
for (const key of _nullishCoalesce(_core.types.VISITOR_KEYS[node.type], () => ( []))) {
|
|
149
|
+
const child = node[key];
|
|
150
|
+
const children = Array.isArray(child) ? child : [child];
|
|
151
|
+
for (const c of children) {
|
|
152
|
+
if (!c || typeof c.type !== "string") continue;
|
|
153
|
+
if (c.loc) return c.loc.start.line;
|
|
154
|
+
const deeper = firstLocLine(c);
|
|
155
|
+
if (deeper != null) return deeper;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
function wrapExpr(expr, label) {
|
|
161
|
+
const runtime = _core.types.logicalExpression(
|
|
162
|
+
"||",
|
|
163
|
+
_core.types.memberExpression(_core.types.identifier("globalThis"), _core.types.identifier("__line")),
|
|
164
|
+
_core.types.arrowFunctionExpression(
|
|
165
|
+
[_core.types.identifier("_l"), _core.types.identifier("f")],
|
|
166
|
+
_core.types.callExpression(_core.types.identifier("f"), [])
|
|
167
|
+
)
|
|
168
|
+
);
|
|
169
|
+
return _core.types.callExpression(
|
|
170
|
+
runtime,
|
|
171
|
+
[
|
|
172
|
+
_core.types.stringLiteral(label),
|
|
173
|
+
_core.types.arrowFunctionExpression([], expr)
|
|
174
|
+
]
|
|
175
|
+
);
|
|
176
|
+
}
|
|
177
|
+
function hasAwaitOrYield(node) {
|
|
178
|
+
if (!node || typeof node !== "object") return false;
|
|
179
|
+
if (_core.types.isAwaitExpression(node) || _core.types.isYieldExpression(node)) return true;
|
|
180
|
+
if (_core.types.isFunctionExpression(node) || _core.types.isArrowFunctionExpression(node) || _core.types.isFunctionDeclaration(node) || _core.types.isObjectMethod(node) || _core.types.isClassMethod(node)) return false;
|
|
181
|
+
for (const key of Object.keys(node)) {
|
|
182
|
+
if (key === "loc" || key === "start" || key === "end" || key === "leadingComments" || key === "trailingComments") continue;
|
|
183
|
+
const child = node[key];
|
|
184
|
+
if (Array.isArray(child)) {
|
|
185
|
+
for (const c of child) {
|
|
186
|
+
if (c && typeof c.type === "string" && hasAwaitOrYield(c)) return true;
|
|
187
|
+
}
|
|
188
|
+
} else if (child && typeof child.type === "string") {
|
|
189
|
+
if (hasAwaitOrYield(child)) return true;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// src/ui/self/act.ts
|
|
196
|
+
function stringifyDomain(v) {
|
|
197
|
+
if (v === null || v === void 0)
|
|
198
|
+
return String(v);
|
|
199
|
+
if (typeof v === "object")
|
|
200
|
+
return JSON.stringify(v).slice(0, 80);
|
|
201
|
+
return String(v).slice(0, 80);
|
|
202
|
+
}
|
|
203
|
+
function act(before, after) {
|
|
204
|
+
const lines = [];
|
|
205
|
+
if (after.view !== before.view)
|
|
206
|
+
lines.push(`view: ${before.view} \u2192 ${after.view}`);
|
|
207
|
+
if (after.modal !== before.modal) {
|
|
208
|
+
if (after.modal === null)
|
|
209
|
+
lines.push(`modal: closed (${before.modal})`);
|
|
210
|
+
else if (before.modal === null)
|
|
211
|
+
lines.push(`modal: opened ${after.modal}`);
|
|
212
|
+
else
|
|
213
|
+
lines.push(`modal: ${before.modal} \u2192 ${after.modal}`);
|
|
214
|
+
}
|
|
215
|
+
if (after.focus !== before.focus)
|
|
216
|
+
lines.push(`focus: ${after.focus}`);
|
|
217
|
+
for (const key of /* @__PURE__ */ new Set([...Object.keys(before.state), ...Object.keys(after.state)])) {
|
|
218
|
+
const b = stringifyDomain(before.state[key]);
|
|
219
|
+
const a = stringifyDomain(after.state[key]);
|
|
220
|
+
if (b !== a)
|
|
221
|
+
lines.push(`${key}: ${b} \u2192 ${a}`);
|
|
222
|
+
}
|
|
223
|
+
return lines;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// src/ui/self/grow.ts
|
|
227
|
+
var _module = require('module');
|
|
228
|
+
|
|
229
|
+
var _webtreesitter = require('web-tree-sitter');
|
|
230
|
+
var langPromise = null;
|
|
231
|
+
function loadLang() {
|
|
232
|
+
if (!langPromise) {
|
|
233
|
+
langPromise = (async () => {
|
|
234
|
+
const req = _module.createRequire.call(void 0, _chunkZ2Y65YOYcjs.importMetaUrl);
|
|
235
|
+
const wasmDir = _path.dirname.call(void 0, req.resolve("@repomix/tree-sitter-wasms/out/tree-sitter-tsx.wasm"));
|
|
236
|
+
await _webtreesitter.Parser.init();
|
|
237
|
+
return _webtreesitter.Language.load(_path.join.call(void 0, wasmDir, "tree-sitter-tsx.wasm"));
|
|
238
|
+
})();
|
|
239
|
+
}
|
|
240
|
+
return langPromise;
|
|
241
|
+
}
|
|
242
|
+
function typeOf(value) {
|
|
243
|
+
if (value.type === "as_expression") {
|
|
244
|
+
const typeNode = value.namedChild(value.namedChildCount - 1);
|
|
245
|
+
if (!typeNode)
|
|
246
|
+
return { type: "unknown", domain: [] };
|
|
247
|
+
const literals = typeNode.descendantsOfType("literal_type");
|
|
248
|
+
const domain = literals.map((l) => _optionalChain([l, 'access', _5 => _5.descendantsOfType, 'call', _6 => _6("string_fragment"), 'access', _7 => _7[0], 'optionalAccess', _8 => _8.text])).filter((s) => !!s);
|
|
249
|
+
return { type: typeNode.text, domain };
|
|
250
|
+
}
|
|
251
|
+
if (value.type === "true" || value.type === "false")
|
|
252
|
+
return { type: "boolean", domain: [] };
|
|
253
|
+
if (value.type === "number")
|
|
254
|
+
return { type: "number", domain: [] };
|
|
255
|
+
if (value.type === "string")
|
|
256
|
+
return { type: "string", domain: [] };
|
|
257
|
+
if (value.type === "array")
|
|
258
|
+
return { type: "array", domain: [] };
|
|
259
|
+
if (value.type === "null")
|
|
260
|
+
return { type: "null", domain: [] };
|
|
261
|
+
return { type: value.type, domain: [] };
|
|
262
|
+
}
|
|
263
|
+
async function grow(code, file) {
|
|
264
|
+
const lang = await loadLang();
|
|
265
|
+
const parser = new (0, _webtreesitter.Parser)();
|
|
266
|
+
parser.setLanguage(lang);
|
|
267
|
+
const tree = parser.parse(code);
|
|
268
|
+
const root = _optionalChain([tree, 'optionalAccess', _9 => _9.rootNode]);
|
|
269
|
+
if (!root)
|
|
270
|
+
return [];
|
|
271
|
+
const out = [];
|
|
272
|
+
for (const decl of root.descendantsOfType("variable_declarator")) {
|
|
273
|
+
const nameNode = decl.namedChild(0);
|
|
274
|
+
const valueNode = decl.childForFieldName("value");
|
|
275
|
+
if (!nameNode || nameNode.type !== "identifier" || _optionalChain([valueNode, 'optionalAccess', _10 => _10.type]) !== "call_expression")
|
|
276
|
+
continue;
|
|
277
|
+
const callee = valueNode.namedChild(0);
|
|
278
|
+
if (_optionalChain([callee, 'optionalAccess', _11 => _11.type]) !== "identifier" || callee.text !== "create")
|
|
279
|
+
continue;
|
|
280
|
+
const args = valueNode.childForFieldName("arguments");
|
|
281
|
+
const stateObj = _optionalChain([args, 'optionalAccess', _12 => _12.namedChildren, 'access', _13 => _13.find, 'call', _14 => _14((c) => _optionalChain([c, 'optionalAccess', _15 => _15.type]) === "object")]);
|
|
282
|
+
if (!stateObj)
|
|
283
|
+
continue;
|
|
284
|
+
const fields = [];
|
|
285
|
+
for (const pair of stateObj.namedChildren) {
|
|
286
|
+
if (_optionalChain([pair, 'optionalAccess', _16 => _16.type]) !== "pair")
|
|
287
|
+
continue;
|
|
288
|
+
const key = pair.childForFieldName("key");
|
|
289
|
+
const value = pair.childForFieldName("value");
|
|
290
|
+
if (!key || !value)
|
|
291
|
+
continue;
|
|
292
|
+
const { type, domain } = typeOf(value);
|
|
293
|
+
fields.push({ name: key.text, type, domain, line: key.startPosition.row + 1 });
|
|
294
|
+
}
|
|
295
|
+
out.push({
|
|
296
|
+
store: nameNode.text,
|
|
297
|
+
anchor: `${file}:${decl.startPosition.row + 1}`,
|
|
298
|
+
fields
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
return out;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// src/ui/self/self.ts
|
|
305
|
+
function screen(self) {
|
|
306
|
+
return self;
|
|
307
|
+
}
|
|
308
|
+
function log(seq, entry) {
|
|
309
|
+
return [...seq, entry];
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
// src/ui/self/install.ts
|
|
313
|
+
function emit(sink, channel, detail) {
|
|
314
|
+
sink.seq = log(sink.seq, { channel, detail, ts: sink.now() });
|
|
315
|
+
}
|
|
316
|
+
function installSelfLog(win, sink) {
|
|
317
|
+
const restores = [];
|
|
318
|
+
const levels = ["log", "info", "warn", "error", "debug"];
|
|
319
|
+
for (const level of levels) {
|
|
320
|
+
const orig = win.console[level];
|
|
321
|
+
win.console[level] = (...args) => {
|
|
322
|
+
emit(sink, "console", `[${level}] ${args.map(String).join(" ")}`);
|
|
323
|
+
orig.apply(win.console, args);
|
|
324
|
+
};
|
|
325
|
+
restores.push(() => {
|
|
326
|
+
win.console[level] = orig;
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
const origFetch = win.fetch;
|
|
330
|
+
win.fetch = async (input, init) => {
|
|
331
|
+
const url = typeof input === "string" ? input : input instanceof URL ? input.toString() : input.url;
|
|
332
|
+
const method = _optionalChain([init, 'optionalAccess', _17 => _17.method]) || "GET";
|
|
333
|
+
try {
|
|
334
|
+
const res = await origFetch(input, init);
|
|
335
|
+
emit(sink, "fetch", `${method} ${url} ${res.status}`);
|
|
336
|
+
return res;
|
|
337
|
+
} catch (e) {
|
|
338
|
+
emit(sink, "fetch", `${method} ${url} failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
339
|
+
throw e;
|
|
340
|
+
}
|
|
341
|
+
};
|
|
342
|
+
restores.push(() => {
|
|
343
|
+
win.fetch = origFetch;
|
|
344
|
+
});
|
|
345
|
+
const XHRProto = win.XMLHttpRequest.prototype;
|
|
346
|
+
const origOpen = XHRProto.open;
|
|
347
|
+
const origSend = XHRProto.send;
|
|
348
|
+
XHRProto.open = function(method, url, ...rest) {
|
|
349
|
+
this.__m = method;
|
|
350
|
+
this.__u = typeof url === "string" ? url : url.toString();
|
|
351
|
+
return origOpen.call(this, method, url, ...rest);
|
|
352
|
+
};
|
|
353
|
+
XHRProto.send = function(...args) {
|
|
354
|
+
this.addEventListener("loadend", () => {
|
|
355
|
+
emit(sink, "xhr", `${_nullishCoalesce(this.__m, () => ( "GET"))} ${_nullishCoalesce(this.__u, () => ( ""))} ${this.status}`);
|
|
356
|
+
});
|
|
357
|
+
return origSend.apply(this, args);
|
|
358
|
+
};
|
|
359
|
+
restores.push(() => {
|
|
360
|
+
XHRProto.open = origOpen;
|
|
361
|
+
XHRProto.send = origSend;
|
|
362
|
+
});
|
|
363
|
+
const onError = (e) => emit(sink, "error", e.message || String(e.error));
|
|
364
|
+
const onRejection = (e) => emit(sink, "error", `unhandled rejection: ${String(e.reason)}`);
|
|
365
|
+
win.addEventListener("error", onError);
|
|
366
|
+
win.addEventListener("unhandledrejection", onRejection);
|
|
367
|
+
restores.push(() => {
|
|
368
|
+
win.removeEventListener("error", onError);
|
|
369
|
+
win.removeEventListener("unhandledrejection", onRejection);
|
|
370
|
+
});
|
|
371
|
+
const OrigES = win.EventSource;
|
|
372
|
+
if (OrigES) {
|
|
373
|
+
win.EventSource = new Proxy(OrigES, {
|
|
374
|
+
construct(Target, cArgs) {
|
|
375
|
+
const es = new Target(...cArgs);
|
|
376
|
+
const url = String(cArgs[0]);
|
|
377
|
+
es.addEventListener("error", () => emit(sink, "sse", `${url} error (readyState ${es.readyState})`));
|
|
378
|
+
return es;
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
restores.push(() => {
|
|
382
|
+
win.EventSource = OrigES;
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
return () => {
|
|
386
|
+
for (const r of restores) r();
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
// src/ui/self/screen-hook.ts
|
|
391
|
+
function screenHook(stores) {
|
|
392
|
+
const domain = {};
|
|
393
|
+
let view = "";
|
|
394
|
+
for (const { schema, snapshot } of stores) {
|
|
395
|
+
for (const f of schema.fields) {
|
|
396
|
+
domain[`${schema.store}.${f.name}`] = snapshot[f.name];
|
|
397
|
+
if (!view && f.domain.length > 0)
|
|
398
|
+
view = String(_nullishCoalesce(snapshot[f.name], () => ( "")));
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return { view, domain };
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// src/ui/self/synth.ts
|
|
405
|
+
function synth(schema, snapshot) {
|
|
406
|
+
const viewField = schema.fields.find((f) => f.domain.length > 0);
|
|
407
|
+
const state = {};
|
|
408
|
+
for (const f of schema.fields)
|
|
409
|
+
state[f.name] = snapshot[f.name];
|
|
410
|
+
return {
|
|
411
|
+
view: viewField ? String(_nullishCoalesce(snapshot[viewField.name], () => ( ""))) : "",
|
|
412
|
+
modal: null,
|
|
413
|
+
focus: null,
|
|
414
|
+
state,
|
|
415
|
+
anchor: schema.anchor
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
exports.DEFAULT_CONFIG = _chunkIGNEAOLTcjs.DEFAULT_CONFIG; exports.IMPORT_QUERY = _chunkDUUCVLC3cjs.IMPORT_QUERY; exports.SEPARATOR = _chunkDUUCVLC3cjs.SEPARATOR; exports.TS_QUERY = _chunkDUUCVLC3cjs.TS_QUERY; exports.act = act; exports.aihand = _chunkY6H7W7PIcjs.aihand; exports.allocate = _chunkC7DGE6MYcjs.allocate; exports.buildBlocks = _chunkC7DGE6MYcjs.buildBlocks; exports.buildCallGraph = _chunkFAHI53KOcjs.buildCallGraph; exports.buildClassifier = _chunkC7DGE6MYcjs.buildClassifier; exports.buildImportGraph = _chunkC7DGE6MYcjs.buildImportGraph; exports.buildPanel = _chunk3X4FTHLCcjs.buildPanel; exports.buildState = _chunkC7DGE6MYcjs.buildState; exports.buildStateGraph = _chunk3X4FTHLCcjs.buildStateGraph; exports.check = _chunkY6H7W7PIcjs.check; exports.classify = _chunk3X4FTHLCcjs.classify; exports.cleanFnSignature = _chunkDUUCVLC3cjs.cleanFnSignature; exports.compact = _chunkDUUCVLC3cjs.compact; exports.computeCentrality = _chunkC7DGE6MYcjs.computeCentrality; exports.computeRecency = _chunkC7DGE6MYcjs.computeRecency; exports.configTemplate = _chunkIGNEAOLTcjs.configTemplate; exports.defineConfig = _chunkIGNEAOLTcjs.defineConfig; exports.diffState = _chunkY6H7W7PIcjs.diffState; exports.discover = _chunkY6H7W7PIcjs.discover; exports.emitCheck = _chunkY6H7W7PIcjs.emitCheck; exports.emitDiff = _chunkY6H7W7PIcjs.emitDiff; exports.emitSummary = _chunkY6H7W7PIcjs.emitSummary; exports.ensureMarkers = _chunkC7DGE6MYcjs.ensureMarkers; exports.expandByBudget = _chunkC7DGE6MYcjs.expandByBudget; exports.extractImports = _chunkDUUCVLC3cjs.extractImports; exports.extractKnobs = _chunk3X4FTHLCcjs.extractKnobs; exports.extractStoreFields = _chunk3X4FTHLCcjs.extractStoreFields; exports.fetchRuntimeKnobs = _chunkOVMK33ACcjs.fetchRuntimeKnobs; exports.fileOfInspPath = _chunkOVMK33ACcjs.fileOfInspPath; exports.fmtTransitions = _chunk3X4FTHLCcjs.fmtTransitions; exports.formatState = _chunkC7DGE6MYcjs.formatState; exports.formatTree = _chunkC7DGE6MYcjs.formatTree; exports.formatXml = _chunkC7DGE6MYcjs.formatXml; exports.getLang = _chunkDUUCVLC3cjs.getLang; exports.grow = grow; exports.growFromDecl = _chunk3X4FTHLCcjs.growFromDecl; exports.injectAll = _chunkC7DGE6MYcjs.injectAll; exports.injectFile = _chunkC7DGE6MYcjs.injectFile; exports.installSelfLog = installSelfLog; exports.joinPanel = _chunkOVMK33ACcjs.joinPanel; exports.lineProfilerPlugin = lineProfilerPlugin; exports.locate = _chunkOVMK33ACcjs.locate; exports.log = log; exports.moveFile = _chunkVEKYRKPFcjs.moveFile; exports.moveSymbol = _chunkVEKYRKPFcjs.moveSymbol; exports.openProject = _chunk3X4FTHLCcjs.openProject; exports.parseInspPath = _chunkOVMK33ACcjs.parseInspPath; exports.renameSymbol = _chunkVEKYRKPFcjs.renameSymbol; exports.renderLocate = _chunkOVMK33ACcjs.renderLocate; exports.scan = _chunkKQOABC2Ocjs.scan; exports.scanSecrets = _chunkC7DGE6MYcjs.scanSecrets; exports.screen = screen; exports.screenHook = screenHook; exports.sourcePanelHtml = _chunkOVMK33ACcjs.sourcePanelHtml; exports.storeSchema = _chunkY6H7W7PIcjs.storeSchema; exports.symbolAtLine = _chunkOVMK33ACcjs.symbolAtLine; exports.synth = synth;
|