@wasm-idle/debug 1.0.0-next.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 +12 -0
- package/dist/controller.d.ts +44 -0
- package/dist/controller.d.ts.map +1 -0
- package/dist/controller.js +273 -0
- package/dist/controller.js.map +1 -0
- package/dist/editor/index.d.ts +3 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +2 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/monaco.d.ts +27 -0
- package/dist/editor/monaco.d.ts.map +1 -0
- package/dist/editor/monaco.js +131 -0
- package/dist/editor/monaco.js.map +1 -0
- package/dist/expression.d.ts +27 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +548 -0
- package/dist/expression.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/language/cpp.d.ts +3 -0
- package/dist/language/cpp.d.ts.map +1 -0
- package/dist/language/cpp.js +8 -0
- package/dist/language/cpp.js.map +1 -0
- package/dist/language/go.d.ts +3 -0
- package/dist/language/go.d.ts.map +1 -0
- package/dist/language/go.js +8 -0
- package/dist/language/go.js.map +1 -0
- package/dist/language/index.d.ts +6 -0
- package/dist/language/index.d.ts.map +1 -0
- package/dist/language/index.js +5 -0
- package/dist/language/index.js.map +1 -0
- package/dist/language/python.d.ts +3 -0
- package/dist/language/python.d.ts.map +1 -0
- package/dist/language/python.js +15 -0
- package/dist/language/python.js.map +1 -0
- package/dist/language/rust.d.ts +3 -0
- package/dist/language/rust.d.ts.map +1 -0
- package/dist/language/rust.js +8 -0
- package/dist/language/rust.js.map +1 -0
- package/dist/language/types.d.ts +7 -0
- package/dist/language/types.d.ts.map +1 -0
- package/dist/language/types.js +2 -0
- package/dist/language/types.js.map +1 -0
- package/dist/locals.d.ts +3 -0
- package/dist/locals.d.ts.map +1 -0
- package/dist/locals.js +9 -0
- package/dist/locals.js.map +1 -0
- package/package.json +67 -0
package/README.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# @wasm-idle/debug
|
|
2
|
+
|
|
3
|
+
Optional debugger UI, session controller, expression helpers, language adapters, and Monaco editor
|
|
4
|
+
integration for wasm-idle. Install it separately in applications that provide debugging:
|
|
5
|
+
|
|
6
|
+
```bash
|
|
7
|
+
pnpm add @wasm-idle/debug
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
The Monaco integration is available from `@wasm-idle/debug/editor`; `monaco-editor` is an optional
|
|
11
|
+
peer dependency. This package contains code only and includes no runtime, compiler, WebAssembly, or
|
|
12
|
+
toolchain assets.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { DebugCommand, DebugFrame, DebugSessionEvent, DebugVariable, TerminalControl } from '@wasm-idle/core';
|
|
2
|
+
import type { DebugLanguageAdapter } from './language/index.js';
|
|
3
|
+
export type DebugWatchValue = {
|
|
4
|
+
expression: string;
|
|
5
|
+
value: string;
|
|
6
|
+
};
|
|
7
|
+
export type DebugTerminalControl = Pick<TerminalControl, 'debugCommand' | 'setBreakpoints' | 'debugEvaluate' | 'stop'>;
|
|
8
|
+
export type DebugSessionControllerOptions = {
|
|
9
|
+
terminal?: DebugTerminalControl;
|
|
10
|
+
adapter?: DebugLanguageAdapter | null;
|
|
11
|
+
breakpoints?: number[];
|
|
12
|
+
cursorLine?: number | null;
|
|
13
|
+
syncBreakpointsWhile?: boolean | (() => boolean);
|
|
14
|
+
};
|
|
15
|
+
export declare function createDebugSessionController(options?: DebugSessionControllerOptions): {
|
|
16
|
+
readonly active: boolean;
|
|
17
|
+
readonly paused: boolean;
|
|
18
|
+
readonly pausedLine: number | null;
|
|
19
|
+
readonly locals: DebugVariable[];
|
|
20
|
+
readonly callStack: DebugFrame[];
|
|
21
|
+
readonly runToCursorLine: number | null;
|
|
22
|
+
readonly breakpoints: number[];
|
|
23
|
+
readonly effectiveBreakpoints: number[];
|
|
24
|
+
readonly cursorLine: number | null;
|
|
25
|
+
readonly canRunToCursor: boolean;
|
|
26
|
+
watchInput: string;
|
|
27
|
+
readonly watchExpressions: string[];
|
|
28
|
+
readonly watchValues: DebugWatchValue[];
|
|
29
|
+
begin: () => void;
|
|
30
|
+
reset: () => void;
|
|
31
|
+
handleEvent: (event: DebugSessionEvent) => void;
|
|
32
|
+
setTerminal: (terminal?: DebugTerminalControl) => void;
|
|
33
|
+
setAdapter: (adapter: DebugLanguageAdapter | null) => void;
|
|
34
|
+
setBreakpoints: (lines: number[]) => void;
|
|
35
|
+
setCursorLine: (line: number | null) => void;
|
|
36
|
+
sendCommand: (command: DebugCommand) => Promise<boolean>;
|
|
37
|
+
runToCursor: (targetLine?: number | null) => Promise<boolean>;
|
|
38
|
+
stop: () => Promise<boolean>;
|
|
39
|
+
addWatchExpression: (expression?: string) => boolean;
|
|
40
|
+
removeWatchExpression: (expression: string) => void;
|
|
41
|
+
clearWatches: () => void;
|
|
42
|
+
};
|
|
43
|
+
export type DebugSessionController = ReturnType<typeof createDebugSessionController>;
|
|
44
|
+
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACtC,eAAe,EACf,cAAc,GAAG,gBAAgB,GAAG,eAAe,GAAG,MAAM,CAC5D,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC3C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,OAAO,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,oBAAoB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;CACjD,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,OAAO,GAAE,6BAAkC;;;;;;;;;;;gBAoRhE,MAAM;;;;;yBAhJD,iBAAiB;6BAsBb,oBAAoB;0BAMvB,oBAAoB,GAAG,IAAI;4BAKzB,MAAM,EAAE;0BAKV,MAAM,GAAG,IAAI;2BA4BN,YAAY;;;sCAxBP,MAAM;wCAWJ,MAAM;;EAkHjD;AAED,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { fromStore, get, writable } from 'svelte/store';
|
|
2
|
+
export function createDebugSessionController(options = {}) {
|
|
3
|
+
const activeStore = writable(false);
|
|
4
|
+
const pausedStore = writable(false);
|
|
5
|
+
const pausedLineStore = writable(null);
|
|
6
|
+
const localsStore = writable([]);
|
|
7
|
+
const callStackStore = writable([]);
|
|
8
|
+
const runToCursorLineStore = writable(null);
|
|
9
|
+
const watchInputStore = writable('');
|
|
10
|
+
const watchExpressionsStore = writable([]);
|
|
11
|
+
const watchValuesStore = writable([]);
|
|
12
|
+
const breakpointsStore = writable([...(options.breakpoints || [])]);
|
|
13
|
+
const cursorLineStore = writable(options.cursorLine ?? null);
|
|
14
|
+
const terminalStore = writable(options.terminal);
|
|
15
|
+
const adapterStore = writable(options.adapter ?? null);
|
|
16
|
+
const activeState = fromStore(activeStore);
|
|
17
|
+
const pausedState = fromStore(pausedStore);
|
|
18
|
+
const pausedLineState = fromStore(pausedLineStore);
|
|
19
|
+
const localsState = fromStore(localsStore);
|
|
20
|
+
const callStackState = fromStore(callStackStore);
|
|
21
|
+
const runToCursorLineState = fromStore(runToCursorLineStore);
|
|
22
|
+
const watchInputState = fromStore(watchInputStore);
|
|
23
|
+
const watchExpressionsState = fromStore(watchExpressionsStore);
|
|
24
|
+
const watchValuesState = fromStore(watchValuesStore);
|
|
25
|
+
const breakpointsState = fromStore(breakpointsStore);
|
|
26
|
+
const cursorLineState = fromStore(cursorLineStore);
|
|
27
|
+
const terminalState = fromStore(terminalStore);
|
|
28
|
+
const adapterState = fromStore(adapterStore);
|
|
29
|
+
let watchRequestVersion = 0;
|
|
30
|
+
function shouldSyncBreakpoints() {
|
|
31
|
+
if (typeof options.syncBreakpointsWhile === 'function') {
|
|
32
|
+
return options.syncBreakpointsWhile();
|
|
33
|
+
}
|
|
34
|
+
if (typeof options.syncBreakpointsWhile === 'boolean') {
|
|
35
|
+
return options.syncBreakpointsWhile;
|
|
36
|
+
}
|
|
37
|
+
return get(activeStore);
|
|
38
|
+
}
|
|
39
|
+
function getEffectiveBreakpoints() {
|
|
40
|
+
const lines = [...get(breakpointsStore)];
|
|
41
|
+
const runToCursorLine = get(runToCursorLineStore);
|
|
42
|
+
if (runToCursorLine !== null && !lines.includes(runToCursorLine))
|
|
43
|
+
lines.push(runToCursorLine);
|
|
44
|
+
return lines.sort((left, right) => left - right);
|
|
45
|
+
}
|
|
46
|
+
function refreshWatchValues() {
|
|
47
|
+
const expressions = [...get(watchExpressionsStore)];
|
|
48
|
+
const adapter = get(adapterStore);
|
|
49
|
+
const localVariables = [...get(localsStore)];
|
|
50
|
+
const paused = get(pausedStore);
|
|
51
|
+
const terminal = get(terminalStore);
|
|
52
|
+
const version = ++watchRequestVersion;
|
|
53
|
+
if (!expressions.length) {
|
|
54
|
+
watchValuesStore.set([]);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (paused && terminal?.debugEvaluate) {
|
|
58
|
+
watchValuesStore.set(expressions.map((expression) => ({ expression, value: '...' })));
|
|
59
|
+
(async () => {
|
|
60
|
+
const resolved = [];
|
|
61
|
+
for (const expression of expressions) {
|
|
62
|
+
resolved.push({
|
|
63
|
+
expression,
|
|
64
|
+
value: await terminal.debugEvaluate(expression)
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
if (version === watchRequestVersion)
|
|
68
|
+
watchValuesStore.set(resolved);
|
|
69
|
+
})().catch(() => {
|
|
70
|
+
if (version === watchRequestVersion) {
|
|
71
|
+
watchValuesStore.set(expressions.map((expression) => ({ expression, value: 'error' })));
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
watchValuesStore.set(expressions.map((expression) => {
|
|
77
|
+
try {
|
|
78
|
+
return {
|
|
79
|
+
expression,
|
|
80
|
+
value: adapter
|
|
81
|
+
? adapter.evaluateExpression(expression, localVariables)
|
|
82
|
+
: 'error'
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return {
|
|
87
|
+
expression,
|
|
88
|
+
value: error instanceof Error && error.message === 'unavailable'
|
|
89
|
+
? '?'
|
|
90
|
+
: 'error'
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
function syncBreakpoints() {
|
|
96
|
+
const terminal = get(terminalStore);
|
|
97
|
+
if (!shouldSyncBreakpoints() || !terminal?.setBreakpoints)
|
|
98
|
+
return;
|
|
99
|
+
void terminal.setBreakpoints(getEffectiveBreakpoints());
|
|
100
|
+
}
|
|
101
|
+
function clearPauseState() {
|
|
102
|
+
runToCursorLineStore.set(null);
|
|
103
|
+
pausedLineStore.set(null);
|
|
104
|
+
localsStore.set([]);
|
|
105
|
+
callStackStore.set([]);
|
|
106
|
+
pausedStore.set(false);
|
|
107
|
+
}
|
|
108
|
+
function reset() {
|
|
109
|
+
activeStore.set(false);
|
|
110
|
+
clearPauseState();
|
|
111
|
+
refreshWatchValues();
|
|
112
|
+
}
|
|
113
|
+
function begin() {
|
|
114
|
+
activeStore.set(true);
|
|
115
|
+
clearPauseState();
|
|
116
|
+
refreshWatchValues();
|
|
117
|
+
syncBreakpoints();
|
|
118
|
+
}
|
|
119
|
+
function handleEvent(event) {
|
|
120
|
+
if (event.type === 'pause') {
|
|
121
|
+
activeStore.set(true);
|
|
122
|
+
runToCursorLineStore.set(null);
|
|
123
|
+
pausedLineStore.set(event.line);
|
|
124
|
+
localsStore.set(event.locals);
|
|
125
|
+
callStackStore.set(event.callStack);
|
|
126
|
+
pausedStore.set(true);
|
|
127
|
+
refreshWatchValues();
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (event.type === 'resume') {
|
|
131
|
+
pausedStore.set(false);
|
|
132
|
+
pausedLineStore.set(null);
|
|
133
|
+
localsStore.set([]);
|
|
134
|
+
callStackStore.set([]);
|
|
135
|
+
refreshWatchValues();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
reset();
|
|
139
|
+
}
|
|
140
|
+
function setTerminal(terminal) {
|
|
141
|
+
terminalStore.set(terminal);
|
|
142
|
+
refreshWatchValues();
|
|
143
|
+
syncBreakpoints();
|
|
144
|
+
}
|
|
145
|
+
function setAdapter(adapter) {
|
|
146
|
+
adapterStore.set(adapter);
|
|
147
|
+
refreshWatchValues();
|
|
148
|
+
}
|
|
149
|
+
function setBreakpoints(lines) {
|
|
150
|
+
breakpointsStore.set([...lines]);
|
|
151
|
+
syncBreakpoints();
|
|
152
|
+
}
|
|
153
|
+
function setCursorLine(line) {
|
|
154
|
+
cursorLineStore.set(line);
|
|
155
|
+
}
|
|
156
|
+
function addWatchExpression(expression) {
|
|
157
|
+
const watchInput = get(watchInputStore);
|
|
158
|
+
const watchExpressions = get(watchExpressionsStore);
|
|
159
|
+
const nextExpression = (expression || watchInput).trim();
|
|
160
|
+
if (!nextExpression || watchExpressions.includes(nextExpression))
|
|
161
|
+
return false;
|
|
162
|
+
watchExpressionsStore.set([...watchExpressions, nextExpression]);
|
|
163
|
+
watchInputStore.set('');
|
|
164
|
+
refreshWatchValues();
|
|
165
|
+
return true;
|
|
166
|
+
}
|
|
167
|
+
function removeWatchExpression(expression) {
|
|
168
|
+
watchExpressionsStore.set(get(watchExpressionsStore).filter((entry) => entry !== expression));
|
|
169
|
+
refreshWatchValues();
|
|
170
|
+
}
|
|
171
|
+
function clearWatches() {
|
|
172
|
+
watchInputStore.set('');
|
|
173
|
+
watchExpressionsStore.set([]);
|
|
174
|
+
refreshWatchValues();
|
|
175
|
+
}
|
|
176
|
+
async function sendCommand(command) {
|
|
177
|
+
const terminal = get(terminalStore);
|
|
178
|
+
if (!terminal?.debugCommand || !get(pausedStore))
|
|
179
|
+
return false;
|
|
180
|
+
await terminal.debugCommand(command);
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
async function runToCursor(targetLine = get(cursorLineStore)) {
|
|
184
|
+
const terminal = get(terminalStore);
|
|
185
|
+
const breakpoints = get(breakpointsStore);
|
|
186
|
+
if (!terminal?.debugCommand ||
|
|
187
|
+
!get(pausedStore) ||
|
|
188
|
+
!targetLine ||
|
|
189
|
+
targetLine === get(pausedLineStore) ||
|
|
190
|
+
!terminal.setBreakpoints) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const nextBreakpoints = breakpoints.includes(targetLine)
|
|
194
|
+
? [...breakpoints]
|
|
195
|
+
: [...breakpoints, targetLine].sort((left, right) => left - right);
|
|
196
|
+
runToCursorLineStore.set(breakpoints.includes(targetLine) ? null : targetLine);
|
|
197
|
+
await terminal.setBreakpoints(nextBreakpoints);
|
|
198
|
+
await terminal.debugCommand('continue');
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
async function stop() {
|
|
202
|
+
const terminal = get(terminalStore);
|
|
203
|
+
if (!terminal)
|
|
204
|
+
return false;
|
|
205
|
+
reset();
|
|
206
|
+
await terminal.stop?.();
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
get active() {
|
|
211
|
+
return activeState.current;
|
|
212
|
+
},
|
|
213
|
+
get paused() {
|
|
214
|
+
return pausedState.current;
|
|
215
|
+
},
|
|
216
|
+
get pausedLine() {
|
|
217
|
+
return pausedLineState.current;
|
|
218
|
+
},
|
|
219
|
+
get locals() {
|
|
220
|
+
return localsState.current;
|
|
221
|
+
},
|
|
222
|
+
get callStack() {
|
|
223
|
+
return callStackState.current;
|
|
224
|
+
},
|
|
225
|
+
get runToCursorLine() {
|
|
226
|
+
return runToCursorLineState.current;
|
|
227
|
+
},
|
|
228
|
+
get breakpoints() {
|
|
229
|
+
return breakpointsState.current;
|
|
230
|
+
},
|
|
231
|
+
get effectiveBreakpoints() {
|
|
232
|
+
return getEffectiveBreakpoints();
|
|
233
|
+
},
|
|
234
|
+
get cursorLine() {
|
|
235
|
+
return cursorLineState.current;
|
|
236
|
+
},
|
|
237
|
+
get canRunToCursor() {
|
|
238
|
+
const cursorLine = cursorLineState.current;
|
|
239
|
+
const terminal = terminalState.current;
|
|
240
|
+
return (pausedState.current &&
|
|
241
|
+
cursorLine !== null &&
|
|
242
|
+
cursorLine > 0 &&
|
|
243
|
+
cursorLine !== pausedLineState.current &&
|
|
244
|
+
!!terminal?.setBreakpoints);
|
|
245
|
+
},
|
|
246
|
+
get watchInput() {
|
|
247
|
+
return watchInputState.current;
|
|
248
|
+
},
|
|
249
|
+
set watchInput(value) {
|
|
250
|
+
watchInputStore.set(value);
|
|
251
|
+
},
|
|
252
|
+
get watchExpressions() {
|
|
253
|
+
return watchExpressionsState.current;
|
|
254
|
+
},
|
|
255
|
+
get watchValues() {
|
|
256
|
+
return watchValuesState.current;
|
|
257
|
+
},
|
|
258
|
+
begin,
|
|
259
|
+
reset,
|
|
260
|
+
handleEvent,
|
|
261
|
+
setTerminal,
|
|
262
|
+
setAdapter,
|
|
263
|
+
setBreakpoints,
|
|
264
|
+
setCursorLine,
|
|
265
|
+
sendCommand,
|
|
266
|
+
runToCursor,
|
|
267
|
+
stop,
|
|
268
|
+
addWatchExpression,
|
|
269
|
+
removeWatchExpression,
|
|
270
|
+
clearWatches
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
//# sourceMappingURL=controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACxE,YAAY,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DebugVariable } from '@wasm-idle/core';
|
|
2
|
+
import type monaco from 'monaco-editor';
|
|
3
|
+
import type { DebugLanguageAdapter } from '../language/index.js';
|
|
4
|
+
export type MonacoDebugActionsOptions = {
|
|
5
|
+
runToCursorLabel?: string;
|
|
6
|
+
onCursorLineChange?: (line: number | null) => void;
|
|
7
|
+
onRunToCursor?: (line: number | null) => void;
|
|
8
|
+
};
|
|
9
|
+
export declare class MonacoDebugView {
|
|
10
|
+
Monaco: typeof monaco;
|
|
11
|
+
editor: monaco.editor.IStandaloneCodeEditor;
|
|
12
|
+
breakpointDecorations: monaco.editor.IEditorDecorationsCollection;
|
|
13
|
+
inlineValueDecorations: monaco.editor.IEditorDecorationsCollection;
|
|
14
|
+
pausedLineWidget: monaco.editor.IContentWidget | null;
|
|
15
|
+
pausedLineWidgetNode: HTMLDivElement | null;
|
|
16
|
+
mouseHandler: monaco.IDisposable | null;
|
|
17
|
+
breakpoints: number[];
|
|
18
|
+
onBreakpointsChange?: (lines: number[]) => void;
|
|
19
|
+
constructor(MonacoModule: typeof monaco, editor: monaco.editor.IStandaloneCodeEditor, onBreakpointsChange?: (lines: number[]) => void);
|
|
20
|
+
setBreakpoints(lines: number[]): void;
|
|
21
|
+
setPauseState(pausedLine: number | null, locals: DebugVariable[], adapter: DebugLanguageAdapter | null): void;
|
|
22
|
+
dispose(): void;
|
|
23
|
+
}
|
|
24
|
+
export declare function attachMonacoDebugActions(editor: monaco.editor.IStandaloneCodeEditor, options?: MonacoDebugActionsOptions): {
|
|
25
|
+
dispose(): void;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=monaco.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco.d.ts","sourceRoot":"","sources":["../../src/editor/monaco.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,MAAM,yBAAyB,GAAG;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9C,CAAC;AAEF,qBAAa,eAAe;IAC3B,MAAM,EAAE,OAAO,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC;IAC5C,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;IAClE,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,4BAA4B,CAAC;IACnE,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,cAAc,GAAG,IAAI,CAAQ;IAC7D,oBAAoB,EAAE,cAAc,GAAG,IAAI,CAAQ;IACnD,YAAY,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,CAAQ;IAC/C,WAAW,EAAE,MAAM,EAAE,CAAM;IAC3B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;gBAG/C,YAAY,EAAE,OAAO,MAAM,EAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAC3C,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI;IAuBhD,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE;IAc9B,aAAa,CACZ,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAkErC,OAAO;CASP;AAED,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAC3C,OAAO,GAAE,yBAA8B;;EA0BvC"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export class MonacoDebugView {
|
|
2
|
+
Monaco;
|
|
3
|
+
editor;
|
|
4
|
+
breakpointDecorations;
|
|
5
|
+
inlineValueDecorations;
|
|
6
|
+
pausedLineWidget = null;
|
|
7
|
+
pausedLineWidgetNode = null;
|
|
8
|
+
mouseHandler = null;
|
|
9
|
+
breakpoints = [];
|
|
10
|
+
onBreakpointsChange;
|
|
11
|
+
constructor(MonacoModule, editor, onBreakpointsChange) {
|
|
12
|
+
this.Monaco = MonacoModule;
|
|
13
|
+
this.editor = editor;
|
|
14
|
+
this.onBreakpointsChange = onBreakpointsChange;
|
|
15
|
+
this.breakpointDecorations = editor.createDecorationsCollection();
|
|
16
|
+
this.inlineValueDecorations = editor.createDecorationsCollection();
|
|
17
|
+
this.mouseHandler = editor.onMouseDown((event) => {
|
|
18
|
+
if (event.target.type !== this.Monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN &&
|
|
19
|
+
event.target.type !== this.Monaco.editor.MouseTargetType.GUTTER_LINE_DECORATIONS) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const line = event.target.position?.lineNumber;
|
|
23
|
+
if (!line)
|
|
24
|
+
return;
|
|
25
|
+
const next = this.breakpoints.includes(line)
|
|
26
|
+
? this.breakpoints.filter((value) => value !== line)
|
|
27
|
+
: [...this.breakpoints, line].sort((a, b) => a - b);
|
|
28
|
+
this.onBreakpointsChange?.(next);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
setBreakpoints(lines) {
|
|
32
|
+
this.breakpoints = lines;
|
|
33
|
+
this.breakpointDecorations.set(lines.map((line) => ({
|
|
34
|
+
range: new this.Monaco.Range(line, 1, line, 1),
|
|
35
|
+
options: {
|
|
36
|
+
isWholeLine: false,
|
|
37
|
+
glyphMarginClassName: 'debug-breakpoint-glyph',
|
|
38
|
+
glyphMarginHoverMessage: { value: 'Breakpoint' }
|
|
39
|
+
}
|
|
40
|
+
})));
|
|
41
|
+
}
|
|
42
|
+
setPauseState(pausedLine, locals, adapter) {
|
|
43
|
+
const lineMaxColumn = pausedLine
|
|
44
|
+
? this.editor.getModel()?.getLineMaxColumn(pausedLine) || 1
|
|
45
|
+
: 1;
|
|
46
|
+
if (pausedLine) {
|
|
47
|
+
const fontInfo = this.editor.getOption(this.Monaco.editor.EditorOption.fontInfo);
|
|
48
|
+
if (!this.pausedLineWidgetNode) {
|
|
49
|
+
this.pausedLineWidgetNode = document.createElement('div');
|
|
50
|
+
this.pausedLineWidgetNode.className = 'debug-paused-line-widget';
|
|
51
|
+
}
|
|
52
|
+
this.pausedLineWidgetNode.style.height = `${fontInfo.lineHeight}px`;
|
|
53
|
+
this.pausedLineWidgetNode.style.width = `${this.editor.getLayoutInfo().contentWidth}px`;
|
|
54
|
+
if (!this.pausedLineWidget) {
|
|
55
|
+
this.pausedLineWidget = {
|
|
56
|
+
getId: () => 'wasm-idle-debug-current-line',
|
|
57
|
+
getDomNode: () => this.pausedLineWidgetNode,
|
|
58
|
+
getPosition: () => ({
|
|
59
|
+
position: { lineNumber: pausedLine, column: 1 },
|
|
60
|
+
preference: [this.Monaco.editor.ContentWidgetPositionPreference.EXACT]
|
|
61
|
+
})
|
|
62
|
+
};
|
|
63
|
+
this.editor.addContentWidget(this.pausedLineWidget);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.editor.layoutContentWidget(this.pausedLineWidget);
|
|
67
|
+
}
|
|
68
|
+
this.editor.revealLineInCenterIfOutsideViewport(pausedLine);
|
|
69
|
+
}
|
|
70
|
+
else if (this.pausedLineWidget) {
|
|
71
|
+
this.editor.removeContentWidget(this.pausedLineWidget);
|
|
72
|
+
this.pausedLineWidget = null;
|
|
73
|
+
this.pausedLineWidgetNode = null;
|
|
74
|
+
}
|
|
75
|
+
const inlineLocals = pausedLine && adapter
|
|
76
|
+
? adapter.selectInlineLocals(this.editor.getModel()?.getLineContent(pausedLine) || '', locals)
|
|
77
|
+
: [];
|
|
78
|
+
this.inlineValueDecorations.set(pausedLine && inlineLocals.length
|
|
79
|
+
? [
|
|
80
|
+
{
|
|
81
|
+
range: new this.Monaco.Range(pausedLine, lineMaxColumn, pausedLine, lineMaxColumn),
|
|
82
|
+
options: {
|
|
83
|
+
showIfCollapsed: true,
|
|
84
|
+
after: {
|
|
85
|
+
content: ` ${inlineLocals
|
|
86
|
+
.map((variable) => `${variable.name} = ${variable.value}`)
|
|
87
|
+
.join(', ')}`,
|
|
88
|
+
inlineClassName: 'debug-inline-values',
|
|
89
|
+
inlineClassNameAffectsLetterSpacing: true
|
|
90
|
+
},
|
|
91
|
+
zIndex: 20
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
: []);
|
|
96
|
+
}
|
|
97
|
+
dispose() {
|
|
98
|
+
this.breakpointDecorations.clear();
|
|
99
|
+
this.inlineValueDecorations.clear();
|
|
100
|
+
if (this.pausedLineWidget)
|
|
101
|
+
this.editor.removeContentWidget(this.pausedLineWidget);
|
|
102
|
+
this.pausedLineWidget = null;
|
|
103
|
+
this.pausedLineWidgetNode = null;
|
|
104
|
+
this.mouseHandler?.dispose();
|
|
105
|
+
this.mouseHandler = null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export function attachMonacoDebugActions(editor, options = {}) {
|
|
109
|
+
const disposables = [];
|
|
110
|
+
disposables.push(editor.onDidChangeCursorPosition((event) => {
|
|
111
|
+
options.onCursorLineChange?.(event.position?.lineNumber || null);
|
|
112
|
+
}));
|
|
113
|
+
options.onCursorLineChange?.(editor.getPosition()?.lineNumber || 1);
|
|
114
|
+
if (options.onRunToCursor) {
|
|
115
|
+
disposables.push(editor.addAction({
|
|
116
|
+
id: 'wasm-idle-run-to-cursor',
|
|
117
|
+
label: options.runToCursorLabel || 'Run to Cursor',
|
|
118
|
+
contextMenuGroupId: 'navigation',
|
|
119
|
+
contextMenuOrder: 0.5,
|
|
120
|
+
run: () => options.onRunToCursor?.(editor.getPosition()?.lineNumber || null)
|
|
121
|
+
}));
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
dispose() {
|
|
125
|
+
while (disposables.length)
|
|
126
|
+
disposables.pop()?.dispose();
|
|
127
|
+
options.onCursorLineChange?.(null);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=monaco.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monaco.js","sourceRoot":"","sources":["../../src/editor/monaco.ts"],"names":[],"mappings":"AAWA,MAAM,OAAO,eAAe;IAC3B,MAAM,CAAgB;IACtB,MAAM,CAAsC;IAC5C,qBAAqB,CAA6C;IAClE,sBAAsB,CAA6C;IACnE,gBAAgB,GAAwC,IAAI,CAAC;IAC7D,oBAAoB,GAA0B,IAAI,CAAC;IACnD,YAAY,GAA8B,IAAI,CAAC;IAC/C,WAAW,GAAa,EAAE,CAAC;IAC3B,mBAAmB,CAA6B;IAEhD,YACC,YAA2B,EAC3B,MAA2C,EAC3C,mBAA+C;QAE/C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QAClE,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,2BAA2B,EAAE,CAAC;QACnE,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,IACC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB;gBAC5E,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,uBAAuB,EAC/E,CAAC;gBACF,OAAO;YACR,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;YAC/C,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;gBACpD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,KAAe;QAC7B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACpB,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,OAAO,EAAE;gBACR,WAAW,EAAE,KAAK;gBAClB,oBAAoB,EAAE,wBAAwB;gBAC9C,uBAAuB,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;aAChD;SACD,CAAC,CAAC,CACH,CAAC;IACH,CAAC;IAED,aAAa,CACZ,UAAyB,EACzB,MAAuB,EACvB,OAAoC;QAEpC,MAAM,aAAa,GAAG,UAAU;YAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,UAAU,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACjF,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAChC,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC1D,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,0BAA0B,CAAC;YAClE,CAAC;YACD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC;YACpE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,YAAY,IAAI,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,GAAG;oBACvB,KAAK,EAAE,GAAG,EAAE,CAAC,8BAA8B;oBAC3C,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAqB;oBAC5C,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;wBACnB,QAAQ,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,EAAE;wBAC/C,UAAU,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC;qBACtE,CAAC;iBACF,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,UAAU,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,MAAM,YAAY,GACjB,UAAU,IAAI,OAAO;YACpB,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,UAAU,CAAC,IAAI,EAAE,EACxD,MAAM,CACN;YACF,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAC9B,UAAU,IAAI,YAAY,CAAC,MAAM;YAChC,CAAC,CAAC;gBACA;oBACC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAC3B,UAAU,EACV,aAAa,EACb,UAAU,EACV,aAAa,CACb;oBACD,OAAO,EAAE;wBACR,eAAe,EAAE,IAAI;wBACrB,KAAK,EAAE;4BACN,OAAO,EAAE,KAAK,YAAY;iCACxB,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;iCACzD,IAAI,CAAC,IAAI,CAAC,EAAE;4BACd,eAAe,EAAE,qBAAqB;4BACtC,mCAAmC,EAAE,IAAI;yBACzC;wBACD,MAAM,EAAE,EAAE;qBACV;iBACD;aACD;YACF,CAAC,CAAC,EAAE,CACL,CAAC;IACH,CAAC;IAED,OAAO;QACN,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC1B,CAAC;CACD;AAED,MAAM,UAAU,wBAAwB,CACvC,MAA2C,EAC3C,UAAqC,EAAE;IAEvC,MAAM,WAAW,GAAyB,EAAE,CAAC;IAC7C,WAAW,CAAC,IAAI,CACf,MAAM,CAAC,yBAAyB,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1C,OAAO,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CACF,CAAC;IACF,OAAO,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,UAAU,IAAI,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3B,WAAW,CAAC,IAAI,CACf,MAAM,CAAC,SAAS,CAAC;YAChB,EAAE,EAAE,yBAAyB;YAC7B,KAAK,EAAE,OAAO,CAAC,gBAAgB,IAAI,eAAe;YAClD,kBAAkB,EAAE,YAAY;YAChC,gBAAgB,EAAE,GAAG;YACrB,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,UAAU,IAAI,IAAI,CAAC;SAC5E,CAAC,CACF,CAAC;IACH,CAAC;IACD,OAAO;QACN,OAAO;YACN,OAAO,WAAW,CAAC,MAAM;gBAAE,WAAW,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC;YACxD,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;KACD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { DebugVariable } from '@wasm-idle/core';
|
|
2
|
+
export type DebugExpressionScalar = number | boolean | string | null;
|
|
3
|
+
export type DebugExpressionArray = DebugExpressionValue[] & {
|
|
4
|
+
truncated?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export interface DebugExpressionIndexedValue {
|
|
7
|
+
__debugExpressionKind: 'array';
|
|
8
|
+
length?: number;
|
|
9
|
+
truncated?: boolean;
|
|
10
|
+
get: (index: number) => DebugExpressionValue;
|
|
11
|
+
keys?: () => number[];
|
|
12
|
+
}
|
|
13
|
+
export interface DebugExpressionObjectValue {
|
|
14
|
+
__debugExpressionKind: 'object';
|
|
15
|
+
has: (name: string) => boolean;
|
|
16
|
+
get: (name: string) => DebugExpressionValue;
|
|
17
|
+
keys?: () => string[];
|
|
18
|
+
}
|
|
19
|
+
export interface DebugExpressionRecord {
|
|
20
|
+
[key: string]: DebugExpressionValue;
|
|
21
|
+
}
|
|
22
|
+
export type DebugExpressionValue = DebugExpressionScalar | DebugExpressionArray | DebugExpressionIndexedValue | DebugExpressionObjectValue | DebugExpressionRecord;
|
|
23
|
+
export declare const parseStoredDebugValue: (value: string) => DebugExpressionValue;
|
|
24
|
+
export declare const formatDebugExpressionValue: (value: DebugExpressionValue) => string;
|
|
25
|
+
export declare const evaluateDebugExpressionWithResolver: (expression: string, resolveIdentifier: (name: string) => DebugExpressionValue) => string;
|
|
26
|
+
export declare function evaluateDebugExpression(expression: string, variables: DebugVariable[]): string;
|
|
27
|
+
//# sourceMappingURL=expression.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expression.d.ts","sourceRoot":"","sources":["../src/expression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAarD,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,EAAE,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AACpF,MAAM,WAAW,2BAA2B;IAC3C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,oBAAoB,CAAC;IAC7C,IAAI,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,0BAA0B;IAC1C,qBAAqB,EAAE,QAAQ,CAAC;IAChC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC/B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,oBAAoB,CAAC;IAC5C,IAAI,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,qBAAqB;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CACpC;AACD,MAAM,MAAM,oBAAoB,GAC7B,qBAAqB,GACrB,oBAAoB,GACpB,2BAA2B,GAC3B,0BAA0B,GAC1B,qBAAqB,CAAC;AA4NzB,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,KAAG,oBAsBrD,CAAC;AAwDF,eAAO,MAAM,0BAA0B,GAAI,OAAO,oBAAoB,WAClB,CAAC;AAErD,eAAO,MAAM,mCAAmC,GAC/C,YAAY,MAAM,EAClB,mBAAmB,CAAC,IAAI,EAAE,MAAM,KAAK,oBAAoB,WAsMzD,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,UAQrF"}
|