@specy/x86 2.0.0 → 2.0.1
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 +2 -0
- package/dist/index.d.mts +11 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +32 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -114,3 +114,5 @@ emulator.on('stderr', (charCode) => { /* ... */ })
|
|
|
114
114
|
emulator.on('signal', (signal) => { /* ... */ })
|
|
115
115
|
emulator.on('inputRequest', () => { /* ... */ })
|
|
116
116
|
```
|
|
117
|
+
|
|
118
|
+
Callbacks passed to `createX86Emulator()` and handlers registered with `on()` may return either `void` or `Promise<void>`. Async callbacks are observed but not awaited by the emulator, so UI work can be scheduled without blocking execution. `stdin` remains synchronous because it is called directly by Emscripten's filesystem; for non-blocking UI input, listen for `inputRequest` and call `provideInput()` when the user submits text.
|
package/dist/index.d.mts
CHANGED
|
@@ -77,6 +77,10 @@ declare function nasmDiagnostics(str: string): DiagnosticLine[];
|
|
|
77
77
|
declare function gnuDiagnostics(str: string): DiagnosticLine[];
|
|
78
78
|
declare function fasmDiagnostics(str: string): DiagnosticLine[];
|
|
79
79
|
//#endregion
|
|
80
|
+
//#region src/callbacks.d.ts
|
|
81
|
+
type MaybePromise<T> = T | PromiseLike<T>;
|
|
82
|
+
declare function observeCallbackResult(result: MaybePromise<void>): void;
|
|
83
|
+
//#endregion
|
|
80
84
|
//#region src/types.d.ts
|
|
81
85
|
declare const X86_REGISTER_NAMES: readonly ["rax", "rbx", "rcx", "rdx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", "rip"];
|
|
82
86
|
type X86RegisterName = (typeof X86_REGISTER_NAMES)[number];
|
|
@@ -129,7 +133,7 @@ type X86EmulatorEventMap = {
|
|
|
129
133
|
};
|
|
130
134
|
};
|
|
131
135
|
type X86EmulatorEventName = keyof X86EmulatorEventMap;
|
|
132
|
-
type X86EmulatorEventHandler<T extends X86EmulatorEventName> = (event: X86EmulatorEventMap[T]) => void
|
|
136
|
+
type X86EmulatorEventHandler<T extends X86EmulatorEventName> = (event: X86EmulatorEventMap[T]) => MaybePromise<void>;
|
|
133
137
|
//#endregion
|
|
134
138
|
//#region src/wasm-types.d.ts
|
|
135
139
|
type EmscriptenFS = {
|
|
@@ -248,13 +252,13 @@ type BlinkenlibModule = {
|
|
|
248
252
|
//#region src/blink-runtime.d.ts
|
|
249
253
|
type BlinkRuntimeCallbacks = {
|
|
250
254
|
stdin?: () => number | null;
|
|
251
|
-
stdout?: (charCode: number) => void
|
|
252
|
-
stderr?: (charCode: number) => void
|
|
253
|
-
signal?: (signal: number, code: number) => void
|
|
254
|
-
stateChange?: (state: BlinkState, oldState: BlinkState) => void
|
|
255
|
+
stdout?: (charCode: number) => MaybePromise<void>;
|
|
256
|
+
stderr?: (charCode: number) => MaybePromise<void>;
|
|
257
|
+
signal?: (signal: number, code: number) => MaybePromise<void>;
|
|
258
|
+
stateChange?: (state: BlinkState, oldState: BlinkState) => MaybePromise<void>;
|
|
255
259
|
inputRequest?: (event: {
|
|
256
260
|
maxBytes: bigint;
|
|
257
|
-
}) => void
|
|
261
|
+
}) => MaybePromise<void>;
|
|
258
262
|
};
|
|
259
263
|
type BlinkRuntimeOptions = {
|
|
260
264
|
mode?: AssemblerMode | AssemblerId;
|
|
@@ -558,5 +562,5 @@ declare class X86Emulator extends BaseEmulator<BlinkRuntime, X86RegisterName, X8
|
|
|
558
562
|
}
|
|
559
563
|
declare function createX86Emulator(options?: X86EmulatorOptions): Promise<X86Emulator>;
|
|
560
564
|
//#endregion
|
|
561
|
-
export { AssemblerId, AssemblerMode, BaseEmulator, Binary, BlinkRunOptions, BlinkRuntime, BlinkRuntimeCallbacks, BlinkRuntimeOptions, BlinkState, BlinkenlibModule, BlinkenlibModuleOptions, CompilationError, DEFAULT_ASSEMBLER_ID, DiagnosticLine, DiagnosticsParser, DisassemblySnapshot, EmscriptenFS, EmulatorConfig, EmulatorDecoration, EmulatorStatus, ExecutionStep, Instruction, MemoryReadResult, MemoryWriteResult, MonacoError, MutationOperation, NativeControlFlowKind, NativeInstruction, NativeMemoryWrite, NativeRunControls, NativeRunStop, NativeRunStopKind, NativeStepInfo, NativeSymbol, RegisterHex, RegisterSize, RegisterSnapshot, ResourceSource, StackFrame, StatusRegister, StopReason, StopReasonKind, X86CompilationDiagnostic, X86CompileResult, X86Emulator, X86EmulatorEventHandler, X86EmulatorEventMap, X86EmulatorEventName, X86EmulatorOptions, X86RegisterName, X86_REGISTER_NAMES, assemblers, createX86Emulator, defaultResourceUrl, fasmDiagnostics, gnuDiagnostics, isNodeRuntime, nasmDiagnostics, readResourceBytes, toResourceUrl };
|
|
565
|
+
export { AssemblerId, AssemblerMode, BaseEmulator, Binary, BlinkRunOptions, BlinkRuntime, BlinkRuntimeCallbacks, BlinkRuntimeOptions, BlinkState, BlinkenlibModule, BlinkenlibModuleOptions, CompilationError, DEFAULT_ASSEMBLER_ID, DiagnosticLine, DiagnosticsParser, DisassemblySnapshot, EmscriptenFS, EmulatorConfig, EmulatorDecoration, EmulatorStatus, ExecutionStep, Instruction, MaybePromise, MemoryReadResult, MemoryWriteResult, MonacoError, MutationOperation, NativeControlFlowKind, NativeInstruction, NativeMemoryWrite, NativeRunControls, NativeRunStop, NativeRunStopKind, NativeStepInfo, NativeSymbol, RegisterHex, RegisterSize, RegisterSnapshot, ResourceSource, StackFrame, StatusRegister, StopReason, StopReasonKind, X86CompilationDiagnostic, X86CompileResult, X86Emulator, X86EmulatorEventHandler, X86EmulatorEventMap, X86EmulatorEventName, X86EmulatorOptions, X86RegisterName, X86_REGISTER_NAMES, assemblers, createX86Emulator, defaultResourceUrl, fasmDiagnostics, gnuDiagnostics, isNodeRuntime, nasmDiagnostics, observeCallbackResult, readResourceBytes, toResourceUrl };
|
|
562
566
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/resources.ts","../src/assemblers.ts","../src/types.ts","../src/wasm-types.ts","../src/blink-runtime.ts","../src/interface.ts","../src/x86-emulator.ts"],"mappings":";KAAY,cAAA,YAA0B,GAAA,GAAM,WAAA,GAAc,UAAA;AAAA,iBAE1C,aAAA,CAAA;AAAA,iBAQA,aAAA,CAAc,MAAA,WAAiB,GAAA,GAAM,GAAA;AAAA,iBAS/B,iBAAA,CAAkB,MAAA,EAAQ,cAAA,GAAiB,OAAA,CAAQ,UAAA;AAAA,iBAiCzD,kBAAA,CAAmB,YAAA,UAAsB,OAAA,WAAkB,GAAA;;;UClD1D,MAAA;EACb,IAAA,EAAM,cAAA;EACN,QAAA;AAAA;AAAA,UAGa,cAAA;EACb,IAAA;EACA,KAAA;AAAA;AAAA,KAGQ,iBAAA,IAAqB,aAAA,aAA0B,cAAA;AAAA,UAE1C,aAAA;EACb,EAAA;EACA,WAAA;EACA,WAAA;EACA,iBAAA,GAAoB,iBAAA;EACpB,QAAA;IACI,SAAA,EAAW,MAAA;IACX,MAAA,GAAS,MAAA;EAAA;AAAA;AAAA,cAOJ,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CD,WAAA,gBAA2B,UAAA;AAAA,cAE1B,oBAAA,EAAsB,WAAA;AAAA,iBAEnB,eAAA,CAAgB,GAAA,WAAc,cAAA;AAAA,iBAgB9B,cAAA,CAAe,GAAA,WAAc,cAAA;AAAA,iBAgB7B,eAAA,CAAgB,GAAA,WAAc,cAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/resources.ts","../src/assemblers.ts","../src/callbacks.ts","../src/types.ts","../src/wasm-types.ts","../src/blink-runtime.ts","../src/interface.ts","../src/x86-emulator.ts"],"mappings":";KAAY,cAAA,YAA0B,GAAA,GAAM,WAAA,GAAc,UAAA;AAAA,iBAE1C,aAAA,CAAA;AAAA,iBAQA,aAAA,CAAc,MAAA,WAAiB,GAAA,GAAM,GAAA;AAAA,iBAS/B,iBAAA,CAAkB,MAAA,EAAQ,cAAA,GAAiB,OAAA,CAAQ,UAAA;AAAA,iBAiCzD,kBAAA,CAAmB,YAAA,UAAsB,OAAA,WAAkB,GAAA;;;UClD1D,MAAA;EACb,IAAA,EAAM,cAAA;EACN,QAAA;AAAA;AAAA,UAGa,cAAA;EACb,IAAA;EACA,KAAA;AAAA;AAAA,KAGQ,iBAAA,IAAqB,aAAA,aAA0B,cAAA;AAAA,UAE1C,aAAA;EACb,EAAA;EACA,WAAA;EACA,WAAA;EACA,iBAAA,GAAoB,iBAAA;EACpB,QAAA;IACI,SAAA,EAAW,MAAA;IACX,MAAA,GAAS,MAAA;EAAA;AAAA;AAAA,cAOJ,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+CD,WAAA,gBAA2B,UAAA;AAAA,cAE1B,oBAAA,EAAsB,WAAA;AAAA,iBAEnB,eAAA,CAAgB,GAAA,WAAc,cAAA;AAAA,iBAgB9B,cAAA,CAAe,GAAA,WAAc,cAAA;AAAA,iBAgB7B,eAAA,CAAgB,GAAA,WAAc,cAAA;;;KC/GlC,YAAA,MAAkB,CAAA,GAAI,WAAA,CAAY,CAAA;AAAA,iBAE9B,qBAAA,CAAsB,MAAA,EAAQ,YAAA;;;cCAjC,kBAAA;AAAA,KAoBD,eAAA,WAA0B,kBAAA;AAAA,aAE1B,UAAA;EACR,QAAA;EACA,KAAA;EACA,UAAA;EACA,OAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,oBAAA;EACA,cAAA;AAAA;AAAA,KAGQ,cAAA;AAAA,KAEA,UAAA;EACR,QAAA;EACA,QAAA;EACA,OAAA;EACA,IAAA,GAAO,cAAA;EACP,OAAA;EACA,UAAA;EACA,oBAAA;AAAA;AAAA,KAGQ,wBAAA;EACR,IAAA;EACA,KAAA;AAAA;AAAA,KAGQ,gBAAA;EACJ,EAAA;EAAU,MAAA;AAAA;EACV,EAAA;EAAW,MAAA,EAAQ,wBAAA;EAA4B,MAAA;AAAA;AAAA,KAE3C,mBAAA;EACR,WAAA;IAAe,KAAA,EAAO,UAAA;IAAY,QAAA,EAAU,UAAA;EAAA;EAC5C,MAAA;EACA,MAAA;EACA,MAAA;IAAU,MAAA;IAAgB,IAAA;EAAA;EAC1B,YAAA;IAAgB,QAAA;EAAA;AAAA;AAAA,KAGR,oBAAA,SAA6B,mBAAA;AAAA,KAE7B,uBAAA,WAAkC,oBAAA,KAC1C,KAAA,EAAO,mBAAA,CAAoB,CAAA,MAC1B,YAAA;;;KCnEO,YAAA;EACR,IAAA,CAAK,KAAA,uBAA4B,MAAA,GAAS,QAAA,mBAA2B,MAAA,GAAS,QAAA;EAC9E,SAAA,CAAU,IAAA,UAAc,IAAA,WAAe,UAAA;EACvC,IAAA,CAAK,IAAA,UAAc,KAAA;EACnB,KAAA,CAAM,MAAA,WAAiB,IAAA,EAAM,UAAA,EAAY,MAAA,UAAgB,MAAA,UAAgB,QAAA;EACzE,KAAA,CAAM,MAAA;EACN,KAAA,CAAM,IAAA,UAAc,IAAA;EACpB,QAAA,CAAS,IAAA,UAAc,OAAA;IAAY,QAAA;EAAA,IAAiC,UAAA;AAAA;AAAA,KAG5D,uBAAA;EACR,YAAA;EACA,MAAA,IAAU,MAAA,EAAQ,gBAAA;EAClB,eAAA,IACI,OAAA,EAAS,WAAA,CAAY,OAAA,EACrB,eAAA,GAAkB,QAAA,EAAU,WAAA,CAAY,QAAA,EAAU,MAAA,GAAS,WAAA,CAAY,MAAA;AAAA;AAAA,KAInE,gBAAA;EACR,SAAA,EAAW,MAAA,CAAO,eAAA;EAClB,GAAA;EACA,GAAA;EACA,EAAA;EACA,KAAA;AAAA;AAAA,KAGQ,gBAAA;EACJ,EAAA;EAAU,KAAA;AAAA;EACV,EAAA;EAAW,KAAA;EAAe,SAAA;AAAA;AAAA,KAEtB,iBAAA;EACJ,EAAA;EAAU,YAAA;AAAA;EACV,EAAA;EAAW,KAAA;EAAe,YAAA;AAAA;AAAA,KAEtB,iBAAA;AAAA,KAEA,aAAA;EACR,IAAA,EAAM,iBAAA;EACN,OAAA;EACA,oBAAA;AAAA;AAAA,KAGQ,iBAAA;EACR,WAAA;AAAA;AAAA,KAGQ,qBAAA;AAAA,KAEA,iBAAA;EACR,OAAA;EACA,IAAA;EACA,GAAA;EACA,SAAA;AAAA;AAAA,KAGQ,cAAA;EAEF,KAAA;EACA,YAAA,EAAc,iBAAA;AAAA;EAGd,KAAA;EACA,QAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,UAAA;EACA,WAAA,EAAa,qBAAA;EACb,qBAAA;EACA,YAAA,EAAc,iBAAA;AAAA;AAAA,KAGZ,YAAA;EACR,OAAA;EACA,IAAA;AAAA;AAAA,KAGQ,iBAAA;EACR,OAAA;EACA,IAAA;EACA,IAAA;AAAA;AAAA,KAGQ,mBAAA;EACR,KAAA;EACA,WAAA;AAAA;AAAA,KAGQ,gBAAA;EACR,EAAA,EAAI,YAAA;EACJ,QAAA,CAAS,IAAA;EACT,WAAA,CAAY,EAAA,MAAQ,IAAA,oBAAwB,SAAA;EAC5C,oBAAA;EACA,eAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,oBAAA;EACA,0BAAA;EACA,0BAAA;EACA,qBAAA,CAAsB,QAAA,EAAU,eAAA;EAChC,qBAAA,CAAsB,QAAA,EAAU,eAAA,EAAiB,KAAA;EACjD,kBAAA,CAAmB,KAAA;EACnB,0BAAA,CAA2B,OAAA;EAC3B,6BAAA,IAAiC,gBAAA;EACjC,yBAAA,CAA0B,OAAA,UAAiB,MAAA,WAAiB,gBAAA;EAC5D,0BAAA,CAA2B,OAAA,UAAiB,KAAA,EAAO,UAAA,cAAwB,iBAAA;EAC3E,wBAAA,IAA4B,mBAAA;EAC5B,0BAAA,CAA2B,QAAA,UAAkB,IAAA,UAAc,IAAA;EAC3D,0BAAA;EACA,wBAAA,CAAyB,KAAA,UAAe,mBAAA;EACxC,wBAAA,IAA4B,iBAAA;EAC5B,oBAAA,IAAwB,aAAA;EACxB,yBAAA,IAA6B,cAAA;EAC7B,0BAAA,CAA2B,OAAA,WAAkB,iBAAA;EAC7C,uBAAA,CAAwB,OAAA,WAAkB,YAAA;AAAA;;;KCvElC,qBAAA;EACR,KAAA;EACA,MAAA,IAAU,QAAA,aAAqB,YAAA;EAC/B,MAAA,IAAU,QAAA,aAAqB,YAAA;EAC/B,MAAA,IAAU,MAAA,UAAgB,IAAA,aAAiB,YAAA;EAC3C,WAAA,IAAe,KAAA,EAAO,UAAA,EAAY,QAAA,EAAU,UAAA,KAAe,YAAA;EAC3D,YAAA,IAAgB,KAAA;IAAS,QAAA;EAAA,MAAuB,YAAA;AAAA;AAAA,KAGxC,mBAAA;EACR,IAAA,GAAO,aAAA,GAAgB,WAAA;EACvB,SAAA,GAAY,qBAAA;EACZ,SAAA,IAAa,QAAA;AAAA;AAAA,KAGL,eAAA;EACR,KAAA;EACA,mBAAA;AAAA;AAAA,cAQS,YAAA;EAAA,SACA,MAAA,EAAQ,gBAAA;EAEjB,IAAA,EAAM,aAAA;EACN,KAAA,EAAK,UAAA;EACL,UAAA,EAAY,UAAA;EACZ,aAAA;EACA,eAAA,EAAiB,KAAA;IAAQ,IAAA;IAAc,KAAA;EAAA;EAAA,iBAEtB,SAAA;EAAA,iBACA,SAAA;EAAA,iBACA,YAAA;EAAA,iBACA,UAAA;EAAA,QACT,SAAA;EAAA,iBAES,WAAA;EAAA,iBACA,WAAA;EAAA,QAEV,WAAA,CAAA;EAAA,OAYM,MAAA,CAAO,OAAA,GAAS,mBAAA,GAA2B,OAAA,CAAQ,YAAA;EA8C1D,OAAA,CAAQ,IAAA,EAAM,aAAA,GAAgB,WAAA,GAAc,OAAA;EAY5C,eAAA,CAAgB,IAAA,WAAe,OAAA,CAAQ,gBAAA;EAoB7C,OAAA,CAAQ,IAAA,EAAM,WAAA,GAAc,UAAA;EAQ5B,MAAA,CAAA;EAIA,GAAA,CAAA;EAIA,IAAA,CAAA;EAQA,QAAA,CAAA;EAQM,eAAA,CAAgB,OAAA,GAAS,eAAA,GAAuB,OAAA,CAAQ,UAAA;EAe9D,YAAA,CAAa,IAAA;EAQb,eAAA,CAAgB,OAAA,UAAiB,MAAA,WAAiB,UAAA;EAQlD,gBAAA,CAAiB,OAAA,UAAiB,IAAA,EAAM,UAAA;EAKxC,mBAAA,CAAA;EAIA,yBAAA,CAAA;EAIA,mBAAA,CAAA,GAAuB,gBAAA;EAIvB,WAAA,CAAY,QAAA,QAAgB,gBAAA;EAI5B,WAAA,CAAY,QAAA,QAAgB,gBAAA,eAA+B,KAAA;EAM3D,QAAA,CAAS,KAAA;EAIT,gBAAA,CAAiB,OAAA;EAIjB,KAAA,CAAA;EAIA,KAAA,CAAA;EAIA,QAAA,CAAA;EAIA,gBAAA,CAAA;EAIA,gBAAA,CAAiB,OAAA,WAAkB,iBAAA;EAInC,eAAA,CAAA,GAAmB,cAAA;EAInB,aAAA,CAAc,OAAA,WAAkB,YAAA;EAIhC,uBAAA,CAAwB,OAAA;EAIxB,yBAAA,CAA0B,SAAA;EAI1B,kBAAA,CAAmB,OAAA,UAAiB,UAAA;EAYpC,aAAA,CAAc,OAAA,UAAiB,oBAAA;EAa/B,wBAAA,CAAA;EAAA,QAWQ,YAAA;EAAA,QAYM,eAAA;EAAA,QAIN,mBAAA;EAAA,QAOA,gBAAA;EAAA,QAIA,oBAAA;EAAA,QAQA,mBAAA;EAAA,QAMA,YAAA;EAAA,QAsDA,UAAA;EAAA,QAmBA,mBAAA;EAAA,QAoBA,gBAAA;EAAA,QASA,QAAA;EAAA,QAQA,YAAA;EAAA,QAOA,mBAAA;EAAA,QAUA,qBAAA;EAAA,QAUA,sBAAA;EAAA,QAIA,gBAAA;AAAA;;;KCrhBA,cAAA;EACR,IAAA;EACA,KAAA;EACA,IAAA;AAAA;AAAA,KAEQ,WAAA;EACR,SAAA;EACA,MAAA;EACA,IAAA;IACI,IAAA;IACA,UAAA;EAAA;EAEJ,OAAA;EACA,SAAA;AAAA;AAAA,KAGQ,UAAA;EACR,IAAA;EACA,OAAA;EACA,WAAA;EACA,EAAA;EACA,IAAA;EACA,KAAA;AAAA;AAAA,KAGQ,WAAA,IAAe,EAAA,UAAY,EAAA;AAAA,aAE3B,YAAA;EACR,IAAA;EACA,IAAA;EACA,IAAA;EACA,MAAA;AAAA;AAAA,KAGQ,aAAA;EACR,SAAA,EAAW,iBAAA;EACX,EAAA;EACA,OAAA;IACI,IAAA;EAAA;EAEJ,OAAA;IACI,IAAA;EAAA;EAEJ,IAAA;AAAA;AAAA,KAGQ,iBAAA;EAEF,IAAA;EACA,KAAA;IACI,QAAA;IACA,GAAA;IACA,IAAA,EAAM,YAAA;EAAA;AAAA;EAIV,IAAA;EACA,KAAA;IACI,OAAA;IACA,GAAA;IACA,IAAA,EAAM,YAAA;EAAA;AAAA;EAIV,IAAA;EACA,KAAA;IACI,OAAA;IACA,GAAA;EAAA;AAAA;EAIJ,IAAA;EACA,KAAA;IACI,EAAA;IACA,IAAA;EAAA;AAAA;EAIJ,IAAA;EACA,KAAA;IACI,EAAA;IACA,IAAA;EAAA;AAAA;EAIJ,IAAA;EACA,KAAA;AAAA;AAAA,KAIE,kBAAA;EACR,IAAA;EACA,IAAA;EACA,SAAA;EACA,EAAA;AAAA;AAAA,KAIQ,gBAAA;EACR,IAAA;EACA,OAAA;AAAA;AAAA,aAGQ,cAAA;EACR,UAAA;EACA,OAAA;EACA,eAAA;EACA,QAAA;AAAA;AAAA,KAGQ,WAAA;EACR,OAAA;EACA,UAAA;EACA,IAAA;AAAA;AAAA,KAGQ,cAAA;EACR,UAAA,EAAY,YAAA;EACZ,aAAA,EAAe,CAAA;EACf,UAAA;EACA,eAAA,GAAkB,CAAA;AAAA;AAAA,uBAGA,YAAA;EAGA,EAAA;AAAA;EAAe,EAAA;EAAW,MAAA,EAAQ,gBAAA;EAAoB,MAAA;AAAA;EAAA,UAG9D,cAAA,EAAgB,CAAA;EAAA,UAChB,WAAA,EAAa,YAAA;EAAA,UACb,WAAA;cAEE,OAAA,EAAS,cAAA,CAAe,CAAA;EAMpC,aAAA,CAAA,GAAiB,YAAA;EAIjB,aAAA,CAAA;EAMA,gBAAA,CAAA,GAAoB,CAAA;EAAA,SAIX,UAAA,CAAW,QAAA;EAAA,SAEX,eAAA,CAAA;IAAqB,WAAA,EAAa,kBAAA;IAAsB,IAAA;EAAA;EAAA,SAExD,OAAA,CAAA;EAAA,SAEA,cAAA,CAAe,KAAA;EAAA,SAEf,OAAA,CAAQ,IAAA,WAAe,OAAA,CAAQ,aAAA;EAAA,SAE/B,SAAA,CAAU,IAAA,WAAe,OAAA,CAAQ,WAAA;EAAA,SAEjC,IAAA,CAAA;EAAA,SAEA,OAAA,CAAA;EAAA,SAEA,IAAA,CAAA,GAAQ,OAAA;IAAU,UAAA;EAAA;EAAA,SAElB,SAAA,CAAA,GAAa,cAAA;EAAA,SAEb,gBAAA,CAAiB,OAAA,UAAiB,IAAA,EAAM,UAAA;EAAA,SAExC,eAAA,CAAgB,OAAA,UAAiB,MAAA,WAAiB,UAAA;EAAA,SAElD,kBAAA,CAAA,GAAsB,WAAA;EAAA,SAEtB,cAAA,CAAe,GAAA,WAAc,aAAA;EAAA,SAE7B,KAAA,CAAA;EAAA,SAEA,KAAA,CAAA;EAAA,SAEA,QAAA,CAAA;IAAa,IAAA;IAAc,KAAA;IAAe,IAAA;EAAA;EAAA,SAE1C,YAAA,CAAA,GAAgB,UAAA;EAAA,SAEhB,gBAAA,CAAiB,OAAA,WAAkB,WAAA;EAAA,SAEnC,iBAAA,CAAA;EAAA,SAEA,uBAAA,CAAA,GAA2B,MAAA,CAAO,CAAA;EAAA,SAElC,gBAAA,CAAiB,QAAA,EAAU,CAAA,EAAG,IAAA,GAAO,YAAA;EAAA,SAErC,gBAAA,CAAiB,QAAA,EAAU,CAAA,EAAG,KAAA,UAAe,IAAA,GAAO,YAAA;EAAA,SAEpD,aAAA,CAAA;EAAA,SAEA,GAAA,CAAI,KAAA,WAAgB,WAAA,cAAyB,OAAA,CAAQ,cAAA;AAAA;;;KC5JtD,kBAAA,GAAqB,IAAA,CAAK,mBAAA;EAClC,IAAA,GAAO,aAAA,GAAgB,WAAA;EACvB,SAAA,GAAY,qBAAA;AAAA;AAAA,cAGH,WAAA,SAAoB,YAAA,CAAa,YAAA,EAAc,eAAA,EAAiB,gBAAA;EAAA,SAChE,OAAA,EAAS,YAAA;EAAA,iBAED,aAAA;EAAA,QAUT,iBAAA;EAAA,QACA,cAAA;EAAA,QACA,OAAA;EAAA,QACA,SAAA;EAAA,QAED,WAAA,CAAA;EAAA,OASM,MAAA,CAAO,OAAA,GAAS,kBAAA,GAA0B,OAAA,CAAQ,WAAA;EAAA,IAqC3D,MAAA,CAAA,GAAU,gBAAA;EAAA,IAIV,KAAA,CAAA,GAAS,UAAA;EAAA,IAIT,UAAA,CAAA,GAAc,UAAA;EAIlB,EAAA,WAAa,oBAAA,CAAA,CACT,SAAA,EAAW,CAAA,EACX,OAAA,EAAS,uBAAA,CAAwB,CAAA;EAM/B,OAAA,CAAQ,IAAA,EAAM,aAAA,GAAgB,WAAA,GAAc,OAAA;EAK5C,OAAA,CAAQ,IAAA,WAAe,OAAA,CAAQ,gBAAA;EAOrC,OAAA,CAAQ,IAAA,EAAM,WAAA,GAAc,UAAA;EAKtB,eAAA,CAAA,GAAmB,OAAA,CAAQ,cAAA;EAMjC,YAAA,CAAa,IAAA;EAIb,UAAA,CAAW,QAAA;EAOX,eAAA,CAAA;IAAqB,WAAA,EAAa,kBAAA;IAAsB,IAAA;EAAA;EAIxD,OAAA,CAAA;EAUA,cAAA,CAAe,KAAA;EAKT,SAAA,CAAU,IAAA,WAAe,OAAA,CAAQ,WAAA;EAgBvC,IAAA,CAAA;EAoBA,OAAA,CAAA;EAKM,IAAA,CAAA,GAAQ,OAAA;IAAU,UAAA;EAAA;EAUxB,SAAA,CAAA,GAAa,cAAA;EAOb,gBAAA,CAAiB,OAAA,UAAiB,IAAA,EAAM,UAAA;EAIxC,eAAA,CAAgB,OAAA,UAAiB,MAAA,WAAiB,UAAA;EAIlD,kBAAA,CAAA,GAAsB,WAAA;EAItB,cAAA,CAAe,GAAA,WAAc,aAAA;EAM7B,KAAA,CAAA;EAIA,KAAA,CAAA;EAIA,QAAA,CAAA;IAAc,IAAA;IAAc,KAAA;IAAe,IAAA;EAAA;EAW3C,YAAA,CAAA,GAAgB,UAAA;EAIhB,gBAAA,CAAiB,OAAA,WAAkB,WAAA;EAUnC,iBAAA,CAAA;EAIA,uBAAA,CAAA,GAA2B,MAAA,CAAO,eAAA;EAMlC,gBAAA,CAAiB,QAAA,EAAU,eAAA,EAAiB,IAAA,GAAM,YAAA;EAIlD,gBAAA,CAAiB,QAAA,EAAU,eAAA,EAAiB,KAAA,UAAe,IAAA,GAAM,YAAA;EAOjE,aAAA,CAAA;EAIM,GAAA,CAAI,KAAA,WAAgB,WAAA,cAA6B,OAAA,CAAQ,cAAA;EAAA,QASvD,gBAAA;EAAA,QAOA,0BAAA;EAAA,QAaM,kBAAA;EAAA,QA0BA,cAAA;EAAA,QA0BN,gBAAA;EAAA,QAIA,mBAAA;EAAA,QAKA,wBAAA;EAAA,QAUA,WAAA;EAAA,QAaA,UAAA;EAAA,QAkDA,qBAAA;EAAA,QAyBA,yBAAA;EAAA,QA4BA,IAAA;AAAA;AAAA,iBAKU,iBAAA,CAAkB,OAAA,GAAS,kBAAA,GAA0B,OAAA,CAAQ,WAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -471,6 +471,20 @@ let BlinkState = /* @__PURE__ */ function(BlinkState) {
|
|
|
471
471
|
return BlinkState;
|
|
472
472
|
}({});
|
|
473
473
|
//#endregion
|
|
474
|
+
//#region src/callbacks.ts
|
|
475
|
+
function observeCallbackResult(result) {
|
|
476
|
+
if (!isPromiseLike(result)) return;
|
|
477
|
+
Promise.resolve(result).catch(reportAsyncCallbackError);
|
|
478
|
+
}
|
|
479
|
+
function isPromiseLike(value) {
|
|
480
|
+
return value !== void 0 && value !== null && (typeof value === "object" || typeof value === "function") && typeof value.then === "function";
|
|
481
|
+
}
|
|
482
|
+
function reportAsyncCallbackError(error) {
|
|
483
|
+
setTimeout(() => {
|
|
484
|
+
throw error;
|
|
485
|
+
}, 0);
|
|
486
|
+
}
|
|
487
|
+
//#endregion
|
|
474
488
|
//#region src/blink-runtime.ts
|
|
475
489
|
const SIGNALS = {
|
|
476
490
|
SIGTRAP: 5,
|
|
@@ -588,10 +602,10 @@ var BlinkRuntime = class BlinkRuntime {
|
|
|
588
602
|
preRun: (moduleInstance) => {
|
|
589
603
|
moduleInstance.FS.init(() => runtime?.stdinBytes.length ? runtime.stdinBytes.pop() ?? null : callbacks.stdin(), (charCode) => {
|
|
590
604
|
runtime?.collectAssemblerLog(charCode);
|
|
591
|
-
callbacks.stdout(charCode);
|
|
605
|
+
observeCallbackResult(callbacks.stdout(charCode));
|
|
592
606
|
}, (charCode) => {
|
|
593
607
|
runtime?.collectAssemblerLog(charCode);
|
|
594
|
-
callbacks.stderr(charCode);
|
|
608
|
+
observeCallbackResult(callbacks.stderr(charCode));
|
|
595
609
|
});
|
|
596
610
|
}
|
|
597
611
|
}), wasmInitStarted);
|
|
@@ -805,7 +819,7 @@ var BlinkRuntime = class BlinkRuntime {
|
|
|
805
819
|
details: signalInfo ? `Program terminated with Exit(${exitCode}) due to signal ${signalInfo.name}: ${signalInfo.description}` : `Program terminated with Exit(${exitCode}) due to signal ${signal}`
|
|
806
820
|
};
|
|
807
821
|
this.setState("PROGRAM_STOPPED");
|
|
808
|
-
this.callbacks.signal(signal, code);
|
|
822
|
+
observeCallbackResult(this.callbacks.signal(signal, code));
|
|
809
823
|
return;
|
|
810
824
|
}
|
|
811
825
|
if (code === SIGTRAP_CODES.BLINK_PREEMPT) {
|
|
@@ -820,7 +834,7 @@ var BlinkRuntime = class BlinkRuntime {
|
|
|
820
834
|
details: "program is waiting for input"
|
|
821
835
|
};
|
|
822
836
|
this.setState("PROGRAM_READLINE_PAUSE");
|
|
823
|
-
this.callbacks.inputRequest({ maxBytes: this.getInputMaxBytes() });
|
|
837
|
+
observeCallbackResult(this.callbacks.inputRequest({ maxBytes: this.getInputMaxBytes() }));
|
|
824
838
|
}
|
|
825
839
|
if (code === SIGTRAP_CODES.BLINK_BREAKPOINT || code === SIGTRAP_CODES.BLINK_RUN_LIMIT) {
|
|
826
840
|
const stop = this.module.blinkenlibGetRunStop();
|
|
@@ -836,7 +850,7 @@ var BlinkRuntime = class BlinkRuntime {
|
|
|
836
850
|
};
|
|
837
851
|
this.setState("PROGRAM_PAUSED");
|
|
838
852
|
}
|
|
839
|
-
this.callbacks.signal(signal, code);
|
|
853
|
+
observeCallbackResult(this.callbacks.signal(signal, code));
|
|
840
854
|
}
|
|
841
855
|
handleExit(code) {
|
|
842
856
|
if (this.state === "ASSEMBLING") {
|
|
@@ -884,7 +898,7 @@ var BlinkRuntime = class BlinkRuntime {
|
|
|
884
898
|
if (this.state === state) return;
|
|
885
899
|
const oldState = this.state;
|
|
886
900
|
this.state = state;
|
|
887
|
-
this.callbacks.stateChange(state, oldState);
|
|
901
|
+
observeCallbackResult(this.callbacks.stateChange(state, oldState));
|
|
888
902
|
this.resolveStateWaiters(state);
|
|
889
903
|
}
|
|
890
904
|
waitForState(predicate) {
|
|
@@ -1131,30 +1145,35 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
1131
1145
|
callbacks: {
|
|
1132
1146
|
...options.callbacks,
|
|
1133
1147
|
stdout: (charCode) => {
|
|
1134
|
-
options.callbacks?.stdout?.(charCode);
|
|
1148
|
+
const result = options.callbacks?.stdout?.(charCode);
|
|
1135
1149
|
emulator?.emit("stdout", charCode);
|
|
1150
|
+
return result;
|
|
1136
1151
|
},
|
|
1137
1152
|
stderr: (charCode) => {
|
|
1138
|
-
options.callbacks?.stderr?.(charCode);
|
|
1153
|
+
const result = options.callbacks?.stderr?.(charCode);
|
|
1139
1154
|
emulator?.emit("stderr", charCode);
|
|
1155
|
+
return result;
|
|
1140
1156
|
},
|
|
1141
1157
|
signal: (signal, code) => {
|
|
1142
|
-
options.callbacks?.signal?.(signal, code);
|
|
1158
|
+
const result = options.callbacks?.signal?.(signal, code);
|
|
1143
1159
|
emulator?.emit("signal", {
|
|
1144
1160
|
signal,
|
|
1145
1161
|
code
|
|
1146
1162
|
});
|
|
1163
|
+
return result;
|
|
1147
1164
|
},
|
|
1148
1165
|
stateChange: (state, oldState) => {
|
|
1149
|
-
options.callbacks?.stateChange?.(state, oldState);
|
|
1166
|
+
const result = options.callbacks?.stateChange?.(state, oldState);
|
|
1150
1167
|
emulator?.emit("stateChange", {
|
|
1151
1168
|
state,
|
|
1152
1169
|
oldState
|
|
1153
1170
|
});
|
|
1171
|
+
return result;
|
|
1154
1172
|
},
|
|
1155
1173
|
inputRequest: (event) => {
|
|
1156
|
-
options.callbacks?.inputRequest?.(event);
|
|
1174
|
+
const result = options.callbacks?.inputRequest?.(event);
|
|
1157
1175
|
emulator?.emit("inputRequest", event);
|
|
1176
|
+
return result;
|
|
1158
1177
|
}
|
|
1159
1178
|
}
|
|
1160
1179
|
}));
|
|
@@ -1510,13 +1529,13 @@ var X86Emulator = class X86Emulator extends BaseEmulator {
|
|
|
1510
1529
|
}
|
|
1511
1530
|
}
|
|
1512
1531
|
emit(eventName, event) {
|
|
1513
|
-
for (const handler of this.eventHandlers[eventName]) handler(event);
|
|
1532
|
+
for (const handler of this.eventHandlers[eventName]) observeCallbackResult(handler(event));
|
|
1514
1533
|
}
|
|
1515
1534
|
};
|
|
1516
1535
|
async function createX86Emulator(options = {}) {
|
|
1517
1536
|
return X86Emulator.create(options);
|
|
1518
1537
|
}
|
|
1519
1538
|
//#endregion
|
|
1520
|
-
export { BaseEmulator, BlinkRuntime, BlinkState, DEFAULT_ASSEMBLER_ID, EmulatorStatus, RegisterSize, X86Emulator, X86_REGISTER_NAMES, assemblers, createX86Emulator, defaultResourceUrl, fasmDiagnostics, gnuDiagnostics, isNodeRuntime, nasmDiagnostics, readResourceBytes, toResourceUrl };
|
|
1539
|
+
export { BaseEmulator, BlinkRuntime, BlinkState, DEFAULT_ASSEMBLER_ID, EmulatorStatus, RegisterSize, X86Emulator, X86_REGISTER_NAMES, assemblers, createX86Emulator, defaultResourceUrl, fasmDiagnostics, gnuDiagnostics, isNodeRuntime, nasmDiagnostics, observeCallbackResult, readResourceBytes, toResourceUrl };
|
|
1521
1540
|
|
|
1522
1541
|
//# sourceMappingURL=index.mjs.map
|