From 4ba5015ef434e9f608cdb9ac8a8e1ab1e5bb80a5 Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Wed, 3 May 2023 12:46:33 +0200 Subject: [PATCH 1/2] wip --- eng/testing/WasmRunnerAOTTemplate.sh | 14 +- eng/testing/WasmRunnerTemplate.cmd | 8 +- eng/testing/WasmRunnerTemplate.sh | 8 +- ...ervices.JavaScript.Legacy.UnitTests.csproj | 2 +- ...me.InteropServices.JavaScript.Tests.csproj | 2 +- .../JavaScript/JSImportExportTest.cs | 5 +- src/mono/sample/wasm/Directory.Build.targets | 2 +- src/mono/sample/wasm/console-node/main.mjs | 2 +- src/mono/sample/wasm/console-v8/main.mjs | 2 +- src/mono/sample/wasm/wasm.mk | 2 +- src/mono/wasm/build/WasmApp.targets | 2 +- src/mono/wasm/host/JSEngineHost.cs | 2 + src/mono/wasm/runtime/assets.ts | 12 +- src/mono/wasm/runtime/jiterpreter.ts | 3 + src/mono/wasm/runtime/package-lock.json | 412 ++++++++++-------- src/mono/wasm/runtime/package.json | 20 +- src/mono/wasm/runtime/run-outer.ts | 2 +- src/mono/wasm/runtime/startup.ts | 1 + src/mono/wasm/runtime/types.ts | 1 + src/mono/wasm/test-main.js | 20 +- 20 files changed, 296 insertions(+), 226 deletions(-) diff --git a/eng/testing/WasmRunnerAOTTemplate.sh b/eng/testing/WasmRunnerAOTTemplate.sh index 61714318017ef5..856fb7ebbea1bc 100644 --- a/eng/testing/WasmRunnerAOTTemplate.sh +++ b/eng/testing/WasmRunnerAOTTemplate.sh @@ -34,10 +34,6 @@ if [[ -z "$XHARNESS_COMMAND" ]]; then fi if [[ "$XHARNESS_COMMAND" == "test" ]]; then - if [[ -z "$JS_ENGINE_ARGS" ]]; then - JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000 --engine-arg=--experimental-wasm-eh" - fi - if [[ -z "$JS_ENGINE" ]]; then if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then JS_ENGINE="--engine=NodeJS" @@ -46,6 +42,16 @@ if [[ "$XHARNESS_COMMAND" == "test" ]]; then fi fi + if [[ -z "$JS_ENGINE_ARGS" ]]; then + JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000" + if [[ "$SCENARIO" != "WasmTestOnNodeJS" && "$SCENARIO" != "wasmtestonnodejs" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--module" + fi + if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--experimental-wasm-eh" + fi + fi + if [[ -z "$MAIN_JS" ]]; then MAIN_JS="--js-file=test-main.js" fi diff --git a/eng/testing/WasmRunnerTemplate.cmd b/eng/testing/WasmRunnerTemplate.cmd index 57e757233a2780..a8c9c0ac571269 100644 --- a/eng/testing/WasmRunnerTemplate.cmd +++ b/eng/testing/WasmRunnerTemplate.cmd @@ -45,7 +45,13 @@ if /I [%XHARNESS_COMMAND%] == [test] ( ) if [%JS_ENGINE_ARGS%] == [] ( - set "JS_ENGINE_ARGS=--engine-arg^=--stack-trace-limit^=1000 --engine-arg^=--experimental-wasm-eh" + set "JS_ENGINE_ARGS=--engine-arg^=--stack-trace-limit^=1000" + if /I NOT [%SCENARIO%] == [WasmTestOnNodeJS] ( + set "JS_ENGINE_ARGS=%JS_ENGINE_ARGS% --engine-arg^=--module" + ) + if /I [%SCENARIO%] == [WasmTestOnNodeJS] ( + set "JS_ENGINE_ARGS=%JS_ENGINE_ARGS% --engine-arg^=--experimental-wasm-eh" + ) ) ) else ( if [%BROWSER_PATH%] == [] if not [%HELIX_CORRELATION_PAYLOAD%] == [] ( diff --git a/eng/testing/WasmRunnerTemplate.sh b/eng/testing/WasmRunnerTemplate.sh index 1865edb0fd7ac3..8b4e9adb10c2ef 100644 --- a/eng/testing/WasmRunnerTemplate.sh +++ b/eng/testing/WasmRunnerTemplate.sh @@ -47,7 +47,13 @@ if [[ "$XHARNESS_COMMAND" == "test" ]]; then fi if [[ -z "$JS_ENGINE_ARGS" ]]; then - JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000 --engine-arg=--experimental-wasm-eh" + JS_ENGINE_ARGS="--engine-arg=--stack-trace-limit=1000" + if [[ "$SCENARIO" != "WasmTestOnNodeJS" && "$SCENARIO" != "wasmtestonnodejs" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--module" + fi + if [[ "$SCENARIO" == "WasmTestOnNodeJS" || "$SCENARIO" == "wasmtestonnodejs" ]]; then + JS_ENGINE_ARGS="$JS_ENGINE_ARGS --engine-arg=--experimental-wasm-eh" + fi fi fi diff --git a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj index 1afaf6178ad2ee..4e1801eb7515da 100644 --- a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj +++ b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj @@ -3,7 +3,7 @@ true $(NetCoreAppCurrent)-browser true - $(WasmXHarnessArgs) --engine-arg=--expose-gc --web-server-use-cop + $(WasmXHarnessArgs) --engine-arg=--expose-gc --engine-arg=--stack-trace-limit=1000 --web-server-use-cop 0612 true $(DefineConstants);DISABLE_LEGACY_JS_INTEROP diff --git a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj index b3f923ae5c26f5..654292a7fd4731 100644 --- a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj +++ b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj @@ -3,7 +3,7 @@ true $(NetCoreAppCurrent)-browser true - $(WasmXHarnessArgs) --engine-arg=--expose-gc --web-server-use-cop + $(WasmXHarnessArgs) --engine-arg=--expose-gc --engine-arg=--stack-trace-limit=1000 --web-server-use-cop true true false diff --git a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System/Runtime/InteropServices/JavaScript/JSImportExportTest.cs b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System/Runtime/InteropServices/JavaScript/JSImportExportTest.cs index df2c3d67f091fa..a66720c9a88fd5 100644 --- a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System/Runtime/InteropServices/JavaScript/JSImportExportTest.cs +++ b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System/Runtime/InteropServices/JavaScript/JSImportExportTest.cs @@ -1428,7 +1428,10 @@ public void JsExportCatchStack() { var stack = JavaScriptTestHelper.catch1stack("-t-e-s-t-", nameof(JavaScriptTestHelper.ThrowFromJSExport)); Assert.Contains(nameof(JavaScriptTestHelper.ThrowFromJSExport), stack); - Assert.Contains("catch1stack", stack); + if (PlatformDetection.IsBrowserDomSupportedOrNodeJS) + { + Assert.Contains("catch1stack", stack); + } } #endregion Exception diff --git a/src/mono/sample/wasm/Directory.Build.targets b/src/mono/sample/wasm/Directory.Build.targets index 0b45eb06b956bc..7ff3c4d09a7514 100644 --- a/src/mono/sample/wasm/Directory.Build.targets +++ b/src/mono/sample/wasm/Directory.Build.targets @@ -53,7 +53,7 @@ - + diff --git a/src/mono/sample/wasm/console-node/main.mjs b/src/mono/sample/wasm/console-node/main.mjs index 4b1898c0335b93..3b9741a5398a73 100644 --- a/src/mono/sample/wasm/console-node/main.mjs +++ b/src/mono/sample/wasm/console-node/main.mjs @@ -3,7 +3,7 @@ import { dotnet } from './dotnet.js' -dotnet +await dotnet .withDiagnosticTracing(false) .withApplicationArguments("dotnet", "is", "great!") .run() \ No newline at end of file diff --git a/src/mono/sample/wasm/console-v8/main.mjs b/src/mono/sample/wasm/console-v8/main.mjs index f989302af6037b..b336fe2884fd53 100644 --- a/src/mono/sample/wasm/console-v8/main.mjs +++ b/src/mono/sample/wasm/console-v8/main.mjs @@ -3,7 +3,7 @@ import { dotnet } from './dotnet.js' -dotnet +await dotnet .withDiagnosticTracing(false) .withApplicationArguments(...arguments) .run() \ No newline at end of file diff --git a/src/mono/sample/wasm/wasm.mk b/src/mono/sample/wasm/wasm.mk index 67c4fa36207724..6984136c15d266 100644 --- a/src/mono/sample/wasm/wasm.mk +++ b/src/mono/sample/wasm/wasm.mk @@ -42,7 +42,7 @@ run-browser: fi run-console: - cd bin/$(CONFIG)/AppBundle && $(V8_PATH) --stack-trace-limit=1000 --single-threaded --expose_wasm $(MAIN_JS) -- $(ARGS) + cd bin/$(CONFIG)/AppBundle && $(V8_PATH) --stack-trace-limit=1000 --single-threaded --expose_wasm --module $(MAIN_JS) -- $(ARGS) run-console-node: cd bin/$(CONFIG)/AppBundle && node --stack-trace-limit=1000 --single-threaded --expose_wasm $(MAIN_JS) $(ARGS) diff --git a/src/mono/wasm/build/WasmApp.targets b/src/mono/wasm/build/WasmApp.targets index 0dcbdc6bc1c11a..0d50ada7ad3a20 100644 --- a/src/mono/wasm/build/WasmApp.targets +++ b/src/mono/wasm/build/WasmApp.targets @@ -424,7 +424,7 @@ diff --git a/src/mono/wasm/host/JSEngineHost.cs b/src/mono/wasm/host/JSEngineHost.cs index cfcdf3569e5a67..d3e16dc9ab88be 100644 --- a/src/mono/wasm/host/JSEngineHost.cs +++ b/src/mono/wasm/host/JSEngineHost.cs @@ -62,6 +62,8 @@ private async Task RunAsync() { // v8 needs this flag to enable WASM support args.Add("--expose_wasm"); + // treat file as ES6 module + args.Add("--module"); } args.AddRange(_args.CommonConfig.HostArguments); diff --git a/src/mono/wasm/runtime/assets.ts b/src/mono/wasm/runtime/assets.ts index fa9366d1bb60af..37977538ed3a01 100644 --- a/src/mono/wasm/runtime/assets.ts +++ b/src/mono/wasm/runtime/assets.ts @@ -514,9 +514,15 @@ export async function instantiate_wasm_asset( } const arrayBuffer = await response.arrayBuffer(); if (runtimeHelpers.diagnosticTracing) console.debug("MONO_WASM: instantiate_wasm_module buffered"); - const arrayBufferResult = await WebAssembly.instantiate(arrayBuffer, wasmModuleImports!); - compiledInstance = arrayBufferResult.instance; - compiledModule = arrayBufferResult.module; + if (ENVIRONMENT_IS_SHELL) { + // workaround for old versions of V8 with https://bugs.chromium.org/p/v8/issues/detail?id=13823 + compiledModule = new WebAssembly.Module(arrayBuffer); + compiledInstance = new WebAssembly.Instance(compiledModule, wasmModuleImports); + } else { + const arrayBufferResult = await WebAssembly.instantiate(arrayBuffer, wasmModuleImports!); + compiledInstance = arrayBufferResult.instance; + compiledModule = arrayBufferResult.module; + } } successCallback(compiledInstance, compiledModule); } diff --git a/src/mono/wasm/runtime/jiterpreter.ts b/src/mono/wasm/runtime/jiterpreter.ts index 30759e547a0e6d..1d355272ae85c3 100644 --- a/src/mono/wasm/runtime/jiterpreter.ts +++ b/src/mono/wasm/runtime/jiterpreter.ts @@ -1049,6 +1049,9 @@ export function mono_interp_tier_prepare_jiterpreter( } export function jiterpreter_dump_stats(b?: boolean, concise?: boolean) { + if (!runtimeHelpers.runtimeReady) { + return; + } if (!mostRecentOptions || (b !== undefined)) mostRecentOptions = getOptions(); diff --git a/src/mono/wasm/runtime/package-lock.json b/src/mono/wasm/runtime/package-lock.json index 4455b87ca645a2..5894b4ec3680c8 100644 --- a/src/mono/wasm/runtime/package-lock.json +++ b/src/mono/wasm/runtime/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha1-OyXTjIlgC6otzCGe36iKdOssQno=", + "version": "7.21.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@babel/code-frame/-/code-frame-7.21.4.tgz", + "integrity": "sha1-0PqeRBOsqB8rI7lEJ5e9oYJu2zk=", "dev": true, "optional": true, "requires": { @@ -98,16 +98,31 @@ } } }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha1-ojUU6Pua8SadX3eIqlVnmNYca1k=", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", + "integrity": "sha1-9vcpsC/u4sdJ9X4zS3obX0CoFyQ=", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.3.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", - "integrity": "sha1-KwRKs5/fp1tGiBhPnlc848Ww/5U=", + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", + "integrity": "sha1-AVdeOHB63Wd89zyhWJq7qNqJmgI=", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.15.0", + "espree": "^9.5.1", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -115,10 +130,16 @@ "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.39.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@eslint/js/-/js-8.39.0.tgz", + "integrity": "sha1-WLU2vMhD9M0eAqfmFx2lwED01Es=", + "dev": true + }, "@humanwhocodes/config-array": { - "version": "0.11.7", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", - "integrity": "sha1-OK7ARMbIKPbtUdXXrj2bn69tuw8=", + "version": "0.11.8", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha1-A1lawgdaTcDxkcwhMd4U+9fUELk=", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", @@ -139,9 +160,9 @@ "dev": true }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha1-wa7cYehT8rufXf5tRELTtWWyU7k=", + "version": "0.3.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha1-fgLm6135AartsIUUIDsJZhQCQJg=", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -162,9 +183,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha1-9FNRqu1FJ6KYUS7HL4EEDJmFgPs=", + "version": "0.3.3", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha1-gQgmVlnUwz5y/+FOM9bMXrWfL9o=", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -172,19 +193,27 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha1-rdTJjTQUcqKJGQtCTvvbCWmRuyQ=", + "version": "1.4.15", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha1-18bmdVx4VnqVHgSrUu8P0m3lnzI=", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha1-eTBBJ3r5BzsJUaf+Dw2MTJjDaYU=", + "version": "0.3.18", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha1-JXg7IIba9v8dy1PJJJrkgOTdTNY=", "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", "@jridgewell/sourcemap-codec": "1.4.14" + }, + "dependencies": { + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha1-rdTJjTQUcqKJGQtCTvvbCWmRuyQ=", + "dev": true + } } }, "@nodelib/fs.scandir": { @@ -214,18 +243,20 @@ } }, "@rollup/plugin-terser": { - "version": "0.1.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@rollup/plugin-terser/-/plugin-terser-0.1.0.tgz", - "integrity": "sha1-dTDA8RZnY3QZ1xggRhZGxBhSYEE=", + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@rollup/plugin-terser/-/plugin-terser-0.4.1.tgz", + "integrity": "sha1-XDI/0GY1UFYiS2mT/LFMQJ0phz4=", "dev": true, "requires": { + "serialize-javascript": "^6.0.0", + "smob": "^0.0.6", "terser": "^5.15.1" } }, "@rollup/plugin-typescript": { - "version": "9.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@rollup/plugin-typescript/-/plugin-typescript-9.0.2.tgz", - "integrity": "sha1-wM36OeJn8wb/cxZAWjVAbVgh6qc=", + "version": "11.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@rollup/plugin-typescript/-/plugin-typescript-11.1.0.tgz", + "integrity": "sha1-TdKphHWnkSANPk3RuCNAc62WxTU=", "dev": true, "requires": { "@rollup/pluginutils": "^5.0.1", @@ -250,9 +281,9 @@ } }, "@types/estree": { - "version": "1.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha1-X7LlNsGum/NTZu7Yeegn+lnKQcI=", + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha1-qiJ1CWLzvw5511PTzAZ/AQyV8ZQ=", "dev": true }, "@types/json-schema": { @@ -268,70 +299,71 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.44.0.tgz", - "integrity": "sha1-EFeI8pkFDJF+uFxNn9BLCJ43QN4=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.1.tgz", + "integrity": "sha1-mwnuFUG/8dLOvcuH585KQAOs3gg=", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/type-utils": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/type-utils": "5.59.1", + "@typescript-eslint/utils": "5.59.1", "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "natural-compare-lite": "^1.4.0", - "regexpp": "^3.2.0", "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-5.44.0.tgz", - "integrity": "sha1-meLHEKIlIZHnp5ETJk9Dgzi4Rq0=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/parser/-/parser-5.59.1.tgz", + "integrity": "sha1-c8LBISfFwRgtLltxqPoqhdIVy7Q=", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.44.0.tgz", - "integrity": "sha1-mIw/NLRbNHTrn/BnTBgwne38PgQ=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/scope-manager/-/scope-manager-5.59.1.tgz", + "integrity": "sha1-iiAiJxnOvFGYYYpdRBE3BbUf1/4=", "dev": true, "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0" + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1" } }, "@typescript-eslint/type-utils": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.44.0.tgz", - "integrity": "sha1-vFpuigJphQcUqHDJJowDgVDfs8c=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/type-utils/-/type-utils-5.59.1.tgz", + "integrity": "sha1-Y5gdYWhP0k7aL58IwKR+ywAKIRE=", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "5.44.0", - "@typescript-eslint/utils": "5.44.0", + "@typescript-eslint/typescript-estree": "5.59.1", + "@typescript-eslint/utils": "5.59.1", "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-5.44.0.tgz", - "integrity": "sha1-8/C4mq/3jwl6KSf+VojAfnhqAkE=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/types/-/types-5.59.1.tgz", + "integrity": "sha1-A/P+3RwETLM268NMx4VfEhmR9B0=", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.44.0.tgz", - "integrity": "sha1-BGGzhiA+jTg7sSaLHtHam8kFsEU=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.1.tgz", + "integrity": "sha1-SqVG0n/Q1HfGGPDKALSD8OyExDw=", "dev": true, "requires": { - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/visitor-keys": "5.44.0", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/visitor-keys": "5.59.1", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -340,35 +372,35 @@ } }, "@typescript-eslint/utils": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-5.44.0.tgz", - "integrity": "sha1-1zPaTXnWww8aaLUxzdoeDB8A1S0=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/utils/-/utils-5.59.1.tgz", + "integrity": "sha1-2J/HWK0j0hV8+uU/C0Kb3xXblHM=", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.44.0", - "@typescript-eslint/types": "5.44.0", - "@typescript-eslint/typescript-estree": "5.44.0", + "@typescript-eslint/scope-manager": "5.59.1", + "@typescript-eslint/types": "5.59.1", + "@typescript-eslint/typescript-estree": "5.59.1", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0", "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.44.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.44.0.tgz", - "integrity": "sha1-EHQNwokCu5A9Eu46AFzDpwIH1DM=", + "version": "5.59.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.1.tgz", + "integrity": "sha1-DZbDbvtlYNf7jrhd4QRCwQ2PYFg=", "dev": true, "requires": { - "@typescript-eslint/types": "5.44.0", + "@typescript-eslint/types": "5.59.1", "eslint-visitor-keys": "^3.3.0" } }, "acorn": { - "version": "8.8.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha1-Cj+cvsxOw76m8KgLZq6N0tolC3M=", + "version": "8.8.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha1-Gy8l2wKvllOZuXdrDCw5EnbTfEo=", "dev": true }, "acorn-jsx": { @@ -550,13 +582,16 @@ "dev": true }, "eslint": { - "version": "8.28.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint/-/eslint-8.28.0.tgz", - "integrity": "sha1-gaaAcyY0Z3zIkBNLzdn9/qjmPW4=", + "version": "8.39.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint/-/eslint-8.39.0.tgz", + "integrity": "sha1-f9IKKV75LUOAnpFLcMOf1aI88/E=", "dev": true, "requires": { - "@eslint/eslintrc": "^1.3.3", - "@humanwhocodes/config-array": "^0.11.6", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.2", + "@eslint/js": "8.39.0", + "@humanwhocodes/config-array": "^0.11.8", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", @@ -565,17 +600,16 @@ "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.0", + "eslint-visitor-keys": "^3.4.0", + "espree": "^9.5.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.15.0", + "globals": "^13.19.0", "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", @@ -590,16 +624,15 @@ "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "dependencies": { "eslint-scope": { - "version": "7.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha1-//NIlML2XlIm0wQaxIC0UToWNkI=", + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-scope/-/eslint-scope-7.2.0.tgz", + "integrity": "sha1-8h69r9oCNS8QNjS5bdR9n4HKEXs=", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -611,15 +644,6 @@ "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha1-LupSkHAvJquP5TcDcP+GyWXSESM=", "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM=", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } } } }, @@ -633,44 +657,27 @@ "estraverse": "^4.1.1" } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha1-iuuvrOc0W7M1WdsKHxOh0tSMNnI=", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha1-9lMoJZMFknOSyTjtROsKXJsr0wM=", - "dev": true - } - } - }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha1-9kgPprHzDv4tGWiqisdFuGJGmCY=", + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", + "integrity": "sha1-x/D5VhJM5ncEfdvBkqaPmZRU3tw=", "dev": true }, "espree": { - "version": "9.4.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/espree/-/espree-9.4.1.tgz", - "integrity": "sha1-UdYJJhVWeiws/3gzRF43wowAZb0=", + "version": "9.5.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/espree/-/espree-9.5.1.tgz", + "integrity": "sha1-Tyak1fGJBb9PLgvZkAKquAfpbdQ=", "dev": true, "requires": { "acorn": "^8.8.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.0" } }, "esquery": { - "version": "1.4.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha1-IUj/w4uC6McFff7UhCWz5h8PJKU=", + "version": "1.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha1-bOF3ON6Fd2lO3XNhxXGCrIyw2ws=", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -753,6 +760,17 @@ "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } } }, "fast-json-stable-stringify": { @@ -768,9 +786,9 @@ "dev": true }, "fastq": { - "version": "1.13.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha1-YWdg+Ip1Jr38WWt8q4wYk4w2uYw=", + "version": "1.15.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha1-0E0HxqKmj+RZn+qNLhA6k3+uazo=", "dev": true, "requires": { "reusify": "^1.0.4" @@ -874,18 +892,18 @@ } }, "glob-parent": { - "version": "5.1.2", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=", + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha1-bSN9mQg5UMeSkPJMdkKj3poo+eM=", "dev": true, "requires": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" } }, "globals": { - "version": "13.18.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globals/-/globals-13.18.0.tgz", - "integrity": "sha1-+yJNrusrt9JUzSxkDwA1KLjQwdw=", + "version": "13.20.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/globals/-/globals-13.20.0.tgz", + "integrity": "sha1-6idqHlCP/U8WEoiPnRutHicXv4I=", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -933,9 +951,9 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha1-bTusj6f+DUXZ+b57rC/CeVd+NFo=", + "version": "5.2.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha1-opHAxheP8blgvv5H/N7DAWdKYyQ=", "dev": true }, "import-fresh": { @@ -971,9 +989,9 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha1-rUyz44Y+gUUjyW8/WNJsxXD/AUQ=", + "version": "2.12.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha1-Nq1i9vc8glP9ZHJRehJIPPA+fsQ=", "dev": true, "requires": { "has": "^1.0.3" @@ -1124,9 +1142,9 @@ "dev": true }, "js-sdsl": { - "version": "4.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-sdsl/-/js-sdsl-4.2.0.tgz", - "integrity": "sha1-J46Yt76libi6rwSMIK6xnretCdA=", + "version": "4.4.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/js-sdsl/-/js-sdsl-4.4.0.tgz", + "integrity": "sha1-i0N9vmQtqpV2BAC2AjeO2P/qhDA=", "dev": true }, "js-tokens": { @@ -1192,12 +1210,12 @@ } }, "magic-string": { - "version": "0.26.7", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/magic-string/-/magic-string-0.26.7.tgz", - "integrity": "sha1-yvfa9hs06ZgvgijEUnR02siYHW8=", + "version": "0.30.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/magic-string/-/magic-string-0.30.0.tgz", + "integrity": "sha1-/VikdIxcRUczikJOkPpd0X9N5Sk=", "dev": true, "requires": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.4.13" } }, "merge-stream": { @@ -1388,9 +1406,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha1-9n+mfJTaj00M//mBruQRgGQZm48=", "dev": true }, "queue-microtask": { @@ -1399,19 +1417,22 @@ "integrity": "sha1-SSkii7xyTfrEPg77BYyve2z7YkM=", "dev": true }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha1-BCWido2PI7rXDKS5BGH6LxIT4bI=", - "dev": true + "randombytes": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } }, "resolve": { - "version": "1.22.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha1-J8suu1P5GrtJRwqSi7p1WAZqwXc=", + "version": "1.22.2", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha1-DtCUPU4wGGeVV2bJ8+GubQHGhF8=", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -1438,22 +1459,22 @@ } }, "rollup": { - "version": "3.4.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rollup/-/rollup-3.4.0.tgz", - "integrity": "sha1-PzY9RkdN61Tm2jjTmMOvhFwbfUM=", + "version": "3.21.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rollup/-/rollup-3.21.1.tgz", + "integrity": "sha1-1W8y7gQTg7YJCePTGVtUtpkS27A=", "dev": true, "requires": { "fsevents": "~2.3.2" } }, "rollup-plugin-dts": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rollup-plugin-dts/-/rollup-plugin-dts-5.0.0.tgz", - "integrity": "sha1-1kXyIupvfWt9236pjEWg5aOlaew=", + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/rollup-plugin-dts/-/rollup-plugin-dts-5.3.0.tgz", + "integrity": "sha1-gKlZiAAvGI43b22zt+L1NnkWiVc=", "dev": true, "requires": { "@babel/code-frame": "^7.18.6", - "magic-string": "^0.26.7" + "magic-string": "^0.30.0" } }, "run-parallel": { @@ -1465,15 +1486,30 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=", + "dev": true + }, "semver": { - "version": "7.3.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.3.8.tgz", - "integrity": "sha1-B6eP6vs/ezI0fXJeM95+Ki32d5g=", + "version": "7.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/semver/-/semver-7.5.0.tgz", + "integrity": "sha1-7YxdyO+2xinIiyPUHcm/QMHZbNA=", "dev": true, "requires": { "lru-cache": "^6.0.0" } }, + "serialize-javascript": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha1-sgbvsnw9oLCra1L0jRcLeZZFjlw=", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1501,6 +1537,12 @@ "integrity": "sha1-ZTm+hwwWWtvVJAIg2+Nh8bxNRjQ=", "dev": true }, + "smob": { + "version": "0.0.6", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/smob/-/smob-0.0.6.tgz", + "integrity": "sha1-CbJo/qkWFYongcFSBExhVa27iqE=", + "dev": true + }, "source-map": { "version": "0.6.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/source-map/-/source-map-0.6.1.tgz", @@ -1517,12 +1559,6 @@ "source-map": "^0.6.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha1-6oBL2UhXQC5pktBaOO8a41qatMQ=", - "dev": true - }, "strip-ansi": { "version": "6.0.1", "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1566,9 +1602,9 @@ "dev": true }, "terser": { - "version": "5.15.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.15.1.tgz", - "integrity": "sha1-hWGvbg/W2DlmnHO5K91Xd9hw7Ww=", + "version": "5.17.1", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/terser/-/terser-5.17.1.tgz", + "integrity": "sha1-lI8QgwRUdh4u7txt6+RcUyyD/Wk=", "dev": true, "requires": { "@jridgewell/source-map": "^0.3.2", @@ -1593,9 +1629,9 @@ } }, "tslib": { - "version": "2.4.1", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha1-DQv7qsKIC5HiLfB2jlW+l1OlsX4=", + "version": "2.5.0", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha1-Qr/thvV4eutB0DGGbI9AJCng/d8=", "dev": true }, "tsutils": { @@ -1631,9 +1667,9 @@ "dev": true }, "typescript": { - "version": "4.9.3", - "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typescript/-/typescript-4.9.3.tgz", - "integrity": "sha1-OuowfBdGuMOEQ12Kw2uKLlgNhds=", + "version": "5.0.4", + "resolved": "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public-npm/npm/registry/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha1-shf9IBGb1hqU1AESdOCrNpBY2js=", "dev": true }, "uri-js": { diff --git a/src/mono/wasm/runtime/package.json b/src/mono/wasm/runtime/package.json index 96adfde687dd34..46345ab644ff7c 100644 --- a/src/mono/wasm/runtime/package.json +++ b/src/mono/wasm/runtime/package.json @@ -21,18 +21,18 @@ "author": "Microsoft", "license": "MIT", "devDependencies": { - "@rollup/plugin-typescript": "9.0.2", + "@rollup/plugin-typescript": "11.1.0", "@rollup/plugin-virtual": "3.0.1", - "@rollup/plugin-terser": "0.1.0", - "@typescript-eslint/eslint-plugin": "5.44.0", - "@typescript-eslint/parser": "5.44.0", - "eslint": "8.28.0", + "@rollup/plugin-terser": "0.4.1", + "@typescript-eslint/eslint-plugin": "5.59.1", + "@typescript-eslint/parser": "5.59.1", + "eslint": "8.39.0", "fast-glob": "3.2.12", "git-commit-info": "2.0.1", - "rollup": "3.4.0", - "rollup-plugin-dts": "5.0.0", - "terser": "5.15.1", - "tslib": "2.4.1", - "typescript": "4.9.3" + "rollup": "3.21.1", + "rollup-plugin-dts": "5.3.0", + "terser": "5.17.1", + "tslib": "2.5.0", + "typescript": "5.0.4" } } diff --git a/src/mono/wasm/runtime/run-outer.ts b/src/mono/wasm/runtime/run-outer.ts index b28dc694a25e9a..b2af808143a445 100644 --- a/src/mono/wasm/runtime/run-outer.ts +++ b/src/mono/wasm/runtime/run-outer.ts @@ -60,7 +60,7 @@ export class HostBuilder implements DotnetHostBuilder { const handler = function fatal_handler(event: Event, error: any) { event.preventDefault(); try { - mono_exit(1, error); + if (!error.silent) mono_exit(1, error); } catch (err) { // no not re-throw from the fatal handler } diff --git a/src/mono/wasm/runtime/startup.ts b/src/mono/wasm/runtime/startup.ts index a6d20cd699a857..1ae473cf243389 100644 --- a/src/mono/wasm/runtime/startup.ts +++ b/src/mono/wasm/runtime/startup.ts @@ -106,6 +106,7 @@ export function configureEmscriptenStartup(module: DotnetModuleInternal): void { // - here we resolve the promise returned by createDotnetRuntime export // - any code after createDotnetRuntime is executed now dotnetReady.promise_control.resolve(exportedRuntimeAPI); + runtimeHelpers.runtimeReady = true; }).catch(err => { dotnetReady.promise_control.reject(err); }); diff --git a/src/mono/wasm/runtime/types.ts b/src/mono/wasm/runtime/types.ts index 53e493077afd1a..3f1c811dceccb0 100644 --- a/src/mono/wasm/runtime/types.ts +++ b/src/mono/wasm/runtime/types.ts @@ -135,6 +135,7 @@ export type RuntimeHelpers = { preferredIcuAsset: string | null, invariantMode: boolean, updateMemoryViews: () => void + runtimeReady: boolean, } export type AOTProfilerOptions = { diff --git a/src/mono/wasm/test-main.js b/src/mono/wasm/test-main.js index 6dcf03a8ab48cc..63dc5d143f7aff 100644 --- a/src/mono/wasm/test-main.js +++ b/src/mono/wasm/test-main.js @@ -4,13 +4,13 @@ // // Run runtime tests under a JS shell or a browser // -"use strict"; +import { dotnet, exit } from './dotnet.js'; /***************************************************************************** * Please don't use this as template for startup code. * There are simpler and better samples like src\mono\sample\wasm\browser\main.js - * This one is not ES6 nor CJS, doesn't use top level await and has edge case polyfills. + * It has edge case polyfills. * It handles strange things which happen with XHarness. ****************************************************************************/ @@ -296,8 +296,7 @@ async function dry_run(runArgs) { try { console.log("Silently starting separate runtime instance as another ES6 module to populate caches..."); // this separate instance of the ES6 module, in which we just populate the caches - const { dotnet, exit } = await import('./dotnet.js?dry_run=true'); - mono_exit = exit; + const { dotnet } = await import('./dotnet.js?dry_run=true'); configureRuntime(dotnet, runArgs); // silent minimal startup await dotnet.withConfig({ @@ -310,12 +309,14 @@ async function dry_run(runArgs) { // If there was previously a matching snapshot, it will be used. exitAfterSnapshot: true }).create(); + console.log("Separate runtime instance finished loading."); } catch (err) { - if (err && err.status !== 0) { - return false; + if (err && err.status === 0) { + return true; } + console.log("Separate runtime instance failed loading.", err); + return false; } - console.log("Separate runtime instance finished loading."); return true; } @@ -334,7 +335,6 @@ async function run() { // this is subsequent run with the actual tests. It will use whatever was cached in the previous run. // This way, we are testing that the cached version works. - const { dotnet, exit, INTERNAL } = await import('./dotnet.js'); mono_exit = exit; if (runArgs.applicationArguments.length == 0) { @@ -342,7 +342,7 @@ async function run() { return; } - configureRuntime(dotnet, runArgs, INTERNAL); + configureRuntime(dotnet, runArgs); App.runtime = await dotnet.create(); App.runArgs = runArgs @@ -398,4 +398,4 @@ async function run() { } } -run(); +await run(); From 64bc328f8501b2d3aeec71feefba7a5b29e52ccd Mon Sep 17 00:00:00 2001 From: pavelsavara Date: Wed, 3 May 2023 16:36:30 +0200 Subject: [PATCH 2/2] feedback add nodeJS explicit exit --- ...ime.InteropServices.JavaScript.Legacy.UnitTests.csproj | 2 +- ...System.Runtime.InteropServices.JavaScript.Tests.csproj | 2 +- src/mono/wasm/host/JSEngineHost.cs | 2 -- src/mono/wasm/runtime/polyfills.ts | 3 +++ src/mono/wasm/runtime/run-outer.ts | 2 +- src/mono/wasm/runtime/run.ts | 8 ++++++-- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj index 4e1801eb7515da..1afaf6178ad2ee 100644 --- a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj +++ b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests/System.Runtime.InteropServices.JavaScript.Legacy.UnitTests.csproj @@ -3,7 +3,7 @@ true $(NetCoreAppCurrent)-browser true - $(WasmXHarnessArgs) --engine-arg=--expose-gc --engine-arg=--stack-trace-limit=1000 --web-server-use-cop + $(WasmXHarnessArgs) --engine-arg=--expose-gc --web-server-use-cop 0612 true $(DefineConstants);DISABLE_LEGACY_JS_INTEROP diff --git a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj index 654292a7fd4731..b3f923ae5c26f5 100644 --- a/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj +++ b/src/libraries/System.Runtime.InteropServices.JavaScript/tests/System.Runtime.InteropServices.JavaScript.UnitTests/System.Runtime.InteropServices.JavaScript.Tests.csproj @@ -3,7 +3,7 @@ true $(NetCoreAppCurrent)-browser true - $(WasmXHarnessArgs) --engine-arg=--expose-gc --engine-arg=--stack-trace-limit=1000 --web-server-use-cop + $(WasmXHarnessArgs) --engine-arg=--expose-gc --web-server-use-cop true true false diff --git a/src/mono/wasm/host/JSEngineHost.cs b/src/mono/wasm/host/JSEngineHost.cs index d3e16dc9ab88be..cfcdf3569e5a67 100644 --- a/src/mono/wasm/host/JSEngineHost.cs +++ b/src/mono/wasm/host/JSEngineHost.cs @@ -62,8 +62,6 @@ private async Task RunAsync() { // v8 needs this flag to enable WASM support args.Add("--expose_wasm"); - // treat file as ES6 module - args.Add("--module"); } args.AddRange(_args.CommonConfig.HostArguments); diff --git a/src/mono/wasm/runtime/polyfills.ts b/src/mono/wasm/runtime/polyfills.ts index 7185f3579c7152..4edfffe60f4675 100644 --- a/src/mono/wasm/runtime/polyfills.ts +++ b/src/mono/wasm/runtime/polyfills.ts @@ -190,6 +190,9 @@ export async function init_polyfills_async(): Promise { const { performance } = INTERNAL.require("perf_hooks"); globalThis.performance = performance; } + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore: + INTERNAL.process = await import(/* webpackIgnore: true */"process"); if (!globalThis.crypto) { globalThis.crypto = {}; diff --git a/src/mono/wasm/runtime/run-outer.ts b/src/mono/wasm/runtime/run-outer.ts index b2af808143a445..0321cd8e574100 100644 --- a/src/mono/wasm/runtime/run-outer.ts +++ b/src/mono/wasm/runtime/run-outer.ts @@ -60,7 +60,7 @@ export class HostBuilder implements DotnetHostBuilder { const handler = function fatal_handler(event: Event, error: any) { event.preventDefault(); try { - if (!error.silent) mono_exit(1, error); + if (!error || !error.silent) mono_exit(1, error); } catch (err) { // no not re-throw from the fatal handler } diff --git a/src/mono/wasm/runtime/run.ts b/src/mono/wasm/runtime/run.ts index 1c1d805e3a7dfa..9b92f33555e65d 100644 --- a/src/mono/wasm/runtime/run.ts +++ b/src/mono/wasm/runtime/run.ts @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -import { ENVIRONMENT_IS_WEB, Module, runtimeHelpers } from "./globals"; +import { ENVIRONMENT_IS_NODE, ENVIRONMENT_IS_WEB, INTERNAL, Module, runtimeHelpers } from "./globals"; import { mono_wasm_wait_for_debugger } from "./debug"; import { abort_startup, mono_wasm_set_main_args } from "./startup"; import cwraps from "./cwraps"; @@ -127,7 +127,11 @@ function set_exit_code_and_quit_now(exit_code: number, reason?: any): void { logErrorOnExit(exit_code, reason); appendElementOnExit(exit_code); if (exit_code !== 0 || !ENVIRONMENT_IS_WEB) { - if (runtimeHelpers.quit) { + if (ENVIRONMENT_IS_NODE && INTERNAL.process) { + INTERNAL.process.exit(exit_code); + throw reason; + } + else if (runtimeHelpers.quit) { runtimeHelpers.quit(exit_code, reason); } else { throw reason;