diff --git a/lib/EvalDevToolModulePlugin.js b/lib/EvalDevToolModulePlugin.js index 956dd6a14..b9b402a1f 100644 --- a/lib/EvalDevToolModulePlugin.js +++ b/lib/EvalDevToolModulePlugin.js @@ -95,9 +95,9 @@ class EvalDevToolModulePlugin { `eval(${ compilation.outputOptions.trustedTypes ? `${RuntimeGlobals.createScript}(${JSON.stringify( - content + footer + `{${content + footer}\n}` )})` - : JSON.stringify(content + footer) + : JSON.stringify(`{${content + footer}\n}`) });` ); cache.set(source, result); diff --git a/lib/EvalSourceMapDevToolPlugin.js b/lib/EvalSourceMapDevToolPlugin.js index 3f2a71bd6..386f8ae4f 100644 --- a/lib/EvalSourceMapDevToolPlugin.js +++ b/lib/EvalSourceMapDevToolPlugin.js @@ -191,9 +191,9 @@ class EvalSourceMapDevToolPlugin { `eval(${ compilation.outputOptions.trustedTypes ? `${RuntimeGlobals.createScript}(${JSON.stringify( - content + footer + `{${content + footer}\n}` )})` - : JSON.stringify(content + footer) + : JSON.stringify(`{${content + footer}\n}`) });` ) ); diff --git a/lib/javascript/JavascriptParser.js b/lib/javascript/JavascriptParser.js index c6d6816ce..32f6cb700 100644 --- a/lib/javascript/JavascriptParser.js +++ b/lib/javascript/JavascriptParser.js @@ -491,6 +491,8 @@ class JavascriptParser extends Parser { /** @type {HookMap>} */ varDeclarationConst: new HookMap(() => new SyncBailHook(["declaration"])), /** @type {HookMap>} */ + varDeclarationUsing: new HookMap(() => new SyncBailHook(["declaration"])), + /** @type {HookMap>} */ varDeclarationVar: new HookMap(() => new SyncBailHook(["declaration"])), /** @type {HookMap>} */ pattern: new HookMap(() => new SyncBailHook(["pattern"])), @@ -2818,10 +2820,13 @@ class JavascriptParser extends Parser { */ blockPreWalkVariableDeclaration(statement) { if (statement.kind === "var") return; + const hookMap = statement.kind === "const" ? this.hooks.varDeclarationConst - : this.hooks.varDeclarationLet; + : statement.kind === "using" || statement.kind === "await using" + ? this.hooks.varDeclarationUsing + : this.hooks.varDeclarationLet; this._preWalkVariableDeclaration(statement, hookMap); } diff --git a/package.json b/package.json index db7655c6f..7f692c53e 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.14.0", + "acorn": "^8.15.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.2", @@ -71,10 +71,10 @@ "hash-wasm": "^4.9.0", "husky": "^9.0.11", "istanbul": "^0.4.5", - "jest": "^30.0.2", - "jest-circus": "^30.0.2", - "jest-cli": "^30.0.2", - "jest-diff": "^30.0.2", + "jest": "^30.0.3", + "jest-circus": "^30.0.3", + "jest-cli": "^30.0.3", + "jest-diff": "^30.0.3", "jest-environment-node": "^30.0.2", "jest-junit": "^16.0.0", "json-loader": "^0.5.7", diff --git a/test/cases/parsing/using/index.js b/test/cases/parsing/using/index.js new file mode 100644 index 000000000..25b5c7250 --- /dev/null +++ b/test/cases/parsing/using/index.js @@ -0,0 +1,55 @@ +import { resource, disposed } from "./module.js"; + +let disposeCounter = 0; + +const getResource = () => { + return { + test() { + // Nothing + }, + [Symbol.dispose]: () => { + disposeCounter++; + } + } +} + + +it("should using", async () => { + { + using foo = getResource(); + + foo.test(); + } + + expect(disposeCounter).toBe(1); + + { + await using bar = getResource(); + + bar.test(); + } + + expect(disposeCounter).toBe(2); + + for (await using x of [getResource()]) { + x.test(); + } + + expect(disposeCounter).toBe(3); + + for await (await using x of [getResource()]) { + x.test(); + } + + expect(disposeCounter).toBe(4); + + { + using resource = await getResource(); + } + + expect(disposeCounter).toBe(5); + + // TODO uncomment when will re resolved on V8 side - https://github.com/tc39/proposal-explicit-resource-management/issues/262 + // resource[Symbol.dispose](); + // expect(disposed).toBe(true); +}); diff --git a/test/cases/parsing/using/module.js b/test/cases/parsing/using/module.js new file mode 100644 index 000000000..0732aca7f --- /dev/null +++ b/test/cases/parsing/using/module.js @@ -0,0 +1,9 @@ +let disposed = false; + +using resource = { + [Symbol.dispose]: () => { + disposed = true; + } +}; + +export { resource, disposed }; diff --git a/test/cases/parsing/using/test.filter.js b/test/cases/parsing/using/test.filter.js new file mode 100644 index 000000000..62f7583d1 --- /dev/null +++ b/test/cases/parsing/using/test.filter.js @@ -0,0 +1,10 @@ +const supportsUsing = require("../../../helpers/supportsUsing"); + +module.exports = function (config) { + // TODO https://github.com/terser/terser/issues/1625 + if (config.minimize) { + return false; + } + + return supportsUsing(); +}; diff --git a/test/configCases/source-map/exclude-modules-source-map/index.js b/test/configCases/source-map/exclude-modules-source-map/index.js index bb54f2716..568a5ee14 100644 --- a/test/configCases/source-map/exclude-modules-source-map/index.js +++ b/test/configCases/source-map/exclude-modules-source-map/index.js @@ -2,7 +2,7 @@ it("bundle1 should include eval sourcemapped test1.js and test2.js as is", funct var fs = require("fs"); var path = require("path"); var bundle1 = fs.readFileSync(path.join(__dirname, "bundle1.js"), "utf-8"); - expect(bundle1).toMatch("eval(\"var test1marker"); + expect(bundle1).toMatch("eval(\"{var test1marker"); expect(bundle1).toMatch("var test2marker"); - expect(bundle1).not.toMatch("eval(\"var test2marker"); + expect(bundle1).not.toMatch("eval(\"{var test2marker"); }); diff --git a/test/helpers/supportsUsing.js b/test/helpers/supportsUsing.js new file mode 100644 index 000000000..b7dd79ebf --- /dev/null +++ b/test/helpers/supportsUsing.js @@ -0,0 +1,23 @@ +module.exports = function supportsUsing() { + try { + const f = eval(`(function f() { + let disposed = false; + + { + const getResource = () => { + return { + [Symbol.dispose]: () => { + disposed = true; + } + } + } + using resource = getResource(); + } + + return disposed; + })`); + return f() === true; + } catch (_err) { + return false; + } +}; diff --git a/types.d.ts b/types.d.ts index 6c4ad3aa2..cd257d5b9 100644 --- a/types.d.ts +++ b/types.d.ts @@ -6682,6 +6682,7 @@ declare class JavascriptParser extends Parser { varDeclaration: HookMap>; varDeclarationLet: HookMap>; varDeclarationConst: HookMap>; + varDeclarationUsing: HookMap>; varDeclarationVar: HookMap>; pattern: HookMap>; canRename: HookMap>; diff --git a/yarn.lock b/yarn.lock index bc99358eb..406306692 100644 --- a/yarn.lock +++ b/yarn.lock @@ -957,10 +957,10 @@ jest-util "30.0.2" slash "^3.0.0" -"@jest/core@30.0.2": - version "30.0.2" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.2.tgz#c84c85baac55e6fa85b491edc4280425631951c7" - integrity sha512-mUMFdDtYWu7la63NxlyNIhgnzynszxunXWrtryR7bV24jV9hmi7XCZTzZHaLJjcBU66MeUAPZ81HjwASVpYhYQ== +"@jest/core@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-30.0.3.tgz#87967dd3ea6bd6bc98e99aa4b47bfbb0b7f2a77e" + integrity sha512-Mgs1N+NSHD3Fusl7bOq1jyxv1JDAUwjy+0DhVR93Q6xcBP9/bAQ+oZhXb5TTnP5sQzAHgb7ROCKQ2SnovtxYtg== dependencies: "@jest/console" "30.0.2" "@jest/pattern" "30.0.1" @@ -975,15 +975,15 @@ exit-x "^0.2.2" graceful-fs "^4.2.11" jest-changed-files "30.0.2" - jest-config "30.0.2" + jest-config "30.0.3" jest-haste-map "30.0.2" jest-message-util "30.0.2" jest-regex-util "30.0.1" jest-resolve "30.0.2" - jest-resolve-dependencies "30.0.2" - jest-runner "30.0.2" - jest-runtime "30.0.2" - jest-snapshot "30.0.2" + jest-resolve-dependencies "30.0.3" + jest-runner "30.0.3" + jest-runtime "30.0.3" + jest-snapshot "30.0.3" jest-util "30.0.2" jest-validate "30.0.2" jest-watcher "30.0.2" @@ -1006,20 +1006,20 @@ "@types/node" "*" jest-mock "30.0.2" -"@jest/expect-utils@30.0.2": - version "30.0.2" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.2.tgz#d065f68c128cec526540193d88f2fc64c3d4f971" - integrity sha512-FHF2YdtFBUQOo0/qdgt+6UdBFcNPF/TkVzcc+4vvf8uaBzUlONytGBeeudufIHHW1khRfM1sBbRT1VCK7n/0dQ== +"@jest/expect-utils@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.3.tgz#2a9fb40110c8a13ae464da41f877df90d2e6bc3b" + integrity sha512-SMtBvf2sfX2agcT0dA9pXwcUrKvOSDqBY4e4iRfT+Hya33XzV35YVg+98YQFErVGA/VR1Gto5Y2+A6G9LSQ3Yg== dependencies: "@jest/get-type" "30.0.1" -"@jest/expect@30.0.2": - version "30.0.2" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.2.tgz#b3d5adec28f3884d6fd0746c4b5d0d2473e9e212" - integrity sha512-blWRFPjv2cVfh42nLG6L3xIEbw+bnuiZYZDl/BZlsNG/i3wKV6FpPZ2EPHguk7t5QpLaouIu+7JmYO4uBR6AOg== +"@jest/expect@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-30.0.3.tgz#9653e868ca27dd2194f6c20c81b8a690f9669465" + integrity sha512-73BVLqfCeWjYWPEQoYjiRZ4xuQRhQZU0WdgvbyXGRHItKQqg5e6mt2y1kVhzLSuZpmUnccZHbGynoaL7IcLU3A== dependencies: - expect "30.0.2" - jest-snapshot "30.0.2" + expect "30.0.3" + jest-snapshot "30.0.3" "@jest/fake-timers@30.0.2": version "30.0.2" @@ -1038,13 +1038,13 @@ resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52" integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw== -"@jest/globals@30.0.2": - version "30.0.2" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.2.tgz#3b401bb7cb8cc0a00476630298747a38e40a6fc1" - integrity sha512-DwTtus9jjbG7b6jUdkcVdptf0wtD1v153A+PVwWB/zFwXhqu6hhtSd+uq88jofMhmYPtkmPmVGUBRNCZEKXn+w== +"@jest/globals@30.0.3": + version "30.0.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-30.0.3.tgz#9c9ef55e6f5e6b7e946244bdbf2af85044b7bb04" + integrity sha512-fIduqNyYpMeeSr5iEAiMn15KxCzvrmxl7X7VwLDRGj7t5CoHtbF+7K3EvKk32mOUIJ4kIvFRlaixClMH2h/Vaw== dependencies: "@jest/environment" "30.0.2" - "@jest/expect" "30.0.2" + "@jest/expect" "30.0.3" "@jest/types" "30.0.1" jest-mock "30.0.2" @@ -3227,14 +3227,14 @@ exit-x@^0.2.2: resolved "https://registry.yarnpkg.com/exit-x/-/exit-x-0.2.2.tgz#1f9052de3b8d99a696b10dad5bced9bdd5c3aa64" integrity sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ== -expect@30.0.2, expect@^30.0.0: - version "30.0.2" - resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.2.tgz#d073942c19d54cb7bc42c9b2a434d850433a7def" - integrity sha512-YN9Mgv2mtTWXVmifQq3QT+ixCL/uLuLJw+fdp8MOjKqu8K3XQh3o5aulMM1tn+O2DdrWNxLZTeJsCY/VofUA0A== +expect@30.0.3, expect@^30.0.0: + version "30.0.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.3.tgz#8bf31a67514f78c5e4ac8d67774192ab95d5ec25" + integrity sha512-HXg6NvK35/cSYZCUKAtmlgCFyqKM4frEPbzrav5hRqb0GMz0E0lS5hfzYjSaiaE5ysnp/qI2aeZkeyeIAOeXzQ== dependencies: - "@jest/expect-utils" "30.0.2" + "@jest/expect-utils" "30.0.3" "@jest/get-type" "30.0.1" - jest-matcher-utils "30.0.2" + jest-matcher-utils "30.0.3" jest-message-util "30.0.2" jest-mock "30.0.2" jest-util "30.0.2" @@ -4114,13 +4114,13 @@ jest-changed-files@30.0.2: jest-util "30.0.2" p-limit "^3.1.0" -jest-circus@30.0.2, jest-circus@^30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.2.tgz#a00a408d5d32d2b547f20f9e84a487d236ed8ee1" - integrity sha512-NRozwx4DaFHcCUtwdEd/0jBLL1imyMrCbla3vF//wdsB2g6jIicMbjx9VhqE/BYU4dwsOQld+06ODX0oZ9xOLg== +jest-circus@30.0.3, jest-circus@^30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-30.0.3.tgz#d2de4adb92cfdbce18668e27176c1b9f79afdf5a" + integrity sha512-rD9qq2V28OASJHJWDRVdhoBdRs6k3u3EmBzDYcyuMby8XCO3Ll1uq9kyqM41ZcC4fMiPulMVh3qMw0cBvDbnyg== dependencies: "@jest/environment" "30.0.2" - "@jest/expect" "30.0.2" + "@jest/expect" "30.0.3" "@jest/test-result" "30.0.2" "@jest/types" "30.0.1" "@types/node" "*" @@ -4129,10 +4129,10 @@ jest-circus@30.0.2, jest-circus@^30.0.2: dedent "^1.6.0" is-generator-fn "^2.1.0" jest-each "30.0.2" - jest-matcher-utils "30.0.2" + jest-matcher-utils "30.0.3" jest-message-util "30.0.2" - jest-runtime "30.0.2" - jest-snapshot "30.0.2" + jest-runtime "30.0.3" + jest-snapshot "30.0.3" jest-util "30.0.2" p-limit "^3.1.0" pretty-format "30.0.2" @@ -4140,26 +4140,26 @@ jest-circus@30.0.2, jest-circus@^30.0.2: slash "^3.0.0" stack-utils "^2.0.6" -jest-cli@30.0.2, jest-cli@^30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.2.tgz#cf8ad8a1157721c3a1dc3a371565f6b7f5e6b549" - integrity sha512-yQ6Qz747oUbMYLNAqOlEby+hwXx7WEJtCl0iolBRpJhr2uvkBgiVMrvuKirBc8utwQBnkETFlDUkYifbRpmBrQ== +jest-cli@30.0.3, jest-cli@^30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-30.0.3.tgz#2340b69c580c471fd9f4a197f969025a545608dd" + integrity sha512-UWDSj0ayhumEAxpYRlqQLrssEi29kdQ+kddP94AuHhZknrE+mT0cR0J+zMHKFe9XPfX3dKQOc2TfWki3WhFTsA== dependencies: - "@jest/core" "30.0.2" + "@jest/core" "30.0.3" "@jest/test-result" "30.0.2" "@jest/types" "30.0.1" chalk "^4.1.2" exit-x "^0.2.2" import-local "^3.2.0" - jest-config "30.0.2" + jest-config "30.0.3" jest-util "30.0.2" jest-validate "30.0.2" yargs "^17.7.2" -jest-config@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.2.tgz#a4884ba3b4d31fb0599b0b78e7a0204efb126f9d" - integrity sha512-vo0fVq+uzDcXETFVnCUyr5HaUCM8ES6DEuS9AFpma34BVXMRRNlsqDyiW5RDHaEFoeFlJHoI4Xjh/WSYIAL58g== +jest-config@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-30.0.3.tgz#978853722b9b0f2d0596025ea423cc6c7b603c07" + integrity sha512-j0L4oRCtJwNyZktXIqwzEiDVQXBbQ4dqXuLD/TZdn++hXIcIfZmjHgrViEy5s/+j4HvITmAXbexVZpQ/jnr0bg== dependencies: "@babel/core" "^7.27.4" "@jest/get-type" "30.0.1" @@ -4172,12 +4172,12 @@ jest-config@30.0.2: deepmerge "^4.3.1" glob "^10.3.10" graceful-fs "^4.2.11" - jest-circus "30.0.2" + jest-circus "30.0.3" jest-docblock "30.0.1" jest-environment-node "30.0.2" jest-regex-util "30.0.1" jest-resolve "30.0.2" - jest-runner "30.0.2" + jest-runner "30.0.3" jest-util "30.0.2" jest-validate "30.0.2" micromatch "^4.0.8" @@ -4186,10 +4186,10 @@ jest-config@30.0.2: slash "^3.0.0" strip-json-comments "^3.1.1" -jest-diff@30.0.2, jest-diff@^30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.2.tgz#db77e7ca48a964337c0a4259d5e389c0bb124d7e" - integrity sha512-2UjrNvDJDn/oHFpPrUTVmvYYDNeNtw2DlY3er8bI6vJJb9Fb35ycp/jFLd5RdV59tJ8ekVXX3o/nwPcscgXZJQ== +jest-diff@30.0.3, jest-diff@^30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.3.tgz#50ac056b90fe9151d6266b18a27adeb064c30235" + integrity sha512-Q1TAV0cUcBTic57SVnk/mug0/ASyAqtSIOkr7RAlxx97llRYsM74+E8N5WdGJUlwCKwgxPAkVjKh653h1+HA9A== dependencies: "@jest/diff-sequences" "30.0.1" "@jest/get-type" "30.0.1" @@ -4263,14 +4263,14 @@ jest-leak-detector@30.0.2: "@jest/get-type" "30.0.1" pretty-format "30.0.2" -jest-matcher-utils@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.2.tgz#2dbb5f9aacfdd9c013fa72ed6132ca4e1b41f8db" - integrity sha512-1FKwgJYECR8IT93KMKmjKHSLyru0DqguThov/aWpFccC0wbiXGOxYEu7SScderBD7ruDOpl7lc5NG6w3oxKfaA== +jest-matcher-utils@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.3.tgz#e07e4776bade71a3a7948a9bf8aeede311c5013a" + integrity sha512-hMpVFGFOhYmIIRGJ0HgM9htC5qUiJ00famcc9sRFchJJiLZbbVKrAztcgE6VnXLRxA3XZ0bvNA7hQWh3oHXo/A== dependencies: "@jest/get-type" "30.0.1" chalk "^4.1.2" - jest-diff "30.0.2" + jest-diff "30.0.3" pretty-format "30.0.2" jest-message-util@30.0.2: @@ -4307,13 +4307,13 @@ jest-regex-util@30.0.1: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b" integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA== -jest-resolve-dependencies@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.2.tgz#0c5da8dc5f791f3de10c1d5df294503cd612e5a6" - integrity sha512-Lp1iIXpsF5fGM4vyP8xHiIy2H5L5yO67/nXoYJzH4kz+fQmO+ZMKxzYLyWxYy4EeCLeNQ6a9OozL+uHZV2iuEA== +jest-resolve-dependencies@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-30.0.3.tgz#8278f54a84009028b823f5c1f7033fb968405b2f" + integrity sha512-FlL6u7LiHbF0Oe27k7DHYMq2T2aNpPhxnNo75F7lEtu4A6sSw+TKkNNUGNcVckdFoL0RCWREJsC1HsKDwKRZzQ== dependencies: jest-regex-util "30.0.1" - jest-snapshot "30.0.2" + jest-snapshot "30.0.3" jest-resolve@30.0.2: version "30.0.2" @@ -4329,10 +4329,10 @@ jest-resolve@30.0.2: slash "^3.0.0" unrs-resolver "^1.7.11" -jest-runner@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.2.tgz#28022ea290e2759864ae97cb5307bcae98e68f2d" - integrity sha512-6H+CIFiDLVt1Ix6jLzASXz3IoIiDukpEIxL9FHtDQ2BD/k5eFtDF5e5N9uItzRE3V1kp7VoSRyrGBytXKra4xA== +jest-runner@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-30.0.3.tgz#baa1d5e77655c70cea9aa4138cfb437f6bada607" + integrity sha512-CxYBzu9WStOBBXAKkLXGoUtNOWsiS1RRmUQb6SsdUdTcqVncOau7m8AJ4cW3Mz+YL1O9pOGPSYLyvl8HBdFmkQ== dependencies: "@jest/console" "30.0.2" "@jest/environment" "30.0.2" @@ -4350,21 +4350,21 @@ jest-runner@30.0.2: jest-leak-detector "30.0.2" jest-message-util "30.0.2" jest-resolve "30.0.2" - jest-runtime "30.0.2" + jest-runtime "30.0.3" jest-util "30.0.2" jest-watcher "30.0.2" jest-worker "30.0.2" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.2.tgz#db5b4723ebdb8c2158779c055976cb6cc22ce1df" - integrity sha512-H1a51/soNOeAjoggu6PZKTH7DFt8JEGN4mesTSwyqD2jU9PXD04Bp6DKbt2YVtQvh2JcvH2vjbkEerCZ3lRn7A== +jest-runtime@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-30.0.3.tgz#1eb112924426e8b90c37f0ea7da1b51966e252bf" + integrity sha512-Xjosq0C48G9XEQOtmgrjXJwPaUPaq3sPJwHDRaiC+5wi4ZWxO6Lx6jNkizK/0JmTulVNuxP8iYwt77LGnfg3/w== dependencies: "@jest/environment" "30.0.2" "@jest/fake-timers" "30.0.2" - "@jest/globals" "30.0.2" + "@jest/globals" "30.0.3" "@jest/source-map" "30.0.1" "@jest/test-result" "30.0.2" "@jest/transform" "30.0.2" @@ -4380,32 +4380,32 @@ jest-runtime@30.0.2: jest-mock "30.0.2" jest-regex-util "30.0.1" jest-resolve "30.0.2" - jest-snapshot "30.0.2" + jest-snapshot "30.0.3" jest-util "30.0.2" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.2.tgz#0f9f2c59c2070874a2db96d30c8543dfef657701" - integrity sha512-KeoHikoKGln3OlN7NS7raJ244nIVr2K46fBTNdfuxqYv2/g4TVyWDSO4fmk08YBJQMjs3HNfG1rlLfL/KA+nUw== +jest-snapshot@30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-30.0.3.tgz#f605254223eee0946d205c6e7ede7238e87be920" + integrity sha512-F05JCohd3OA1N9+5aEPXA6I0qOfZDGIx0zTq5Z4yMBg2i1p5ELfBusjYAWwTkC12c7dHcbyth4QAfQbS7cRjow== dependencies: "@babel/core" "^7.27.4" "@babel/generator" "^7.27.5" "@babel/plugin-syntax-jsx" "^7.27.1" "@babel/plugin-syntax-typescript" "^7.27.1" "@babel/types" "^7.27.3" - "@jest/expect-utils" "30.0.2" + "@jest/expect-utils" "30.0.3" "@jest/get-type" "30.0.1" "@jest/snapshot-utils" "30.0.1" "@jest/transform" "30.0.2" "@jest/types" "30.0.1" babel-preset-current-node-syntax "^1.1.0" chalk "^4.1.2" - expect "30.0.2" + expect "30.0.3" graceful-fs "^4.2.11" - jest-diff "30.0.2" - jest-matcher-utils "30.0.2" + jest-diff "30.0.3" + jest-matcher-utils "30.0.3" jest-message-util "30.0.2" jest-util "30.0.2" pretty-format "30.0.2" @@ -4470,15 +4470,15 @@ jest-worker@^27.4.5: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^30.0.2: - version "30.0.2" - resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.2.tgz#0b3af654548d706bdde6f1bba93099ec343b8772" - integrity sha512-HlSEiHRcmTuGwNyeawLTEzpQUMFn+f741FfoNg7RXG2h0WLJKozVCpcQLT0GW17H6kNCqRwGf+Ii/I1YVNvEGQ== +jest@^30.0.3: + version "30.0.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-30.0.3.tgz#fc3b6b370e2820d718ea299d159a7ba4637dbd35" + integrity sha512-Uy8xfeE/WpT2ZLGDXQmaYNzw2v8NUKuYeKGtkS6sDxwsdQihdgYCXaKIYnph1h95DN5H35ubFDm0dfmsQnjn4Q== dependencies: - "@jest/core" "30.0.2" + "@jest/core" "30.0.3" "@jest/types" "30.0.1" import-local "^3.2.0" - jest-cli "30.0.2" + jest-cli "30.0.3" js-stringify@^1.0.2: version "1.0.2"