runtimeHelpers.ExitStatus = internals.ExitStatus;
}
+// NOTE: this is called AFTER the config is loaded
export function setRuntimeGlobals(globalObjects: GlobalObjects) {
if (_runtimeModuleLoaded) {
throw new Error("Runtime module already loaded");
exportedRuntimeAPI = globalObjects.api;
Object.assign(runtimeHelpers, {
- mono_wasm_bindings_is_ready: false,
- javaScriptExports: {} as any,
- enablePerfMeasure: true,
allAssetsInMemory: createPromiseController<void>(),
dotnetReady: createPromiseController<any>(),
memorySnapshotSkippedOrDone: createPromiseController<void>(),
return Object.assign(target, providedConfig);
}
+// NOTE: this is called before setRuntimeGlobals
export function normalizeConfig() {
// normalize
const config = loaderHelpers.config;
export let INTERNAL: any;
export let _loaderModuleLoaded = false; // please keep it in place also as rollup guard
+export const globalObjectsRoot: GlobalObjects = {
+ mono: {},
+ binding: {},
+ internal: {},
+ module: {},
+ loaderHelpers: {},
+ runtimeHelpers: {},
+ api: {}
+} as any;
+
+setLoaderGlobals(globalObjectsRoot);
+
export function setLoaderGlobals(
globalObjects: GlobalObjects,
) {
config: { environmentVariables: {} }
});
Object.assign(runtimeHelpers, {
+ mono_wasm_bindings_is_ready: false,
+ javaScriptExports: {} as any,
config: globalObjects.module.config,
diagnosticTracing: false,
});
// The .NET Foundation licenses this file to you under the MIT license.
import type { MonoConfig, DotnetHostBuilder, DotnetModuleConfig, RuntimeAPI, WebAssemblyStartOptions } from "../types";
-import type { MonoConfigInternal, GlobalObjects, EmscriptenModuleInternal, RuntimeModuleExportsInternal, NativeModuleExportsInternal, } from "../types/internal";
+import type { MonoConfigInternal, EmscriptenModuleInternal, RuntimeModuleExportsInternal, NativeModuleExportsInternal, } from "../types/internal";
-import { ENVIRONMENT_IS_NODE, ENVIRONMENT_IS_WEB, exportedRuntimeAPI, setLoaderGlobals } from "./globals";
+import { ENVIRONMENT_IS_NODE, ENVIRONMENT_IS_WEB, exportedRuntimeAPI, globalObjectsRoot } from "./globals";
import { deep_merge_config, deep_merge_module, mono_wasm_load_config } from "./config";
import { mono_exit } from "./exit";
import { setup_proxy_console } from "./logging";
import { setupPreloadChannelToMainThread } from "./worker";
-export const globalObjectsRoot: GlobalObjects = {
- mono: {},
- binding: {},
- internal: {},
- module: {},
- loaderHelpers: {},
- runtimeHelpers: {},
- api: {}
-} as any;
-
-setLoaderGlobals(globalObjectsRoot);
const module = globalObjectsRoot.module;
const monoConfig = module.config as MonoConfigInternal;