Use JavaScriptKit's main entrypoint handler if available
The latest JavaScriptKit added main() method to handle main()/__main_argc_argv() function call. It also handles some quirks of async-main & JavaScriptEventLoop.
This commit is contained in:
parent
d487abb3b3
commit
52f65cb692
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,6 @@
|
|||
export class SwiftRuntime {
|
||||
setInstance(instance: WebAssembly.Instance): void;
|
||||
main?(): void;
|
||||
readonly wasmImports: ImportedFunctions;
|
||||
}
|
||||
export type SwiftRuntimeConstructor = typeof SwiftRuntime;
|
||||
|
|
|
@ -112,11 +112,17 @@ export const WasmRunner = (rawOptions: Options | false, SwiftRuntime: SwiftRunti
|
|||
} else if (typeof instance.exports._initialize == "function") {
|
||||
// Initialize and start Reactor
|
||||
wasi.initialize(instance as any);
|
||||
if (typeof instance.exports.main === "function") {
|
||||
instance.exports.main();
|
||||
} else if (typeof instance.exports.__main_argc_argv === "function") {
|
||||
// Swift 6.0 and later use `__main_argc_argv` instead of `main`.
|
||||
instance.exports.__main_argc_argv(0, 0);
|
||||
if (swift && swift.main) {
|
||||
// Use JavaScriptKit's entry point if it's available
|
||||
swift.main();
|
||||
} else {
|
||||
// For older versions of JavaScriptKit, we need to handle it manually
|
||||
if (typeof instance.exports.main === "function") {
|
||||
instance.exports.main();
|
||||
} else if (typeof instance.exports.__main_argc_argv === "function") {
|
||||
// Swift 6.0 and later use `__main_argc_argv` instead of `main`.
|
||||
instance.exports.__main_argc_argv(0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue