Merge commit '6e92d2345e8231a44556ce7d416451f5f3e6c398' as 'engine262'

This commit is contained in:
2026-03-27 10:07:29 +05:30
433 changed files with 90478 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
import type { DebuggerContext, DebuggerNamespace, RuntimeNamespace } from '../../lib/inspector/types.d.mts';
import { Inspector } from '#self/inspector';
export class TestInspector extends Inspector {
messages: object[] = [];
flush() {
const old = this.messages;
this.messages = [];
return old;
}
onInspectorMessage?: (message: object) => void;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
protected override send(data: any): void {
this.messages.push(data);
if ('id' in data) {
let meaningfulData = data;
if (data.result) {
meaningfulData = data.result;
if (!data.result.exceptionDetails) {
if (data.result.result && Object.keys(data.result).length <= 2) {
meaningfulData = data.result.result;
}
}
}
this.#callbacks.at(data.id)?.resolve(meaningfulData);
}
this.onInspectorMessage?.(data);
}
protected override onMessage(id: number, method: string, params: object | void): void {
super.onMessage(id, method, params);
this.messages.push({ id, method, params });
}
debugger: {
[T in keyof DebuggerNamespace]-?: (params: DebuggerNamespace[T] extends undefined | ((params: infer O, context: DebuggerContext) => unknown) ? O : void) => Promise<object>;
};
runtime: {
[T in keyof RuntimeNamespace]-?: (params: RuntimeNamespace[T] extends undefined | ((params: infer O, context: DebuggerContext) => unknown) ? O : void) => Promise<object>;
};
#callbacks: PromiseWithResolvers<unknown>[] = [];
constructor() {
super();
const object = (namespace: string) => Object.create(
new Proxy({}, {
get: (_, p, receiver) => {
if (typeof p === 'symbol') {
return undefined;
}
const f = (params: object) => {
this.onMessage(this.#callbacks.length, `${namespace}.${p}`, params);
const promise = Promise.withResolvers();
this.#callbacks.push(promise);
return promise.promise;
};
Reflect.defineProperty(receiver, p, { configurable: true, value: f });
return f;
},
}),
);
this.runtime = object('Runtime');
this.debugger = object('Debugger');
}
// helpers
eval(expression: string) {
return this.runtime.evaluate({
expression,
uniqueContextId: '0',
});
}
perview(expression: string) {
return this.runtime.evaluate({
expression,
uniqueContextId: '0',
throwOnSideEffect: true,
});
}
}