From 85c1bcca1b009ad0d5c1ebfc5dcceabedda257ba Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 18:02:19 -0500 Subject: [PATCH 01/22] feat(tests): add node test setup and update test utilities - Introduced a new script for node test setup (`scripts/node-test-setup.mjs`) to configure snapshot serializers and resolve snapshot paths for webpack tests. - Added new npm script `test:node` in `package.json` for running node tests with specific configurations. - Updated Jest snapshots in `proxy-option.test.js.snap.webpack5` to reflect changes in test descriptions. - Refactored tests in `open-option.test.js` and `proxy-option.test.js` to utilize `jest-mock` for mocking and spying, replacing previous Jest mocking methods. - Changed `beforeAll` and `afterAll` hooks to `before` and `after` for better test isolation and readability. --- package-lock.json | 1519 +++++++++++++++-- package.json | 5 + scripts/node-test-setup.mjs | 27 + .../proxy-option.test.js.snap.webpack5 | 12 +- test/server/open-option.test.js | 99 +- test/server/proxy-option.test.js | 104 +- 6 files changed, 1546 insertions(+), 220 deletions(-) create mode 100644 scripts/node-test-setup.mjs diff --git a/package-lock.json b/package-lock.json index 217a4cd486..cd5b66f78f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -71,12 +71,15 @@ "eslint-plugin-jsdoc": "^51.3.4", "eslint-plugin-n": "^17.21.0", "execa": "^5.1.1", + "expect": "^30.4.1", "hono": "^4.12.9", "html-webpack-plugin": "^5.6.3", "http-proxy": "^1.18.1", "husky": "^9.1.6", "jest": "^30.0.4", "jest-environment-jsdom": "^29.7.0", + "jest-mock": "^30.4.1", + "jsdom": "^29.1.1", "klona": "^2.0.4", "less": "^4.1.1", "less-loader": "^12.1.0", @@ -85,6 +88,7 @@ "memfs": "^4.14.0", "npm-run-all": "^4.1.5", "prettier": "^3.2.4", + "pretty-format": "^30.4.1", "puppeteer": "^24.35.0", "readable-stream": "^4.5.2", "require-from-string": "^2.0.2", @@ -119,6 +123,57 @@ } } }, + "node_modules/@asamuzakjp/css-color": { + "version": "5.1.11", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.1.11.tgz", + "integrity": "sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/generational-cache": "^1.0.1", + "@csstools/css-calc": "^3.2.0", + "@csstools/css-color-parser": "^4.1.0", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.1.1.tgz", + "integrity": "sha512-67RZDnYRc8H/8MLDgQCDE//zoqVFwajkepHZgmXrbwybzXOEwOWGPYGmALYl9J2DOLfFPPs6kKCqmbzV895hTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@asamuzakjp/generational-cache": "^1.0.1", + "@asamuzakjp/nwsapi": "^2.3.9", + "bidi-js": "^1.0.3", + "css-tree": "^3.2.1", + "is-potential-custom-element-name": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/generational-cache": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/generational-cache/-/generational-cache-1.0.1.tgz", + "integrity": "sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + } + }, + "node_modules/@asamuzakjp/nwsapi": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@asamuzakjp/nwsapi/-/nwsapi-2.3.9.tgz", + "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/cli": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", @@ -2028,6 +2083,19 @@ "dev": true, "license": "MIT" }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, "node_modules/@commitlint/cli": { "version": "19.8.1", "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", @@ -2890,6 +2958,148 @@ "node": ">=18.0" } }, + "node_modules/@csstools/color-helpers": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=20.19.0" + } + }, + "node_modules/@csstools/css-calc": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.2.0.tgz", + "integrity": "sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.1.0.tgz", + "integrity": "sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.2.0" + }, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20.19.0" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^4.0.0" + } + }, + "node_modules/@csstools/css-syntax-patches-for-csstree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.3.tgz", + "integrity": "sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20.19.0" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-1.0.0.tgz", @@ -3217,6 +3427,24 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@exodus/bytes": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz", + "integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + }, + "peerDependencies": { + "@noble/hashes": "^1.8.0 || ^2.0.0" + }, + "peerDependenciesMeta": { + "@noble/hashes": { + "optional": true + } + } + }, "node_modules/@hono/node-server": { "version": "1.19.12", "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.12.tgz", @@ -3641,6 +3869,34 @@ "dev": true, "license": "MIT" }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/@jest/core/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -3677,6 +3933,21 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@jest/environment/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/expect": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", @@ -3704,6 +3975,39 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@jest/expect/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/expect/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/fake-timers": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", @@ -3722,6 +4026,21 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@jest/fake-timers/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/get-type": { "version": "30.1.0", "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", @@ -3748,6 +4067,21 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/@jest/globals/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@jest/pattern": { "version": "30.0.1", "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", @@ -4712,6 +5046,7 @@ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -5005,9 +5340,9 @@ } }, "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.1.tgz", + "integrity": "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==", "dev": true, "license": "MIT", "engines": { @@ -6281,9 +6616,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", + "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", "dev": true, "license": "MIT", "dependencies": { @@ -7119,6 +7454,16 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "license": "MIT" }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -9779,13 +10124,27 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dev": true, - "license": "BSD-2-Clause", - "engines": { + "license": "MIT", + "dependencies": { + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { "node": ">= 6" }, "funding": { @@ -9856,18 +10215,17 @@ } }, "node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/data-view-buffer": { @@ -10301,6 +10659,16 @@ "node": ">=12" } }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, "node_modules/domhandler": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", @@ -11720,23 +12088,237 @@ } }, "node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", + "@jest/expect-utils": "30.4.1", "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/@jest/diff-sequences": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/@jest/expect-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/@jest/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/expect/node_modules/jest-diff": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.4.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/jest-matcher-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/jest-message-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.4.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-util": "30.4.1", + "picomatch": "^4.0.3", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect/node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/expect/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/express": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", @@ -13439,16 +14021,16 @@ "license": "ISC" }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", "dev": true, "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "@exodus/bytes": "^1.6.0" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/html-escaper": { @@ -14819,6 +15401,34 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-circus/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-circus/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15067,6 +15677,34 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-config/node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -15146,9 +15784,37 @@ "dev": true, "license": "MIT" }, - "node_modules/jest-docblock": { + "node_modules/jest-diff/node_modules/pretty-format": { "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-docblock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", "dev": true, "license": "MIT", @@ -15229,6 +15895,34 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-environment-jsdom": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", @@ -15408,6 +16102,34 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-environment-jsdom/node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", @@ -15462,6 +16184,52 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-environment-jsdom/node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "node_modules/jest-environment-jsdom/node_modules/picomatch": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", @@ -15513,6 +16281,92 @@ "node": ">=8" } }, + "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jest-environment-jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, "node_modules/jest-environment-node": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", @@ -15532,6 +16386,21 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/jest-environment-node/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-haste-map": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", @@ -15571,6 +16440,34 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-matcher-utils": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", @@ -15640,6 +16537,34 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-matcher-utils/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-message-util": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", @@ -15694,7 +16619,159 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-util": "30.4.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.4.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-mock/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-mock/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -15707,33 +16784,36 @@ "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { + "node_modules/jest-mock/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/jest-mock/node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/jest-mock/node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", + "@jest/types": "30.4.1", "@types/node": "*", - "jest-util": "30.2.0" + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -16069,6 +17149,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jest-runtime/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/jest-runtime/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -16181,6 +17276,67 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-snapshot/node_modules/expect": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", + "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.2.0", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.2.0", + "jest-message-util": "30.2.0", + "jest-mock": "30.2.0", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-mock": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", + "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "jest-util": "30.2.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-snapshot/node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -16349,6 +17505,34 @@ "dev": true, "license": "MIT" }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", + "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "30.0.5", + "ansi-styles": "^5.2.0", + "react-is": "^18.3.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/jest-watcher": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", @@ -16497,44 +17681,39 @@ } }, "node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.1.1.tgz", + "integrity": "sha512-ECi4Fi2f7BdJtUKTflYRTiaMxIB0O6zfR1fX0GXpUrf6flp8QIYn1UT20YQqdSOfk2dfkCwS8LAFoJDEppNK5Q==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "@asamuzakjp/css-color": "^5.1.11", + "@asamuzakjp/dom-selector": "^7.1.1", + "@bramus/specificity": "^2.4.2", + "@csstools/css-syntax-patches-for-csstree": "^1.1.3", + "@exodus/bytes": "^1.15.0", + "css-tree": "^3.2.1", + "data-urls": "^7.0.0", + "decimal.js": "^10.6.0", + "html-encoding-sniffer": "^6.0.0", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", + "lru-cache": "^11.3.5", + "parse5": "^8.0.1", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "tough-cookie": "^6.0.1", + "undici": "^7.25.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.1", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": "^20.19.0 || ^22.13.0 || >=24.0.0" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^3.0.0" }, "peerDependenciesMeta": { "canvas": { @@ -16542,6 +17721,42 @@ } } }, + "node_modules/jsdom/node_modules/entities": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-8.0.0.tgz", + "integrity": "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=20.19.0" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/jsdom/node_modules/lru-cache": { + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.1.tgz", + "integrity": "sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==", + "dev": true, + "license": "MIT", + "dependencies": { + "entities": "^8.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -17647,6 +18862,13 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/media-typer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", @@ -18892,9 +20114,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.22", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.22.tgz", - "integrity": "sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==", + "version": "2.2.23", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", + "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", "dev": true, "license": "MIT" }, @@ -19822,15 +21044,29 @@ } }, "node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.4.1.tgz", + "integrity": "sha512-K6KiKMHTL4jjX4u3Kir2EW07nRfcqVTXIImx50wbjHQTcZPgg+gjVeNTIT3l3L1Rd4UefxfogquC9J37SoFyyw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", + "@jest/schemas": "30.4.1", "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "react-is-18": "npm:react-is@^18.3.1", + "react-is-19": "npm:react-is@^19.2.5" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/pretty-format/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" @@ -20166,6 +21402,22 @@ "dev": true, "license": "MIT" }, + "node_modules/react-is-18": { + "name": "react-is", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-is-19": { + "name": "react-is", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.6.tgz", + "integrity": "sha512-XjBR15BhXuylgWGuslhDKqlSayuqvqBX91BP8pauG8kd1zY8kotkNWbXksTCNRarse4kuGbe2kIY05ARtwNIvw==", + "dev": true, + "license": "MIT" + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -22578,6 +23830,26 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tldts": { + "version": "7.0.30", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.30.tgz", + "integrity": "sha512-ELrFxuqsDdHUwoh0XxDbxuLD3Wnz49Z57IFvTtvWy1hJdcMZjXLIuonjilCiWHlT2GbE4Wlv1wKVTzDFnXH1aw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.30" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.30", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.30.tgz", + "integrity": "sha512-uiHN8PIB1VmWyS98eZYja4xzlYqeFZVjb4OuYlJQnZAuJhMw4PbKQOKgHKhBdJR3FE/t5mUQ1Kd80++B+qhD1Q==", + "dev": true, + "license": "MIT" + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", @@ -22607,32 +23879,29 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^7.0.5" }, "engines": { - "node": ">=6" + "node": ">=16" } }, "node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-6.0.0.tgz", + "integrity": "sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "punycode": "^2.3.1" }, "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/tree-dump": { @@ -22989,6 +24258,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.25.0.tgz", + "integrity": "sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -23302,16 +24581,16 @@ "license": "MIT" }, "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/wait-for-expect": { @@ -23353,13 +24632,13 @@ "license": "Apache-2.0" }, "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", "dev": true, "license": "BSD-2-Clause", "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/webpack": { @@ -23536,6 +24815,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -23559,27 +24839,28 @@ } }, "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=20" } }, "node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", "dev": true, "license": "MIT", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "@exodus/bytes": "^1.11.0", + "tr46": "^6.0.0", + "webidl-conversions": "^8.0.1" }, "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/which": { @@ -23936,13 +25217,13 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlchars": { diff --git a/package.json b/package.json index 6f71d9a0ca..9a3f75c4d9 100644 --- a/package.json +++ b/package.json @@ -38,6 +38,7 @@ "test:only": "node --experimental-vm-modules node_modules/jest/bin/jest.js", "test:coverage": "npm run test:only -- --coverage", "test:watch": "npm run test:coverage --watch", + "test:node": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000", "test": "npm run test:coverage", "pretest": "npm run lint", "prepare": "husky && npm run build", @@ -103,12 +104,15 @@ "eslint-plugin-jsdoc": "^51.3.4", "eslint-plugin-n": "^17.21.0", "execa": "^5.1.1", + "expect": "^30.4.1", "hono": "^4.12.9", "html-webpack-plugin": "^5.6.3", "http-proxy": "^1.18.1", "husky": "^9.1.6", "jest": "^30.0.4", "jest-environment-jsdom": "^29.7.0", + "jest-mock": "^30.4.1", + "jsdom": "^29.1.1", "klona": "^2.0.4", "less": "^4.1.1", "less-loader": "^12.1.0", @@ -117,6 +121,7 @@ "memfs": "^4.14.0", "npm-run-all": "^4.1.5", "prettier": "^3.2.4", + "pretty-format": "^30.4.1", "puppeteer": "^24.35.0", "readable-stream": "^4.5.2", "require-from-string": "^2.0.2", diff --git a/scripts/node-test-setup.mjs b/scripts/node-test-setup.mjs new file mode 100644 index 0000000000..a79605915c --- /dev/null +++ b/scripts/node-test-setup.mjs @@ -0,0 +1,27 @@ +"use strict"; + +import path from "node:path"; +import { snapshot } from "node:test"; +import { format } from "pretty-format"; +import webpack from "webpack"; + +process.env.CHOKIDAR_USEPOLLING = "true"; + +snapshot.setDefaultSnapshotSerializers([ + (value) => + format(value, { + escapeString: false, + printBasicPrototype: false, + }), +]); + +const [webpackVersion] = webpack.version; +const snapshotExtension = `.snap.webpack${webpackVersion}`; + +snapshot.setResolveSnapshotPath((testPath) => + path.join( + path.dirname(testPath), + "__snapshots__", + `${path.basename(testPath)}${snapshotExtension}`, + ), +); diff --git a/test/server/__snapshots__/proxy-option.test.js.snap.webpack5 b/test/server/__snapshots__/proxy-option.test.js.snap.webpack5 index afcadddb77..144a568902 100644 --- a/test/server/__snapshots__/proxy-option.test.js.snap.webpack5 +++ b/test/server/__snapshots__/proxy-option.test.js.snap.webpack5 @@ -1,10 +1,12 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`proxy option should work and respect \`logger\` option target respects a proxy option when a request path is matched 1`] = `"[HPM] Error occurred while proxying request %s to %s [%s] (%s)"`; +exports[`proxy option > should work and respect \`logger\` option > target > respects a proxy option when a request path is matched 1`] = ` +"[HPM] Error occurred while proxying request %s to %s [%s] (%s)" +`; -exports[`proxy option should work and respect the \`infrastructureLogging.level\` option target respects a proxy option when a request path is matched 1`] = ` +exports[`proxy option > should work and respect the \`infrastructureLogging.level\` option > target > respects a proxy option when a request path is matched 1`] = ` " [webpack-dev-server] [HPM] Error occurred while proxying request 127.0.0.1:/my-path to http://unknown:1234/ [] (https://nodejs.org/api/errors.html#errors_common_system_errors) " `; -exports[`proxy option should work and respect the \`infrastructureLogging.level\` option with \`none\` value target respects a proxy option when a request path is matched 1`] = `""`; +exports[`proxy option > should work and respect the \`infrastructureLogging.level\` option with \`none\` value > target > respects a proxy option when a request path is matched 1`] = ` +"" +`; diff --git a/test/server/open-option.test.js b/test/server/open-option.test.js index ddd100186c..7a973b70b6 100644 --- a/test/server/open-option.test.js +++ b/test/server/open-option.test.js @@ -1,5 +1,8 @@ "use strict"; +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { expect } = require("expect"); +const { fn, spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/simple-config/webpack.config"); @@ -10,23 +13,24 @@ const internalIPv4 = Server.findIp("v4", false); describe('"open" option', () => { let compiler; let open; + let openMock; beforeEach(async () => { compiler = webpack(config); - jest.unstable_mockModule("open", () => ({ - default: jest.fn(() => Promise.resolve()), - })); + openMock = mock.module("open", { + defaultExport: fn(() => Promise.resolve()), + }); open = (await import("open")).default; }); afterEach(async () => { open.mockClear(); + openMock.restore(); }); - // eslint-disable-next-line jest/no-focused-tests - it.only("should work with unspecified host", async () => { + it("should work with unspecified host", async () => { const server = new Server( { open: true, @@ -701,14 +705,15 @@ describe('"open" option', () => { it("should log warning when can't open", async () => { open.mockRejectedValue(undefined); - const loggerWarnSpy = jest.fn(); - const getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + const loggerWarnSpy = fn(); + const getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); const server = new Server( { @@ -735,14 +740,15 @@ describe('"open" option', () => { it("should log warning when can't open with string", async () => { open.mockRejectedValue(undefined); - const loggerWarnSpy = jest.fn(); - const getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + const loggerWarnSpy = fn(); + const getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); const server = new Server( { @@ -769,14 +775,15 @@ describe('"open" option', () => { it("should log warning when can't open with object", async () => { open.mockRejectedValue(undefined); - const loggerWarnSpy = jest.fn(); - const getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + const loggerWarnSpy = fn(); + const getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); const server = new Server( { @@ -807,14 +814,15 @@ describe('"open" option', () => { it("should log warning when can't open with object with the 'app' option with arguments", async () => { open.mockRejectedValue(undefined); - const loggerWarnSpy = jest.fn(); - const getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + const loggerWarnSpy = fn(); + const getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); const server = new Server( { @@ -851,14 +859,15 @@ describe('"open" option', () => { it("should log warning when can't open with object with the 'app' option with arguments #2", async () => { open.mockRejectedValue(undefined); - const loggerWarnSpy = jest.fn(); - const getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + const loggerWarnSpy = fn(); + const getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); const server = new Server( { diff --git a/test/server/proxy-option.test.js b/test/server/proxy-option.test.js index 76865bc1e9..81cb0bd49c 100644 --- a/test/server/proxy-option.test.js +++ b/test/server/proxy-option.test.js @@ -1,7 +1,10 @@ "use strict"; const path = require("node:path"); +const { after, before, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const express = require("express"); +const { spyOn } = require("jest-mock"); const request = require("supertest"); const webpack = require("webpack"); const WebSocket = require("ws"); @@ -154,7 +157,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -176,7 +179,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -253,7 +256,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -271,7 +274,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -288,7 +291,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -306,7 +309,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -323,7 +326,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -341,7 +344,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -358,7 +361,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -376,7 +379,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -393,7 +396,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -411,7 +414,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -439,7 +442,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -457,7 +460,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -475,7 +478,7 @@ describe("proxy option", () => { let req; let listener; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -508,7 +511,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await new Promise((resolve) => { listener.close(() => { @@ -543,7 +546,7 @@ describe("proxy option", () => { for (const webSocketServerType of webSocketServerTypes) { // eslint-disable-next-line no-loop-func describe(`with webSocketServerType: ${webSocketServerType}`, () => { - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -571,20 +574,23 @@ describe("proxy option", () => { }); }); - beforeEach((done) => { - ws = new WebSocket(`ws://localhost:${port3}/proxy3/socket`); + beforeEach( + () => + new Promise((resolve) => { + ws = new WebSocket(`ws://localhost:${port3}/proxy3/socket`); - ws.on("message", (message) => { - responseMessage = message.toString(); - done(); - }); + ws.on("message", (message) => { + responseMessage = message.toString(); + resolve(); + }); - ws.on("open", () => { - ws.send("foo"); - }); - }); + ws.on("open", () => { + ws.send("foo"); + }); + }), + ); - afterAll(async () => { + after(async () => { webSocketServer.close(); for (const client of webSocketServer.clients) { @@ -606,7 +612,7 @@ describe("proxy option", () => { let req; let listener; - beforeAll(async () => { + before(async () => { const compiler = webpack(config); server = new Server( @@ -673,7 +679,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await new Promise((resolve) => { @@ -737,7 +743,7 @@ describe("proxy option", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack([config, config]); server = new Server( @@ -760,7 +766,7 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); await closeProxyServers(); }); @@ -778,8 +784,8 @@ describe("proxy option", () => { let req; let consoleSpy; - beforeAll(async () => { - consoleSpy = jest.spyOn(console, "error").mockImplementation(() => {}); + before(async () => { + consoleSpy = spyOn(console, "error").mockImplementation(() => {}); const compiler = webpack([config, config]); @@ -804,17 +810,17 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { consoleSpy.mockRestore(); await server.stop(); await closeProxyServers(); }); describe("target", () => { - it("respects a proxy option when a request path is matched", async () => { + it("respects a proxy option when a request path is matched", async (t) => { await req.get("/my-path"); - expect(getConsoleErrorOutput(consoleSpy)).toMatchSnapshot(); + t.assert.snapshot(getConsoleErrorOutput(consoleSpy)); }); }); }); @@ -824,10 +830,8 @@ describe("proxy option", () => { let req; let stderrSpy; - beforeAll(async () => { - stderrSpy = jest - .spyOn(process.stderr, "write") - .mockImplementation(() => true); + before(async () => { + stderrSpy = spyOn(process.stderr, "write").mockImplementation(() => true); const compiler = webpack({ ...config, @@ -854,17 +858,17 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { stderrSpy.mockRestore(); await server.stop(); await closeProxyServers(); }); describe("target", () => { - it("respects a proxy option when a request path is matched", async () => { + it("respects a proxy option when a request path is matched", async (t) => { await req.get("/my-path"); - expect(getStderrOutput(stderrSpy)).toMatchSnapshot(); + t.assert.snapshot(getStderrOutput(stderrSpy)); }); }); }); @@ -874,10 +878,8 @@ describe("proxy option", () => { let req; let stderrSpy; - beforeAll(async () => { - stderrSpy = jest - .spyOn(process.stderr, "write") - .mockImplementation(() => true); + before(async () => { + stderrSpy = spyOn(process.stderr, "write").mockImplementation(() => true); const compiler = webpack({ ...config, @@ -902,16 +904,16 @@ describe("proxy option", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { stderrSpy.mockRestore(); await server.stop(); }); describe("target", () => { - it("respects a proxy option when a request path is matched", async () => { + it("respects a proxy option when a request path is matched", async (t) => { await req.get("/my-path"); - expect(getStderrOutput(stderrSpy)).toMatchSnapshot(); + t.assert.snapshot(getStderrOutput(stderrSpy)); }); }); }); From 3286583f0b87899c1fe29ef6791fc3b206f2769b Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 18:13:53 -0500 Subject: [PATCH 02/22] refactor(tests): update snapshot test descriptions and improve test structure - Changed snapshot test descriptions to include a more structured format. - Updated snapshot assertions to use `t.assert.snapshot` for consistency. - Refactored test setup and teardown methods to use `before` and `after` from `node:test`. - Adjusted the test cases in `normalize-options.test.js` and `validate-options.test.js` for improved clarity and maintainability. --- scripts/node-test-setup.mjs | 9 +- .../normalize-options.test.js.snap.webpack5 | 102 ++++++----- .../validate-options.test.js.snap.webpack5 | 160 +++++++++--------- test/normalize-options.test.js | 6 +- test/validate-options.test.js | 13 +- 5 files changed, 148 insertions(+), 142 deletions(-) diff --git a/scripts/node-test-setup.mjs b/scripts/node-test-setup.mjs index a79605915c..aca0854122 100644 --- a/scripts/node-test-setup.mjs +++ b/scripts/node-test-setup.mjs @@ -1,5 +1,3 @@ -"use strict"; - import path from "node:path"; import { snapshot } from "node:test"; import { format } from "pretty-format"; @@ -7,11 +5,18 @@ import webpack from "webpack"; process.env.CHOKIDAR_USEPOLLING = "true"; +// Match Jest's snapshot serialization defaults so existing snapshots stay +// byte-for-byte compatible: +// - jest-snapshot.serialize() hardcodes: escapeRegex: true, printFunctionName: false +// - jest-config defaults snapshotFormat to: { escapeString: false, printBasicPrototype: false } snapshot.setDefaultSnapshotSerializers([ (value) => format(value, { + escapeRegex: true, escapeString: false, + indent: 2, printBasicPrototype: false, + printFunctionName: false, }), ]); diff --git a/test/__snapshots__/normalize-options.test.js.snap.webpack5 b/test/__snapshots__/normalize-options.test.js.snap.webpack5 index 52099cfd75..4d965b0a59 100644 --- a/test/__snapshots__/normalize-options.test.js.snap.webpack5 +++ b/test/__snapshots__/normalize-options.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`normalize options allowedHosts is array 1`] = ` +exports[`normalize options > allowedHosts is array 1`] = ` { "allowedHosts": "all", "bonjour": false, @@ -54,7 +52,7 @@ exports[`normalize options allowedHosts is array 1`] = ` } `; -exports[`normalize options allowedHosts is string 1`] = ` +exports[`normalize options > allowedHosts is string 1`] = ` { "allowedHosts": "all", "bonjour": false, @@ -108,7 +106,7 @@ exports[`normalize options allowedHosts is string 1`] = ` } `; -exports[`normalize options client custom webSocketTransport path 1`] = ` +exports[`normalize options > client custom webSocketTransport path 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -163,7 +161,7 @@ exports[`normalize options client custom webSocketTransport path 1`] = ` } `; -exports[`normalize options client host and port 1`] = ` +exports[`normalize options > client host and port 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -220,7 +218,7 @@ exports[`normalize options client host and port 1`] = ` } `; -exports[`normalize options client host and string port 1`] = ` +exports[`normalize options > client host and string port 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -277,7 +275,7 @@ exports[`normalize options client host and string port 1`] = ` } `; -exports[`normalize options client path 1`] = ` +exports[`normalize options > client path 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -333,7 +331,7 @@ exports[`normalize options client path 1`] = ` } `; -exports[`normalize options client path without leading/ending slashes 1`] = ` +exports[`normalize options > client path without leading/ending slashes 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -389,7 +387,7 @@ exports[`normalize options client path without leading/ending slashes 1`] = ` } `; -exports[`normalize options client.webSocketTransport ws string 1`] = ` +exports[`normalize options > client.webSocketTransport ws string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -444,7 +442,7 @@ exports[`normalize options client.webSocketTransport ws string 1`] = ` } `; -exports[`normalize options client.webSocketTransport ws string and webSocketServer object 1`] = ` +exports[`normalize options > client.webSocketTransport ws string and webSocketServer object 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -501,7 +499,7 @@ exports[`normalize options client.webSocketTransport ws string and webSocketServ } `; -exports[`normalize options client.webSocketTransport ws string and webSocketServer object with port as string 1`] = ` +exports[`normalize options > client.webSocketTransport ws string and webSocketServer object with port as string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -558,7 +556,7 @@ exports[`normalize options client.webSocketTransport ws string and webSocketServ } `; -exports[`normalize options client.webSocketTransport ws string and webSocketServer ws string 1`] = ` +exports[`normalize options > client.webSocketTransport ws string and webSocketServer ws string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -613,7 +611,7 @@ exports[`normalize options client.webSocketTransport ws string and webSocketServ } `; -exports[`normalize options dev is set 1`] = ` +exports[`normalize options > dev is set 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -669,7 +667,7 @@ exports[`normalize options dev is set 1`] = ` } `; -exports[`normalize options hot is false 1`] = ` +exports[`normalize options > hot is false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -723,7 +721,7 @@ exports[`normalize options hot is false 1`] = ` } `; -exports[`normalize options hot is only 1`] = ` +exports[`normalize options > hot is only 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -777,7 +775,7 @@ exports[`normalize options hot is only 1`] = ` } `; -exports[`normalize options hot is true 1`] = ` +exports[`normalize options > hot is true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -831,7 +829,7 @@ exports[`normalize options hot is true 1`] = ` } `; -exports[`normalize options liveReload is false 1`] = ` +exports[`normalize options > liveReload is false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -885,7 +883,7 @@ exports[`normalize options liveReload is false 1`] = ` } `; -exports[`normalize options liveReload is true 1`] = ` +exports[`normalize options > liveReload is true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -939,7 +937,7 @@ exports[`normalize options liveReload is true 1`] = ` } `; -exports[`normalize options multi compiler client.logging should override infrastructureLogging.level 1`] = ` +exports[`normalize options > multi compiler client.logging should override infrastructureLogging.level 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -993,7 +991,7 @@ exports[`normalize options multi compiler client.logging should override infrast } `; -exports[`normalize options multi compiler client.logging should respect infrastructureLogging.level 1`] = ` +exports[`normalize options > multi compiler client.logging should respect infrastructureLogging.level 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1047,7 +1045,7 @@ exports[`normalize options multi compiler client.logging should respect infrastr } `; -exports[`normalize options multi compiler client.logging should respect infrastructureLogging.level 2`] = ` +exports[`normalize options > multi compiler client.logging should respect infrastructureLogging.level 2`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1101,7 +1099,7 @@ exports[`normalize options multi compiler client.logging should respect infrastr } `; -exports[`normalize options multi compiler client.logging should respect infrastructureLogging.level 3`] = ` +exports[`normalize options > multi compiler client.logging should respect infrastructureLogging.level 3`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1155,7 +1153,7 @@ exports[`normalize options multi compiler client.logging should respect infrastr } `; -exports[`normalize options multi compiler watchOptions is set 1`] = ` +exports[`normalize options > multi compiler watchOptions is set 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1209,7 +1207,7 @@ exports[`normalize options multi compiler watchOptions is set 1`] = ` } `; -exports[`normalize options no options 1`] = ` +exports[`normalize options > no options 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1263,7 +1261,7 @@ exports[`normalize options no options 1`] = ` } `; -exports[`normalize options port string 1`] = ` +exports[`normalize options > port string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1317,7 +1315,7 @@ exports[`normalize options port string 1`] = ` } `; -exports[`normalize options single compiler client.logging should default to infrastructureLogging.level 1`] = ` +exports[`normalize options > single compiler client.logging should default to infrastructureLogging.level 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1371,7 +1369,7 @@ exports[`normalize options single compiler client.logging should default to infr } `; -exports[`normalize options single compiler client.logging should override to infrastructureLogging.level 1`] = ` +exports[`normalize options > single compiler client.logging should override to infrastructureLogging.level 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1425,7 +1423,7 @@ exports[`normalize options single compiler client.logging should override to inf } `; -exports[`normalize options single compiler watchOptions is object 1`] = ` +exports[`normalize options > single compiler watchOptions is object 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1479,7 +1477,7 @@ exports[`normalize options single compiler watchOptions is object 1`] = ` } `; -exports[`normalize options single compiler watchOptions is object with static watch overriding it 1`] = ` +exports[`normalize options > single compiler watchOptions is object with static watch overriding it 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1534,7 +1532,7 @@ exports[`normalize options single compiler watchOptions is object with static wa } `; -exports[`normalize options single compiler watchOptions is object with static watch true 1`] = ` +exports[`normalize options > single compiler watchOptions is object with static watch true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1588,7 +1586,7 @@ exports[`normalize options single compiler watchOptions is object with static wa } `; -exports[`normalize options single compiler watchOptions is object with watch false 1`] = ` +exports[`normalize options > single compiler watchOptions is object with watch false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1642,7 +1640,7 @@ exports[`normalize options single compiler watchOptions is object with watch fal } `; -exports[`normalize options static is an array of static objects 1`] = ` +exports[`normalize options > static is an array of static objects 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1715,7 +1713,7 @@ exports[`normalize options static is an array of static objects 1`] = ` } `; -exports[`normalize options static is an array of strings 1`] = ` +exports[`normalize options > static is an array of strings 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1788,7 +1786,7 @@ exports[`normalize options static is an array of strings 1`] = ` } `; -exports[`normalize options static is an array of strings and static objects 1`] = ` +exports[`normalize options > static is an array of strings and static objects 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1861,7 +1859,7 @@ exports[`normalize options static is an array of strings and static objects 1`] } `; -exports[`normalize options static is an object 1`] = ` +exports[`normalize options > static is an object 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1915,7 +1913,7 @@ exports[`normalize options static is an object 1`] = ` } `; -exports[`normalize options static is an object with staticOptions 1`] = ` +exports[`normalize options > static is an object with staticOptions 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -1972,7 +1970,7 @@ exports[`normalize options static is an object with staticOptions 1`] = ` } `; -exports[`normalize options static is false 1`] = ` +exports[`normalize options > static is false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2006,7 +2004,7 @@ exports[`normalize options static is false 1`] = ` } `; -exports[`normalize options static is string 1`] = ` +exports[`normalize options > static is string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2060,7 +2058,7 @@ exports[`normalize options static is string 1`] = ` } `; -exports[`normalize options static is true 1`] = ` +exports[`normalize options > static is true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2114,7 +2112,7 @@ exports[`normalize options static is true 1`] = ` } `; -exports[`normalize options static publicPath is a string 1`] = ` +exports[`normalize options > static publicPath is a string 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2168,7 +2166,7 @@ exports[`normalize options static publicPath is a string 1`] = ` } `; -exports[`normalize options static publicPath is an array 1`] = ` +exports[`normalize options > static publicPath is an array 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2223,7 +2221,7 @@ exports[`normalize options static publicPath is an array 1`] = ` } `; -exports[`normalize options static serveIndex is an object more options 1`] = ` +exports[`normalize options > static serveIndex is an object more options 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2280,7 +2278,7 @@ exports[`normalize options static serveIndex is an object more options 1`] = ` } `; -exports[`normalize options static serveIndex is an object with icons false 1`] = ` +exports[`normalize options > static serveIndex is an object with icons false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2334,7 +2332,7 @@ exports[`normalize options static serveIndex is an object with icons false 1`] = } `; -exports[`normalize options static serveIndex is false 1`] = ` +exports[`normalize options > static serveIndex is false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2386,7 +2384,7 @@ exports[`normalize options static serveIndex is false 1`] = ` } `; -exports[`normalize options static serveIndex is true 1`] = ` +exports[`normalize options > static serveIndex is true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2440,7 +2438,7 @@ exports[`normalize options static serveIndex is true 1`] = ` } `; -exports[`normalize options static watch is an object 1`] = ` +exports[`normalize options > static watch is an object 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2495,7 +2493,7 @@ exports[`normalize options static watch is an object 1`] = ` } `; -exports[`normalize options static watch is false 1`] = ` +exports[`normalize options > static watch is false 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2541,7 +2539,7 @@ exports[`normalize options static watch is false 1`] = ` } `; -exports[`normalize options static watch is true 1`] = ` +exports[`normalize options > static watch is true 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2595,7 +2593,7 @@ exports[`normalize options static watch is true 1`] = ` } `; -exports[`normalize options username and password 1`] = ` +exports[`normalize options > username and password 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2652,7 +2650,7 @@ exports[`normalize options username and password 1`] = ` } `; -exports[`normalize options webSocketServer custom server class 1`] = ` +exports[`normalize options > webSocketServer custom server class 1`] = ` { "allowedHosts": "auto", "bonjour": false, @@ -2706,7 +2704,7 @@ exports[`normalize options webSocketServer custom server class 1`] = ` } `; -exports[`normalize options webSocketServer custom server path 1`] = ` +exports[`normalize options > webSocketServer custom server path 1`] = ` { "allowedHosts": "auto", "bonjour": false, diff --git a/test/__snapshots__/validate-options.test.js.snap.webpack5 b/test/__snapshots__/validate-options.test.js.snap.webpack5 index f00fa55646..ec0a5112f4 100644 --- a/test/__snapshots__/validate-options.test.js.snap.webpack5 +++ b/test/__snapshots__/validate-options.test.js.snap.webpack5 @@ -1,16 +1,14 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`options validate should throw an error on the "allowedHosts" option with '[""]' value 1`] = ` +exports[`options > validate > should throw an error on the "allowedHosts" option with '[""]' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts[0] should be a non-empty string." `; -exports[`options validate should throw an error on the "allowedHosts" option with '[]' value 1`] = ` +exports[`options > validate > should throw an error on the "allowedHosts" option with '[]' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be a non-empty array." `; -exports[`options validate should throw an error on the "allowedHosts" option with '123' value 1`] = ` +exports[`options > validate > should throw an error on the "allowedHosts" option with '123' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be one of these: [non-empty string, ...] (should not have fewer than 1 item) | "auto" | "all" | non-empty string @@ -24,7 +22,7 @@ exports[`options validate should throw an error on the "allowedHosts" option wit * options.allowedHosts should be a non-empty string." `; -exports[`options validate should throw an error on the "allowedHosts" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "allowedHosts" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be one of these: [non-empty string, ...] (should not have fewer than 1 item) | "auto" | "all" | non-empty string @@ -38,7 +36,7 @@ exports[`options validate should throw an error on the "allowedHosts" option wit * options.allowedHosts should be a non-empty string." `; -exports[`options validate should throw an error on the "allowedHosts" option with 'true' value 1`] = ` +exports[`options > validate > should throw an error on the "allowedHosts" option with 'true' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be one of these: [non-empty string, ...] (should not have fewer than 1 item) | "auto" | "all" | non-empty string @@ -52,21 +50,21 @@ exports[`options validate should throw an error on the "allowedHosts" option wit * options.allowedHosts should be a non-empty string." `; -exports[`options validate should throw an error on the "app" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "app" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.app should be an instance of function. -> Allows to use custom applications, such as 'connect', 'fastify', etc. -> Read more at https://webpack.js.org/configuration/dev-server/#devserverapp" `; -exports[`options validate should throw an error on the "app" option with 'test' value 1`] = ` +exports[`options > validate > should throw an error on the "app" option with 'test' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.app should be an instance of function. -> Allows to use custom applications, such as 'connect', 'fastify', etc. -> Read more at https://webpack.js.org/configuration/dev-server/#devserverapp" `; -exports[`options validate should throw an error on the "bonjour" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "bonjour" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.bonjour should be one of these: boolean | object { … } @@ -80,7 +78,7 @@ exports[`options validate should throw an error on the "bonjour" option with '' -> Read more at https://github.com/watson/bonjour#initializing" `; -exports[`options validate should throw an error on the "client" option with '{"logging":"silent"}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"logging":"silent"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.logging should be one of these: "none" | "error" | "warn" | "info" | "log" | "verbose" @@ -88,7 +86,7 @@ exports[`options validate should throw an error on the "client" option with '{"l -> Read more at https://webpack.js.org/configuration/dev-server/#logging" `; -exports[`options validate should throw an error on the "client" option with '{"logging":"whoops!"}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"logging":"whoops!"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.logging should be one of these: "none" | "error" | "warn" | "info" | "log" | "verbose" @@ -96,7 +94,7 @@ exports[`options validate should throw an error on the "client" option with '{"l -> Read more at https://webpack.js.org/configuration/dev-server/#logging" `; -exports[`options validate should throw an error on the "client" option with '{"overlay":""}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"overlay":""}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -113,13 +111,13 @@ exports[`options validate should throw an error on the "client" option with '{"o object { errors?, warnings?, runtimeErrors?, trustedTypesPolicyName? }" `; -exports[`options validate should throw an error on the "client" option with '{"overlay":{"arbitrary":""}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"overlay":{"arbitrary":""}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.overlay has an unknown property 'arbitrary'. These properties are valid: object { errors?, warnings?, runtimeErrors?, trustedTypesPolicyName? }" `; -exports[`options validate should throw an error on the "client" option with '{"overlay":{"errors":""}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"overlay":{"errors":""}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -135,7 +133,7 @@ exports[`options validate should throw an error on the "client" option with '{"o -> Filter compiler errors. Return true to include and return false to exclude." `; -exports[`options validate should throw an error on the "client" option with '{"overlay":{"warnings":""}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"overlay":{"warnings":""}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -151,7 +149,7 @@ exports[`options validate should throw an error on the "client" option with '{"o -> Filter compiler warnings. Return true to include and return false to exclude." `; -exports[`options validate should throw an error on the "client" option with '{"progress":""}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"progress":""}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.progress should be one of these: true | false | "linear" | "circular" @@ -159,7 +157,7 @@ exports[`options validate should throw an error on the "client" option with '{"p -> Read more at https://webpack.js.org/configuration/dev-server/#progress" `; -exports[`options validate should throw an error on the "client" option with '{"reconnect":""}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"reconnect":""}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -175,13 +173,13 @@ exports[`options validate should throw an error on the "client" option with '{"r * options.client.reconnect should be a number (should be >= 0)." `; -exports[`options validate should throw an error on the "client" option with '{"unknownOption":true}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"unknownOption":true}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client has an unknown property 'unknownOption'. These properties are valid: object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? }" `; -exports[`options validate should throw an error on the "client" option with '{"webSocketTransport":true}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketTransport":true}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -197,30 +195,30 @@ exports[`options validate should throw an error on the "client" option with '{"w * options.client.webSocketTransport should be a non-empty string." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"hostname":""}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"hostname":""}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.webSocketURL.hostname should be a non-empty string. -> Tells clients connected to devServer to use the provided hostname." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"hostname":true,"pathname":"","port":8080}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"hostname":true,"pathname":"","port":8080}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.webSocketURL.hostname should be a non-empty string. -> Tells clients connected to devServer to use the provided hostname." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"pathname":true}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"pathname":true}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.webSocketURL.pathname should be a string. -> Tells clients connected to devServer to use the provided path to connect." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"port":""}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"port":""}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.webSocketURL.port should be a non-empty string." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"port":true}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"port":true}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -235,7 +233,7 @@ exports[`options validate should throw an error on the "client" option with '{"w * options.client.webSocketURL.port should be a non-empty string." `; -exports[`options validate should throw an error on the "client" option with '{"webSocketURL":{"username":123,"password":976}}' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with '{"webSocketURL":{"username":123,"password":976}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -248,7 +246,7 @@ exports[`options validate should throw an error on the "client" option with '{"w -> Tells clients connected to devServer to use the provided username to authenticate." `; -exports[`options validate should throw an error on the "client" option with 'whoops!' value 1`] = ` +exports[`options > validate > should throw an error on the "client" option with 'whoops!' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client should be one of these: false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } @@ -260,14 +258,14 @@ exports[`options validate should throw an error on the "client" option with 'who object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? }" `; -exports[`options validate should throw an error on the "compress" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "compress" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.compress should be a boolean. -> Enables gzip compression for everything served. -> Read more at https://webpack.js.org/configuration/dev-server/#devservercompress" `; -exports[`options validate should throw an error on the "devMiddleware" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "devMiddleware" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.devMiddleware should be an object: object { … } @@ -275,18 +273,18 @@ exports[`options validate should throw an error on the "devMiddleware" option wi -> Read more at https://webpack.js.org/configuration/dev-server/#devserverdevmiddleware" `; -exports[`options validate should throw an error on the "headers" option with '[]' value 1`] = ` +exports[`options > validate > should throw an error on the "headers" option with '[]' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers should be a non-empty array." `; -exports[`options validate should throw an error on the "headers" option with '[{"foo":"bar"}]' value 1`] = ` +exports[`options > validate > should throw an error on the "headers" option with '[{"foo":"bar"}]' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers[0] has an unknown property 'foo'. These properties are valid: object { key?, value? }" `; -exports[`options validate should throw an error on the "headers" option with '1' value 1`] = ` +exports[`options > validate > should throw an error on the "headers" option with '1' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers should be one of these: [object { key?, value? }, ...] (should not have fewer than 1 item) | object { … } | function @@ -300,7 +298,7 @@ exports[`options validate should throw an error on the "headers" option with '1' * options.headers should be an instance of function." `; -exports[`options validate should throw an error on the "headers" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "headers" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers should be one of these: [object { key?, value? }, ...] (should not have fewer than 1 item) | object { … } | function @@ -314,7 +312,7 @@ exports[`options validate should throw an error on the "headers" option with 'fa * options.headers should be an instance of function." `; -exports[`options validate should throw an error on the "historyApiFallback" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "historyApiFallback" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.historyApiFallback should be one of these: boolean | object { … } @@ -328,12 +326,12 @@ exports[`options validate should throw an error on the "historyApiFallback" opti -> Read more at https://github.com/bripkens/connect-history-api-fallback#options" `; -exports[`options validate should throw an error on the "host" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "host" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.host should be a non-empty string." `; -exports[`options validate should throw an error on the "host" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "host" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.host should be one of these: "local-ip" | "local-ipv4" | "local-ipv6" | non-empty string @@ -345,7 +343,7 @@ exports[`options validate should throw an error on the "host" option with 'false * options.host should be a non-empty string." `; -exports[`options validate should throw an error on the "host" option with 'null' value 1`] = ` +exports[`options > validate > should throw an error on the "host" option with 'null' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.host should be one of these: "local-ip" | "local-ipv4" | "local-ipv6" | non-empty string @@ -357,7 +355,7 @@ exports[`options validate should throw an error on the "host" option with 'null' * options.host should be a non-empty string." `; -exports[`options validate should throw an error on the "hot" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "hot" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.hot should be one of these: boolean | "only" @@ -368,7 +366,7 @@ exports[`options validate should throw an error on the "hot" option with '' valu * options.hot should be "only"." `; -exports[`options validate should throw an error on the "hot" option with 'foo' value 1`] = ` +exports[`options > validate > should throw an error on the "hot" option with 'foo' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.hot should be one of these: boolean | "only" @@ -379,7 +377,7 @@ exports[`options validate should throw an error on the "hot" option with 'foo' v * options.hot should be "only"." `; -exports[`options validate should throw an error on the "ipc" option with '{}' value 1`] = ` +exports[`options > validate > should throw an error on the "ipc" option with '{}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.ipc should be one of these: non-empty string | true @@ -391,7 +389,7 @@ exports[`options validate should throw an error on the "ipc" option with '{}' va * options.ipc should be true." `; -exports[`options validate should throw an error on the "ipc" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "ipc" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.ipc should be one of these: non-empty string | true @@ -402,26 +400,26 @@ exports[`options validate should throw an error on the "ipc" option with 'false' * options.ipc should be true." `; -exports[`options validate should throw an error on the "liveReload" option with 'invalid' value 1`] = ` +exports[`options > validate > should throw an error on the "liveReload" option with 'invalid' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.liveReload should be a boolean. -> Enables reload/refresh the page(s) when file changes are detected (enabled by default). -> Read more at https://webpack.js.org/configuration/dev-server/#devserverlivereload" `; -exports[`options validate should throw an error on the "onListening" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "onListening" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.onListening should be an instance of function. -> Provides the ability to execute a custom function when dev server starts listening. -> Read more at https://webpack.js.org/configuration/dev-server/#devserveronlistening" `; -exports[`options validate should throw an error on the "open" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "open" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.open should be a non-empty string." `; -exports[`options validate should throw an error on the "open" option with '{"app":true}' value 1`] = ` +exports[`options > validate > should throw an error on the "open" option with '{"app":true}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.open should be one of these: [non-empty string | object { target?, app? }, ...] | boolean | non-empty string | object { target?, app? } @@ -438,13 +436,13 @@ exports[`options validate should throw an error on the "open" option with '{"app -> Open specified browser." `; -exports[`options validate should throw an error on the "open" option with '{"foo":"bar"}' value 1`] = ` +exports[`options > validate > should throw an error on the "open" option with '{"foo":"bar"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.open has an unknown property 'foo'. These properties are valid: object { target?, app? }" `; -exports[`options validate should throw an error on the "open" option with '{"target":90}' value 1`] = ` +exports[`options > validate > should throw an error on the "open" option with '{"target":90}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.open should be one of these: [non-empty string | object { target?, app? }, ...] | boolean | non-empty string | object { target?, app? } @@ -460,22 +458,22 @@ exports[`options validate should throw an error on the "open" option with '{"tar * options.open.target should be a string." `; -exports[`options validate should throw an error on the "port" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "port" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.port should be a non-empty string." `; -exports[`options validate should throw an error on the "port" option with '-1' value 1`] = ` +exports[`options > validate > should throw an error on the "port" option with '-1' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.port should be >= 0 and <= 65535." `; -exports[`options validate should throw an error on the "port" option with '65536' value 1`] = ` +exports[`options > validate > should throw an error on the "port" option with '65536' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.port should be >= 0 and <= 65535." `; -exports[`options validate should throw an error on the "port" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "port" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.port should be one of these: number (should be >= 0 and <= 65535) | non-empty string | "auto" @@ -487,7 +485,7 @@ exports[`options validate should throw an error on the "port" option with 'false * options.port should be "auto"." `; -exports[`options validate should throw an error on the "port" option with 'null' value 1`] = ` +exports[`options > validate > should throw an error on the "port" option with 'null' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.port should be one of these: number (should be >= 0 and <= 65535) | non-empty string | "auto" @@ -499,7 +497,7 @@ exports[`options validate should throw an error on the "port" option with 'null' * options.port should be "auto"." `; -exports[`options validate should throw an error on the "proxy" option with '() => {}' value 1`] = ` +exports[`options > validate > should throw an error on the "proxy" option with '() => {}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.proxy should be an array: [object { … } | function, ...] @@ -507,7 +505,7 @@ exports[`options validate should throw an error on the "proxy" option with '() = -> Read more at https://webpack.js.org/configuration/dev-server/#devserverproxy" `; -exports[`options validate should throw an error on the "proxy" option with '{"/api":"http://localhost:3000"}' value 1`] = ` +exports[`options > validate > should throw an error on the "proxy" option with '{"/api":"http://localhost:3000"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.proxy should be an array: [object { … } | function, ...] @@ -515,7 +513,7 @@ exports[`options validate should throw an error on the "proxy" option with '{"/a -> Read more at https://webpack.js.org/configuration/dev-server/#devserverproxy" `; -exports[`options validate should throw an error on the "proxy" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "proxy" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.proxy should be an array: [object { … } | function, ...] @@ -523,13 +521,13 @@ exports[`options validate should throw an error on the "proxy" option with 'fals -> Read more at https://webpack.js.org/configuration/dev-server/#devserverproxy" `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","additional":"test"}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","additional":"test"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server has an unknown property 'additional'. These properties are valid: object { type?, options? }" `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"ca":true}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"ca":true}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server should be one of these: "http" | "https" | "http2" | function | non-empty string | object { type?, options? } @@ -546,7 +544,7 @@ exports[`options validate should throw an error on the "server" option with '{"t * options.server.options.ca should be an instance of Buffer." `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"cert":true}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"cert":true}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server should be one of these: "http" | "https" | "http2" | function | non-empty string | object { type?, options? } @@ -563,7 +561,7 @@ exports[`options validate should throw an error on the "server" option with '{"t * options.server.options.cert should be an instance of Buffer." `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"key":10}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"key":10}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server should be one of these: "http" | "https" | "http2" | function | non-empty string | object { type?, options? } @@ -580,13 +578,13 @@ exports[`options validate should throw an error on the "server" option with '{"t * options.server.options.key should be an instance of Buffer." `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"passphrase":false}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"passphrase":false}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server.options.passphrase should be a string. -> Passphrase for a pfx file." `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"pfx":10}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"pfx":10}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server should be one of these: "http" | "https" | "http2" | function | non-empty string | object { type?, options? } @@ -603,46 +601,46 @@ exports[`options validate should throw an error on the "server" option with '{"t * options.server.options.pfx should be an instance of Buffer." `; -exports[`options validate should throw an error on the "server" option with '{"type":"https","options":{"requestCert":"false"}}' value 1`] = ` +exports[`options > validate > should throw an error on the "server" option with '{"type":"https","options":{"requestCert":"false"}}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.server.options.requestCert should be a boolean. -> Request for an SSL certificate." `; -exports[`options validate should throw an error on the "setupMiddlewares" option with '10' value 1`] = ` +exports[`options > validate > should throw an error on the "setupMiddlewares" option with '10' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.setupMiddlewares should be an instance of function. -> Provides the ability to execute a custom function and apply custom middleware(s). -> Read more at https://webpack.js.org/configuration/dev-server/#devserversetupmiddlewares" `; -exports[`options validate should throw an error on the "setupMiddlewares" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "setupMiddlewares" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.setupMiddlewares should be an instance of function. -> Provides the ability to execute a custom function and apply custom middleware(s). -> Read more at https://webpack.js.org/configuration/dev-server/#devserversetupmiddlewares" `; -exports[`options validate should throw an error on the "setupMiddlewares" option with 'true' value 1`] = ` +exports[`options > validate > should throw an error on the "setupMiddlewares" option with 'true' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.setupMiddlewares should be an instance of function. -> Provides the ability to execute a custom function and apply custom middleware(s). -> Read more at https://webpack.js.org/configuration/dev-server/#devserversetupmiddlewares" `; -exports[`options validate should throw an error on the "static" option with '' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be a non-empty string." `; -exports[`options validate should throw an error on the "static" option with '{"directory":false}' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '{"directory":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static.directory should be a non-empty string. -> Directory for static contents. -> Read more at https://webpack.js.org/configuration/dev-server/#directory" `; -exports[`options validate should throw an error on the "static" option with '{"publicPath":false}' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '{"publicPath":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be one of these: [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } @@ -659,7 +657,7 @@ exports[`options validate should throw an error on the "static" option with '{"p * options.static.publicPath should be a string." `; -exports[`options validate should throw an error on the "static" option with '{"serveIndex":"true"}' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '{"serveIndex":"true"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be one of these: [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } @@ -676,7 +674,7 @@ exports[`options validate should throw an error on the "static" option with '{"s object { … }" `; -exports[`options validate should throw an error on the "static" option with '{"watch":10}' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '{"watch":10}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be one of these: [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } @@ -695,7 +693,7 @@ exports[`options validate should throw an error on the "static" option with '{"w -> Read more at https://github.com/paulmillr/chokidar#api" `; -exports[`options validate should throw an error on the "static" option with '0' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with '0' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be one of these: [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } @@ -710,7 +708,7 @@ exports[`options validate should throw an error on the "static" option with '0' object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" `; -exports[`options validate should throw an error on the "static" option with 'null' value 1`] = ` +exports[`options > validate > should throw an error on the "static" option with 'null' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static should be one of these: [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } @@ -725,7 +723,7 @@ exports[`options validate should throw an error on the "static" option with 'nul object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" `; -exports[`options validate should throw an error on the "watchFiles" option with '{"options":false}' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with '{"options":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.watchFiles.options should be an object: object { … } @@ -733,7 +731,7 @@ exports[`options validate should throw an error on the "watchFiles" option with -> Read more at https://github.com/paulmillr/chokidar#api" `; -exports[`options validate should throw an error on the "watchFiles" option with '{"paths":false}' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with '{"paths":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.watchFiles should be one of these: [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } @@ -749,7 +747,7 @@ exports[`options validate should throw an error on the "watchFiles" option with * options.watchFiles.paths should be a non-empty string." `; -exports[`options validate should throw an error on the "watchFiles" option with '123' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with '123' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.watchFiles should be one of these: [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } @@ -763,7 +761,7 @@ exports[`options validate should throw an error on the "watchFiles" option with object { paths?, options? }" `; -exports[`options validate should throw an error on the "watchFiles" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.watchFiles should be one of these: [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } @@ -777,13 +775,13 @@ exports[`options validate should throw an error on the "watchFiles" option with object { paths?, options? }" `; -exports[`options validate should throw an error on the "webSocketServer" option with '{"notAnOption":true}' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with '{"notAnOption":true}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.webSocketServer has an unknown property 'notAnOption'. These properties are valid: object { type?, options? }" `; -exports[`options validate should throw an error on the "webSocketServer" option with '{"type":false}' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with '{"type":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.webSocketServer should be one of these: false | "ws" | non-empty string | function | object { type?, options? } @@ -798,7 +796,7 @@ exports[`options validate should throw an error on the "webSocketServer" option * options.webSocketServer.type should be an instance of function." `; -exports[`options validate should throw an error on the "webSocketServer" option with '{"type":true}' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with '{"type":true}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.webSocketServer should be one of these: false | "ws" | non-empty string | function | object { type?, options? } @@ -813,7 +811,7 @@ exports[`options validate should throw an error on the "webSocketServer" option * options.webSocketServer.type should be an instance of function." `; -exports[`options validate should throw an error on the "webSocketServer" option with 'null' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with 'null' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.webSocketServer should be one of these: false | "ws" | non-empty string | function | object { type?, options? } @@ -831,7 +829,7 @@ exports[`options validate should throw an error on the "webSocketServer" option object { type?, options? }" `; -exports[`options validate should throw an error on the "webSocketServer" option with 'true' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with 'true' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.webSocketServer should be one of these: false | "ws" | non-empty string | function | object { type?, options? } diff --git a/test/normalize-options.test.js b/test/normalize-options.test.js index b80d418ed0..604818d3f6 100644 --- a/test/normalize-options.test.js +++ b/test/normalize-options.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { klona } = require("klona/full"); const webpack = require("webpack"); const Server = require("../lib/Server"); @@ -571,7 +573,7 @@ describe("normalize options", () => { ]; for (const item of cases) { - it(item.title, async () => { + it(item.title, async (t) => { let webpackConfig; if (item.multiCompiler) { @@ -624,7 +626,7 @@ describe("normalize options", () => { } } - expect(optionsForSnapshot).toMatchSnapshot(); + t.assert.snapshot(optionsForSnapshot); } } finally { await server.stop(); diff --git a/test/validate-options.test.js b/test/validate-options.test.js index da416cee23..8936e3662e 100644 --- a/test/validate-options.test.js +++ b/test/validate-options.test.js @@ -2,7 +2,10 @@ const os = require("node:os"); const path = require("node:path"); +const { after, before, describe, it } = require("node:test"); +const { expect } = require("expect"); const { readFileSync } = require("graceful-fs"); +const { spyOn } = require("jest-mock"); const { Volume, createFsFromVolume } = require("memfs"); const webpack = require("webpack"); const Server = require("../lib/Server"); @@ -550,11 +553,11 @@ const tests = { describe("options", () => { let consoleMock; - beforeAll(() => { - consoleMock = jest.spyOn(console, "warn").mockImplementation(); + before(() => { + consoleMock = spyOn(console, "warn").mockImplementation(); }); - afterAll(() => { + after(() => { consoleMock.mockRestore(); }); @@ -594,7 +597,7 @@ describe("options", () => { type === "success" ? "successfully validate" : "throw an error on" } the "${key}" option with '${stringifyValue( value, - )}' value`, async () => { + )}' value`, async (t) => { const compiler = webpack(config); let thrownError; @@ -609,7 +612,7 @@ describe("options", () => { expect(thrownError).toBeUndefined(); } else { expect(thrownError).toBeDefined(); - expect(thrownError.toString()).toMatchSnapshot(); + t.assert.snapshot(thrownError.toString()); } }); } From 2e4ab1918511349a6c715e0579c154af3472fe5f Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 19:33:49 -0500 Subject: [PATCH 03/22] refactor(tests): update CLI option tests to use node:test and expect - Refactored multiple test files to utilize the `node:test` module for structuring tests. - Replaced direct assertions with `t.assert.snapshot` for snapshot testing. - Ensured consistency across tests by adding async context to test functions. - Updated imports to include necessary testing utilities from `node:test` and `expect`. --- .../__snapshots__/basic.test.js.snap.webpack5 | 12 +- .../bonjour-option.test.js.snap.webpack5 | 8 +- .../colors.test.js.snap.webpack5 | 12 +- ...ryApiFallback-option.test.js.snap.webpack5 | 6 +- .../host-option.test.js.snap.webpack5 | 18 +- .../ipc-option.test.js.snap.webpack5 | 6 +- .../port-option.test.js.snap.webpack5 | 6 +- .../server-option.test.js.snap.webpack5 | 16 +- .../static-option.test.js.snap.webpack5 | 26 +- .../watchFiles-option.test.js.snap.webpack5 | 8 +- test/cli/allowedHosts-option.test.js | 2 + test/cli/basic.test.js | 241 +++++++++--------- test/cli/bonjour-option.test.js | 16 +- test/cli/client-option.test.js | 2 + test/cli/colors.test.js | 32 ++- test/cli/compress-option.test.js | 2 + test/cli/historyApiFallback-option.test.js | 10 +- test/cli/host-option.test.js | 47 ++-- test/cli/hot-option.test.js | 2 + test/cli/ipc-option.test.js | 10 +- test/cli/liveReload-option.test.js | 2 + test/cli/open-option.test.js | 2 + test/cli/port-option.test.js | 14 +- test/cli/server-option.test.js | 44 ++-- test/cli/static-option.test.js | 74 ++++-- test/cli/watchFiles-option.test.js | 20 +- test/cli/webSocketServer-option.test.js | 2 + 27 files changed, 347 insertions(+), 293 deletions(-) diff --git a/test/cli/__snapshots__/basic.test.js.snap.webpack5 b/test/cli/__snapshots__/basic.test.js.snap.webpack5 index eedd96b09d..722e8d9701 100644 --- a/test/cli/__snapshots__/basic.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/basic.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`basic basic should accept the promise function of webpack.config.js: stderr 1`] = ` +exports[`basic > basic > should accept the promise function of webpack.config.js > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,13 +6,13 @@ exports[`basic basic should accept the promise function of webpack.config.js: st [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic basic should work using "--host localhost --port ": stderr 1`] = ` +exports[`basic > basic > should work using "--host localhost --port " > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic basic should work using multi compiler mode: stderr 1`] = ` +exports[`basic > basic > should work using multi compiler mode > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -22,7 +20,7 @@ exports[`basic basic should work using multi compiler mode: stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic basic should work: stderr 1`] = ` +exports[`basic > basic > should work > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -30,7 +28,7 @@ exports[`basic basic should work: stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic should output help should generate correct cli flags 1`] = ` +exports[`basic > should output help > should generate correct cli flags 1`] = ` "Usage: webpack serve|server|s [entries...] [options] Run the webpack dev server and watch for source file changes while serving. diff --git a/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 b/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 index 98b5687372..62f0c7d0b2 100644 --- a/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"bonjour" CLI option should work using "--bonjour and --server-type=https" 1`] = ` +exports[`"bonjour" CLI option > should work using "--bonjour and --server-type=https" 1`] = ` " [webpack-dev-server] Generating SSL certificate... [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: @@ -11,7 +9,7 @@ exports[`"bonjour" CLI option should work using "--bonjour and --server-type=htt [webpack-dev-server] Broadcasting "https" with subtype of "webpack" via ZeroConf DNS (Bonjour)" `; -exports[`"bonjour" CLI option should work using "--bonjour" 1`] = ` +exports[`"bonjour" CLI option > should work using "--bonjour" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -20,7 +18,7 @@ exports[`"bonjour" CLI option should work using "--bonjour" 1`] = ` [webpack-dev-server] Broadcasting "http" with subtype of "webpack" via ZeroConf DNS (Bonjour)" `; -exports[`"bonjour" CLI option should work using "--no-bonjour" 1`] = ` +exports[`"bonjour" CLI option > should work using "--no-bonjour" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/colors.test.js.snap.webpack5 b/test/cli/__snapshots__/colors.test.js.snap.webpack5 index b507ff813f..9fac347dca 100644 --- a/test/cli/__snapshots__/colors.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/colors.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`colors should work and do not use colors using configuration with disabled colors: stderr 1`] = ` +exports[`colors > should work and do not use colors using configuration with disabled colors > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,7 +6,7 @@ exports[`colors should work and do not use colors using configuration with disab [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors should work do not use colors using "--no-color": stderr 1`] = ` +exports[`colors > should work do not use colors using "--no-color" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -16,7 +14,7 @@ exports[`colors should work do not use colors using "--no-color": stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors should work use colors by default: stderr 1`] = ` +exports[`colors > should work use colors by default > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -24,7 +22,7 @@ exports[`colors should work use colors by default: stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors should work use colors using "--color": stderr 1`] = ` +exports[`colors > should work use colors using "--color" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -32,7 +30,7 @@ exports[`colors should work use colors using "--color": stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors should work use colors using configuration with enabled colors: stderr 1`] = ` +exports[`colors > should work use colors using configuration with enabled colors > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/historyApiFallback-option.test.js.snap.webpack5 b/test/cli/__snapshots__/historyApiFallback-option.test.js.snap.webpack5 index bc6ae29da6..a3a2cddc06 100644 --- a/test/cli/__snapshots__/historyApiFallback-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/historyApiFallback-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"historyApiFallback" CLI option should work using "--history-api-fallback" 1`] = ` +exports[`"historyApiFallback" CLI option > should work using "--history-api-fallback" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -9,7 +7,7 @@ exports[`"historyApiFallback" CLI option should work using "--history-api-fallba [webpack-dev-server] 404s will fallback to '/index.html'" `; -exports[`"historyApiFallback" CLI option should work using "--no-history-api-fallback" 1`] = ` +exports[`"historyApiFallback" CLI option > should work using "--no-history-api-fallback" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/host-option.test.js.snap.webpack5 b/test/cli/__snapshots__/host-option.test.js.snap.webpack5 index db9cf49b4a..a0d2c4e342 100644 --- a/test/cli/__snapshots__/host-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/host-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"host" CLI option should work using "--host ::" (IPv6): stderr 1`] = ` +exports[`"host" CLI option > should work using "--host ::" (IPv6) > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,19 +6,19 @@ exports[`"host" CLI option should work using "--host ::" (IPv6): stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host ::1" (IPv6): stderr 1`] = ` +exports[`"host" CLI option > should work using "--host ::1" (IPv6) > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host ": stderr 1`] = ` +exports[`"host" CLI option > should work using "--host " > stderr 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host 0.0.0.0" (IPv4): stderr 1`] = ` +exports[`"host" CLI option > should work using "--host 0.0.0.0" (IPv4) > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -28,25 +26,25 @@ exports[`"host" CLI option should work using "--host 0.0.0.0" (IPv4): stderr 1`] [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host 127.0.0.1" (IPv4): stderr 1`] = ` +exports[`"host" CLI option > should work using "--host 127.0.0.1" (IPv4) > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host local-ip": stderr 1`] = ` +exports[`"host" CLI option > should work using "--host local-ip" > stderr 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host local-ipv4": stderr 1`] = ` +exports[`"host" CLI option > should work using "--host local-ipv4" > stderr 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option should work using "--host localhost": stderr 1`] = ` +exports[`"host" CLI option > should work using "--host localhost" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" diff --git a/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 b/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 index 0eef347cf9..cc1cf0204c 100644 --- a/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 @@ -1,11 +1,9 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"ipc" CLI option should work using "--ipc": stderr 1`] = ` +exports[`"ipc" CLI option > should work using "--ipc" > stderr 1`] = ` " [webpack-dev-server] Project is running at: "/webpack-dev-server.sock" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"ipc" CLI option should work using "--ipc=": stderr 1`] = ` +exports[`"ipc" CLI option > should work using "--ipc=" > stderr 1`] = ` " [webpack-dev-server] Project is running at: "/webpack-dev-server.cli.sock" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; diff --git a/test/cli/__snapshots__/port-option.test.js.snap.webpack5 b/test/cli/__snapshots__/port-option.test.js.snap.webpack5 index 5b4cc76e34..aa6f57772c 100644 --- a/test/cli/__snapshots__/port-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/port-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"port" CLI option should work using "--port ": stderr 1`] = ` +exports[`"port" CLI option > should work using "--port " > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,7 +6,7 @@ exports[`"port" CLI option should work using "--port ": stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"port" CLI option should work using "--port auto": stderr 1`] = ` +exports[`"port" CLI option > should work using "--port auto" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/server-option.test.js.snap.webpack5 b/test/cli/__snapshots__/server-option.test.js.snap.webpack5 index 34f6afebb7..1e8cfa6fca 100644 --- a/test/cli/__snapshots__/server-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/server-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"server" CLI options should work using "--no-server-options-request-cert" 1`] = ` +exports[`"server" CLI options > should work using "--no-server-options-request-cert" 1`] = ` " [webpack-dev-server] Generating SSL certificate... [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: @@ -10,7 +8,7 @@ exports[`"server" CLI options should work using "--no-server-options-request-cer [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert --server-options-ca " 1`] = ` +exports[`"server" CLI options > should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert --server-options-ca " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ @@ -18,7 +16,7 @@ exports[`"server" CLI options should work using "--server-options-key --s [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert " 1`] = ` +exports[`"server" CLI options > should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ @@ -26,7 +24,7 @@ exports[`"server" CLI options should work using "--server-options-key --s [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-options-key-reset --server-options-key --server-options-pfx-reset --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert-reset --server-options-cert --server-options-ca-reset --server-options-ca " 1`] = ` +exports[`"server" CLI options > should work using "--server-options-key-reset --server-options-key --server-options-pfx-reset --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert-reset --server-options-cert --server-options-ca-reset --server-options-ca " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ @@ -34,7 +32,7 @@ exports[`"server" CLI options should work using "--server-options-key-reset --se [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-options-request-cert" 1`] = ` +exports[`"server" CLI options > should work using "--server-options-request-cert" 1`] = ` " [webpack-dev-server] Generating SSL certificate... [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: @@ -44,7 +42,7 @@ exports[`"server" CLI options should work using "--server-options-request-cert" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-type http" 1`] = ` +exports[`"server" CLI options > should work using "--server-type http" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -52,7 +50,7 @@ exports[`"server" CLI options should work using "--server-type http" 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"server" CLI options should work using "--server-type https" 1`] = ` +exports[`"server" CLI options > should work using "--server-type https" 1`] = ` " [webpack-dev-server] Generating SSL certificate... [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: diff --git a/test/cli/__snapshots__/static-option.test.js.snap.webpack5 b/test/cli/__snapshots__/static-option.test.js.snap.webpack5 index e7e7fbe670..2f0e95b0c8 100644 --- a/test/cli/__snapshots__/static-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/static-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"static" CLI option should work using "--no-static-serve-index": stderr 1`] = ` +exports[`"static" CLI option > should work using "--no-static-serve-index" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,7 +6,7 @@ exports[`"static" CLI option should work using "--no-static-serve-index": stderr [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--no-static-watch": stderr 1`] = ` +exports[`"static" CLI option > should work using "--no-static-watch" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -16,7 +14,7 @@ exports[`"static" CLI option should work using "--no-static-watch": stderr 1`] = [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--static new-static --static other-static": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static new-static --static other-static" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -24,7 +22,7 @@ exports[`"static" CLI option should work using "--static new-static --static oth [webpack-dev-server] Content not from webpack is served from 'new-static, other-static' directory" `; -exports[`"static" CLI option should work using "--static new-static": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static new-static" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -32,7 +30,7 @@ exports[`"static" CLI option should work using "--static new-static": stderr 1`] [webpack-dev-server] Content not from webpack is served from 'new-static' directory" `; -exports[`"static" CLI option should work using "--static": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -40,7 +38,7 @@ exports[`"static" CLI option should work using "--static": stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--static-directory static-dir": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-directory static-dir" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -48,7 +46,7 @@ exports[`"static" CLI option should work using "--static-directory static-dir": [webpack-dev-server] Content not from webpack is served from 'static-dir' directory" `; -exports[`"static" CLI option should work using "--static-public-path /public": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-public-path /public" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -56,7 +54,7 @@ exports[`"static" CLI option should work using "--static-public-path /public": s [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--static-public-path-reset": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-public-path-reset" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -64,7 +62,7 @@ exports[`"static" CLI option should work using "--static-public-path-reset": std [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--static-reset --static-directory new-static-directory": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-reset --static-directory new-static-directory" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -72,7 +70,7 @@ exports[`"static" CLI option should work using "--static-reset --static-director [webpack-dev-server] Content not from webpack is served from 'new-static-directory' directory" `; -exports[`"static" CLI option should work using "--static-reset": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-reset" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -80,7 +78,7 @@ exports[`"static" CLI option should work using "--static-reset": stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from 'new-static-after-reset' directory" `; -exports[`"static" CLI option should work using "--static-serve-index": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-serve-index" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -88,7 +86,7 @@ exports[`"static" CLI option should work using "--static-serve-index": stderr 1` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option should work using "--static-watch": stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-watch" > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 b/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 index fcd2eada1d..5c28edbcab 100644 --- a/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`"watchFiles" CLI option should work using "--watch-files --watch-files ": stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files --watch-files " > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -8,7 +6,7 @@ exports[`"watchFiles" CLI option should work using "--watch-files --watc [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"watchFiles" CLI option should work using "--watch-files ": stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files " > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -16,7 +14,7 @@ exports[`"watchFiles" CLI option should work using "--watch-files ": stde [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"watchFiles" CLI option should work using "--watch-files-reset --watch-files ": stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files-reset --watch-files " > stderr 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/allowedHosts-option.test.js b/test/cli/allowedHosts-option.test.js index 548314d148..f6be66b972 100644 --- a/test/cli/allowedHosts-option.test.js +++ b/test/cli/allowedHosts-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-allowed-hosts"]; diff --git a/test/cli/basic.test.js b/test/cli/basic.test.js index cf5b4a4964..44d1eef656 100644 --- a/test/cli/basic.test.js +++ b/test/cli/basic.test.js @@ -1,8 +1,10 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); const util = require("node:util"); const execa = require("execa"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-basic"]; @@ -10,18 +12,16 @@ const isMacOS = process.platform === "darwin"; describe("basic", () => { describe("should output help", () => { - (isMacOS ? it.skip : it)("should generate correct cli flags", async () => { + (isMacOS ? it.skip : it)("should generate correct cli flags", async (t) => { const { exitCode, stdout } = await testBin(["--help"]); - // eslint-disable-next-line jest/no-standalone-expect expect(exitCode).toBe(0); - // eslint-disable-next-line jest/no-standalone-expect - expect(util.stripVTControlCharacters(stdout)).toMatchSnapshot(); + t.assert.snapshot(util.stripVTControlCharacters(stdout)); }); }); describe("basic", () => { - it("should work", async () => { + it("should work", async (t) => { const { exitCode, stderr } = await testBin([ // Ideally it should be empty to test without arguments, unfortunately it takes 8080 port and other test can failed "--port", @@ -29,10 +29,12 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--host localhost --port "', async () => { + it('should work using "--host localhost --port "', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -41,10 +43,10 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it("should accept the promise function of webpack.config.js", async () => { + it("should accept the promise function of webpack.config.js", async (t) => { const { exitCode, stderr } = await testBin([ "--config", path.resolve( @@ -56,10 +58,12 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it("should work using multi compiler mode", async () => { + it("should work using multi compiler mode", async (t) => { const { exitCode, stderr } = await testBin([ "--config", path.resolve( @@ -71,130 +75,138 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); - }); - - it("should exit the process when SIGINT is detected", (done) => { - const cliPath = path.resolve( - __dirname, - "../../bin/webpack-dev-server.js", - ); - const examplePath = path.resolve( - __dirname, - "../../examples/client/web-socket-url", + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), ); - const cp = execa("node", ["--port", port, cliPath], { cwd: examplePath }); - - cp.stdout.on("data", (data) => { - const bits = data.toString(); - - if (/main.js/.test(bits)) { - expect(cp.pid).not.toBe(0); - - cp.kill("SIGINT"); - } - }); - - cp.on("exit", () => { - done(); - }); }); - it("should exit the process when SIGINT is detected, even before the compilation is done", (done) => { - const cliPath = path.resolve( - __dirname, - "../../bin/webpack-dev-server.js", - ); - const cwd = path.resolve(__dirname, "../fixtures/cli"); - const cp = execa("node", ["--port", port, cliPath], { cwd }); + it("should exit the process when SIGINT is detected", () => + new Promise((resolve) => { + const cliPath = path.resolve( + __dirname, + "../../bin/webpack-dev-server.js", + ); + const examplePath = path.resolve( + __dirname, + "../../examples/client/web-socket-url", + ); + const cp = execa("node", ["--port", port, cliPath], { + cwd: examplePath, + }); - let killed = false; + cp.stdout.on("data", (data) => { + const bits = data.toString(); - cp.stdout.on("data", () => { - if (!killed) { - expect(cp.pid).not.toBe(0); + if (/main.js/.test(bits)) { + expect(cp.pid).not.toBe(0); - cp.kill("SIGINT"); - } + cp.kill("SIGINT"); + } + }); - killed = true; - }); + cp.on("exit", () => { + resolve(); + }); + })); - cp.on("exit", () => { - done(); - }); - }); + it("should exit the process when SIGINT is detected, even before the compilation is done", () => + new Promise((resolve) => { + const cliPath = path.resolve( + __dirname, + "../../bin/webpack-dev-server.js", + ); + const cwd = path.resolve(__dirname, "../fixtures/cli"); + const cp = execa("node", ["--port", port, cliPath], { cwd }); - it("should exit the process when stdin ends if --watch-options-stdin", (done) => { - const cliPath = path.resolve( - __dirname, - "../../bin/webpack-dev-server.js", - ); - const examplePath = path.resolve( - __dirname, - "../../examples/client/web-socket-url", - ); - const cp = execa( - "node", - [cliPath, "--port", port, "--watch-options-stdin"], - { - cwd: examplePath, - }, - ); + let killed = false; - cp.stdout.on("data", (data) => { - const bits = data.toString(); + cp.stdout.on("data", () => { + if (!killed) { + expect(cp.pid).not.toBe(0); - if (/main.js/.test(bits)) { - expect(cp.pid).not.toBe(0); + cp.kill("SIGINT"); + } - cp.stdin.write("hello"); - cp.stdin.end("world"); - } - }); + killed = true; + }); - cp.on("exit", () => { - done(); - }); - }); + cp.on("exit", () => { + resolve(); + }); + })); - it("should exit the process when stdin ends if --watch-options-stdin, even before the compilation is done", (done) => { - const cliPath = path.resolve( - __dirname, - "../../bin/webpack-dev-server.js", - ); - const cwd = path.resolve(__dirname, "../fixtures/cli"); - const cp = execa( - "node", - [cliPath, "--port", port, "--watch-options-stdin"], - { cwd }, - ); + it("should exit the process when stdin ends if --watch-options-stdin", () => + new Promise((resolve) => { + const cliPath = path.resolve( + __dirname, + "../../bin/webpack-dev-server.js", + ); + const examplePath = path.resolve( + __dirname, + "../../examples/client/web-socket-url", + ); + const cp = execa( + "node", + [cliPath, "--port", port, "--watch-options-stdin"], + { + cwd: examplePath, + }, + ); + + cp.stdout.on("data", (data) => { + const bits = data.toString(); + + if (/main.js/.test(bits)) { + expect(cp.pid).not.toBe(0); + + cp.stdin.write("hello"); + cp.stdin.end("world"); + } + }); + + cp.on("exit", () => { + resolve(); + }); + })); + + it("should exit the process when stdin ends if --watch-options-stdin, even before the compilation is done", () => + new Promise((resolve, reject) => { + const cliPath = path.resolve( + __dirname, + "../../bin/webpack-dev-server.js", + ); + const cwd = path.resolve(__dirname, "../fixtures/cli"); + const cp = execa( + "node", + [cliPath, "--port", port, "--watch-options-stdin"], + { cwd }, + ); - let killed = false; + let killed = false; - cp.on("error", (error) => { - done(error); - }); + cp.on("error", (error) => { + reject(error); + }); - cp.stdin.on("error", (error) => { - done(error); - }); + cp.stdin.on("error", (error) => { + reject(error); + }); - cp.stdout.on("data", () => { - if (!killed) { - expect(cp.pid).not.toBe(0); + cp.stdout.on("data", () => { + if (!killed) { + expect(cp.pid).not.toBe(0); - cp.stdin.write("hello"); - cp.stdin.end("world"); - } + cp.stdin.write("hello"); + cp.stdin.end("world"); + } - killed = true; - }); + killed = true; + }); - cp.on("exit", () => { - done(); - }); - }); + cp.on("exit", () => { + resolve(); + }); + })); it("should add dev server entry points to a single entry point", async () => { const { exitCode, stdout } = await testBin( @@ -324,7 +336,6 @@ describe("basic", () => { expect(stdout).toContain("client/index.js"); }); - // eslint-disable-next-line jest/no-disabled-tests it.skip("should use different random port when multiple instances are started on different processes", async () => { const cliPath = path.resolve( __dirname, diff --git a/test/cli/bonjour-option.test.js b/test/cli/bonjour-option.test.js index 77d1df223b..973301c60e 100644 --- a/test/cli/bonjour-option.test.js +++ b/test/cli/bonjour-option.test.js @@ -1,6 +1,8 @@ "use strict"; const fs = require("node:fs"); +const { beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const Server = require("../../lib/Server"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-bonjour"]; @@ -12,16 +14,16 @@ describe('"bonjour" CLI option', () => { fs.rmSync(defaultCertificateDir, { recursive: true, force: true }); }); - it('should work using "--bonjour"', async () => { + it('should work using "--bonjour"', async (t) => { const { exitCode, stderr } = await testBin(["--port", port, "--bonjour"], { outputKillStr: /Broadcasting/, }); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); - it('should work using "--bonjour and --server-type=https"', async () => { + it('should work using "--bonjour and --server-type=https"', async (t) => { const { exitCode, stderr } = await testBin( ["--port", port, "--bonjour", "--server-type=https"], { @@ -30,12 +32,10 @@ describe('"bonjour" CLI option', () => { ); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); - it('should work using "--no-bonjour"', async () => { + it('should work using "--no-bonjour"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -43,6 +43,6 @@ describe('"bonjour" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); }); diff --git a/test/cli/client-option.test.js b/test/cli/client-option.test.js index 0fd38d6af8..61ede3cb01 100644 --- a/test/cli/client-option.test.js +++ b/test/cli/client-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-client"]; diff --git a/test/cli/colors.test.js b/test/cli/colors.test.js index a19143439e..6cb999dccf 100644 --- a/test/cli/colors.test.js +++ b/test/cli/colors.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-colors"]; @@ -14,7 +16,7 @@ const colorsEnabled = require.resolve( ); describe("colors", () => { - it("should work use colors by default", async () => { + it("should work use colors by default", async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -23,27 +25,33 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); expect(stderr).toContain("\u001B["); }); - it('should work use colors using "--color"', async () => { + it('should work use colors using "--color"', async (t) => { const { exitCode, stderr } = await testBin(["--port", port, "--color"]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); expect(stderr).toContain("\u001B["); }); - it('should work do not use colors using "--no-color"', async () => { + it('should work do not use colors using "--no-color"', async (t) => { const { exitCode, stderr } = await testBin(["--port", port, "--no-color"]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); expect(stderr).not.toContain("\u001B["); }); - it("should work use colors using configuration with enabled colors", async () => { + it("should work use colors using configuration with enabled colors", async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -52,11 +60,13 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); expect(stderr).toContain("\u001B["); }); - it("should work and do not use colors using configuration with disabled colors", async () => { + it("should work and do not use colors using configuration with disabled colors", async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -65,7 +75,9 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); expect(stderr).not.toContain("\u001B["); }); }); diff --git a/test/cli/compress-option.test.js b/test/cli/compress-option.test.js index ccd3884350..b6a83baabb 100644 --- a/test/cli/compress-option.test.js +++ b/test/cli/compress-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-compress"]; diff --git a/test/cli/historyApiFallback-option.test.js b/test/cli/historyApiFallback-option.test.js index 018db0e5b3..ab2f344667 100644 --- a/test/cli/historyApiFallback-option.test.js +++ b/test/cli/historyApiFallback-option.test.js @@ -1,10 +1,12 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-history-api-fallback"]; describe('"historyApiFallback" CLI option', () => { - it('should work using "--history-api-fallback"', async () => { + it('should work using "--history-api-fallback"', async (t) => { const { exitCode, stderr } = await testBin( ["--port", port, "--history-api-fallback"], { @@ -13,10 +15,10 @@ describe('"historyApiFallback" CLI option', () => { ); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); - it('should work using "--no-history-api-fallback"', async () => { + it('should work using "--no-history-api-fallback"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -24,6 +26,6 @@ describe('"historyApiFallback" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); }); diff --git a/test/cli/host-option.test.js b/test/cli/host-option.test.js index dfa65ee92b..898428e57e 100644 --- a/test/cli/host-option.test.js +++ b/test/cli/host-option.test.js @@ -1,6 +1,9 @@ "use strict"; const os = require("node:os"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); +const { spyOn } = require("jest-mock"); const Server = require("../../lib/Server"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-host"]; @@ -9,7 +12,7 @@ const localIPv4 = Server.findIp("v4", false); const localIPv6 = Server.findIp("v6", false); describe('"host" CLI option', () => { - it('should work using "--host 0.0.0.0" (IPv4)', async () => { + it('should work using "--host 0.0.0.0" (IPv4)', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -18,10 +21,12 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--host ::" (IPv6)', async () => { + it('should work using "--host ::" (IPv6)', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -30,10 +35,12 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--host ::1" (IPv6)', async () => { + it('should work using "--host ::1" (IPv6)', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -42,10 +49,10 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it('should work using "--host localhost"', async () => { + it('should work using "--host localhost"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -54,10 +61,10 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it('should work using "--host 127.0.0.1" (IPv4)', async () => { + it('should work using "--host 127.0.0.1" (IPv4)', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -66,10 +73,10 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it('should work using "--host "', async () => { + it('should work using "--host "', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -78,11 +85,10 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - // eslint-disable-next-line jest/no-disabled-tests - it.skip('should work using "--host "', async () => { + it.skip('should work using "--host "', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -91,10 +97,10 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it('should work using "--host local-ip"', async () => { + it('should work using "--host local-ip"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -103,10 +109,9 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - // eslint-disable-next-line jest/no-disabled-tests it.skip('should work using "--host local-ip" take the first network found', async () => { const { exitCode, stderr } = await testBin([ "--port", @@ -116,7 +121,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - jest.spyOn(os, "networkInterfaces").mockImplementation(() => ({ + spyOn(os, "networkInterfaces").mockImplementation(() => ({ lo: [ { address: "127.0.0.1", @@ -226,7 +231,7 @@ describe('"host" CLI option', () => { expect(stderr).toContain("192.168.1.15"); }); - it('should work using "--host local-ipv4"', async () => { + it('should work using "--host local-ipv4"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -235,6 +240,6 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); }); diff --git a/test/cli/hot-option.test.js b/test/cli/hot-option.test.js index 6b525d885a..6e62e3a2ff 100644 --- a/test/cli/hot-option.test.js +++ b/test/cli/hot-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-hot"]; diff --git a/test/cli/ipc-option.test.js b/test/cli/ipc-option.test.js index 304c05f38d..5efe61f19d 100644 --- a/test/cli/ipc-option.test.js +++ b/test/cli/ipc-option.test.js @@ -2,17 +2,19 @@ const os = require("node:os"); const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); describe('"ipc" CLI option', () => { - it('should work using "--ipc"', async () => { + it('should work using "--ipc"', async (t) => { const { exitCode, stderr } = await testBin(["--ipc"]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); - it('should work using "--ipc="', async () => { + it('should work using "--ipc="', async (t) => { const isWindows = process.platform === "win32"; const pipePrefix = isWindows ? "\\\\.\\pipe\\" : os.tmpdir(); const pipeName = "webpack-dev-server.cli.sock"; @@ -21,6 +23,6 @@ describe('"ipc" CLI option', () => { const { exitCode, stderr } = await testBin(["--ipc", ipc]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr)).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); }); }); diff --git a/test/cli/liveReload-option.test.js b/test/cli/liveReload-option.test.js index 53e2b198e8..1725910ab5 100644 --- a/test/cli/liveReload-option.test.js +++ b/test/cli/liveReload-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-live-reload"]; diff --git a/test/cli/open-option.test.js b/test/cli/open-option.test.js index 9cc9b9cd41..c017a2f3f5 100644 --- a/test/cli/open-option.test.js +++ b/test/cli/open-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-open"]; diff --git a/test/cli/port-option.test.js b/test/cli/port-option.test.js index b771e7f280..355b7554a5 100644 --- a/test/cli/port-option.test.js +++ b/test/cli/port-option.test.js @@ -1,20 +1,26 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-port-option"]; describe('"port" CLI option', () => { - it('should work using "--port "', async () => { + it('should work using "--port "', async (t) => { const { exitCode, stderr } = await testBin(["--port", port]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--port auto"', async () => { + it('should work using "--port auto"', async (t) => { const { exitCode, stderr } = await testBin(["--port", "auto"]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); }); diff --git a/test/cli/server-option.test.js b/test/cli/server-option.test.js index 7b9e77256b..5d36a5726e 100644 --- a/test/cli/server-option.test.js +++ b/test/cli/server-option.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const { rimraf } = require("rimraf"); const Server = require("../../lib/Server"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); @@ -18,7 +20,7 @@ describe('"server" CLI options', () => { await rimraf(defaultCertificateDir); }); - it('should work using "--server-type http"', async () => { + it('should work using "--server-type http"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -27,12 +29,10 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: false }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: false })); }); - it('should work using "--server-type https"', async () => { + it('should work using "--server-type https"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -41,12 +41,10 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); - it('should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert --server-options-ca "', async () => { + it('should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert --server-options-ca "', async (t) => { const pfxFile = path.join(httpsCertificateDirectory, "server.pfx"); const key = path.join(httpsCertificateDirectory, "server.key"); const cert = path.join(httpsCertificateDirectory, "server.crt"); @@ -71,12 +69,10 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); - it('should work using "--server-options-key-reset --server-options-key --server-options-pfx-reset --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert-reset --server-options-cert --server-options-ca-reset --server-options-ca "', async () => { + it('should work using "--server-options-key-reset --server-options-key --server-options-pfx-reset --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert-reset --server-options-cert --server-options-ca-reset --server-options-ca "', async (t) => { const pfxFile = path.join(httpsCertificateDirectory, "server.pfx"); const key = path.join(httpsCertificateDirectory, "server.key"); const cert = path.join(httpsCertificateDirectory, "server.crt"); @@ -105,13 +101,11 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); // For https://github.com/webpack/webpack-dev-server/issues/3306 - it('should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert "', async () => { + it('should work using "--server-options-key --server-options-pfx --server-options-passphrase webpack-dev-server --server-options-cert "', async (t) => { const pfxFile = path.join(httpsCertificateDirectory, "server.pfx"); const key = path.join(httpsCertificateDirectory, "server.key"); const cert = path.join(httpsCertificateDirectory, "server.crt"); @@ -133,12 +127,10 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); - it('should work using "--server-options-request-cert"', async () => { + it('should work using "--server-options-request-cert"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -148,12 +140,10 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); - it('should work using "--no-server-options-request-cert"', async () => { + it('should work using "--no-server-options-request-cert"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -163,8 +153,6 @@ describe('"server" CLI options', () => { ]); expect(exitCode).toBe(0); - expect( - normalizeStderr(stderr, { ipv6: true, https: true }), - ).toMatchSnapshot(); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true, https: true })); }); }); diff --git a/test/cli/static-option.test.js b/test/cli/static-option.test.js index 66ccd5ec67..15cf980015 100644 --- a/test/cli/static-option.test.js +++ b/test/cli/static-option.test.js @@ -1,17 +1,21 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-static"]; describe('"static" CLI option', () => { - it('should work using "--static"', async () => { + it('should work using "--static"', async (t) => { const { exitCode, stderr } = await testBin(["--port", port, "--static"]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static new-static"', async () => { + it('should work using "--static new-static"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -20,10 +24,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static new-static --static other-static"', async () => { + it('should work using "--static new-static --static other-static"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -34,10 +40,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-reset"', async () => { + it('should work using "--static-reset"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -47,10 +55,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-reset --static-directory new-static-directory"', async () => { + it('should work using "--static-reset --static-directory new-static-directory"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -60,10 +70,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-directory static-dir"', async () => { + it('should work using "--static-directory static-dir"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -72,10 +84,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-public-path /public"', async () => { + it('should work using "--static-public-path /public"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -84,10 +98,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-public-path-reset"', async () => { + it('should work using "--static-public-path-reset"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -97,10 +113,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-serve-index"', async () => { + it('should work using "--static-serve-index"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -108,10 +126,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--no-static-serve-index"', async () => { + it('should work using "--no-static-serve-index"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -119,10 +139,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--static-watch"', async () => { + it('should work using "--static-watch"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -130,10 +152,12 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--no-static-watch"', async () => { + it('should work using "--no-static-watch"', async (t) => { const { exitCode, stderr } = await testBin([ "--port", port, @@ -141,6 +165,8 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); }); diff --git a/test/cli/watchFiles-option.test.js b/test/cli/watchFiles-option.test.js index 93eeebfe78..7433be355a 100644 --- a/test/cli/watchFiles-option.test.js +++ b/test/cli/watchFiles-option.test.js @@ -1,11 +1,13 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { normalizeStderr, testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-watch-files"]; describe('"watchFiles" CLI option', () => { - it('should work using "--watch-files "', async () => { + it('should work using "--watch-files "', async (t) => { const watchDirectory = path.resolve(__dirname, "../fixtures/static/static"); const { exitCode, stderr } = await testBin([ @@ -16,10 +18,12 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--watch-files --watch-files "', async () => { + it('should work using "--watch-files --watch-files "', async (t) => { const watchDirectory = path.resolve(__dirname, "../fixtures/static/static"); const watchOtherDirectory = path.resolve( __dirname, @@ -36,10 +40,12 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); - it('should work using "--watch-files-reset --watch-files "', async () => { + it('should work using "--watch-files-reset --watch-files "', async (t) => { const watchDirectory = path.resolve(__dirname, "../fixtures/static/static"); const { exitCode, stderr } = await testBin([ @@ -51,6 +57,8 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - expect(normalizeStderr(stderr, { ipv6: true })).toMatchSnapshot("stderr"); + await t.test("stderr", (t) => + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), + ); }); }); diff --git a/test/cli/webSocketServer-option.test.js b/test/cli/webSocketServer-option.test.js index e7394c8933..1e614a6cdb 100644 --- a/test/cli/webSocketServer-option.test.js +++ b/test/cli/webSocketServer-option.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const { testBin } = require("../helpers/test-bin"); const port = require("../ports-map")["cli-web-socket-server"]; From 24ff4080ffde42e798a5c892f971ea85085e4f38 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 21:46:41 -0500 Subject: [PATCH 04/22] refactor(tests): update web socket tests to use node:test and expect assertions - Replaced traditional test structure with node:test for better test organization. - Updated snapshot assertions to use the new test framework's syntax. - Ensured all test cases in web-socket-communication.test.js, web-socket-server-url.test.js, and web-socket-server.test.js are consistent with the new structure. --- .../allowed-hosts.test.js.snap.webpack5 | 210 +++-- .../__snapshots__/api.test.js.snap.webpack5 | 130 ++- .../bonjour.test.js.snap.webpack5 | 42 +- .../built-in-routes.test.js.snap.webpack5 | 94 ++- .../client-reconnect.test.js.snap.webpack5 | 30 +- .../client.test.js.snap.webpack5 | 42 +- .../compress.test.js.snap.webpack5 | 50 +- .../__snapshots__/entry.test.js.snap.webpack5 | 56 +- .../headers.test.js.snap.webpack5 | 104 ++- ...history-api-fallback.test.js.snap.webpack5 | 210 +++-- .../__snapshots__/host.test.js.snap.webpack5 | 182 ++-- .../hot-and-live-reload.test.js.snap.webpack5 | 176 ++-- .../__snapshots__/ipc.test.js.snap.webpack5 | 14 +- .../logging.test.js.snap.webpack5 | 32 +- .../mime-types.test.js.snap.webpack5 | 34 +- .../module-federation.test.js.snap.webpack5 | 50 +- .../multi-compiler.test.js.snap.webpack5 | 110 ++- .../on-listening.test.js.snap.webpack5 | 42 +- .../overlay.test.js.snap.webpack5 | 122 ++- .../__snapshots__/port.test.js.snap.webpack5 | 38 +- ...and-client-transport.test.js.snap.webpack5 | 32 +- .../server.test.js.snap.webpack5 | 212 +++-- .../setup-exit-signals.test.js.snap.webpack5 | 22 +- .../setup-middlewares.test.js.snap.webpack5 | 78 +- .../static-directory.test.js.snap.webpack5 | 162 ++-- .../static-public-path.test.js.snap.webpack5 | 328 +++++--- .../__snapshots__/stats.test.js.snap.webpack5 | 20 +- .../target.test.js.snap.webpack5 | 78 +- .../watch-files.test.js.snap.webpack5 | 340 +++++--- ...socket-communication.test.js.snap.webpack5 | 20 +- ...eb-socket-server-url.test.js.snap.webpack5 | 204 +++-- .../web-socket-server.test.js.snap.webpack5 | 8 +- test/e2e/allowed-hosts.test.js | 292 ++++--- test/e2e/api.test.js | 220 +++-- test/e2e/app.test.js | 2 + test/e2e/bonjour.test.js | 129 +-- test/e2e/built-in-routes.test.js | 102 ++- test/e2e/client-reconnect.test.js | 34 +- test/e2e/client.test.js | 52 +- test/e2e/compress.test.js | 50 +- test/e2e/cross-origin-request.test.js | 2 + test/e2e/entry.test.js | 74 +- test/e2e/headers.test.js | 122 +-- test/e2e/history-api-fallback.test.js | 241 +++--- test/e2e/host.test.js | 31 +- test/e2e/hot-and-live-reload.test.js | 80 +- test/e2e/ipc.test.js | 34 +- test/e2e/lazy-compilation.test.js | 19 +- test/e2e/logging.test.js | 8 +- test/e2e/mime-types.test.js | 34 +- test/e2e/module-federation.test.js | 50 +- test/e2e/multi-compiler.test.js | 132 +-- test/e2e/on-listening.test.js | 42 +- test/e2e/options-middleware.test.js | 2 + test/e2e/overlay.test.js | 796 ++++++++++-------- test/e2e/port.test.js | 12 +- test/e2e/progress.test.js | 2 + test/e2e/range-header.test.js | 6 +- test/e2e/server-and-client-transport.test.js | 60 +- test/e2e/server.test.js | 339 +++++--- test/e2e/setup-exit-signals.test.js | 94 ++- test/e2e/setup-middlewares.test.js | 78 +- test/e2e/static-directory.test.js | 440 +++++----- test/e2e/static-public-path.test.js | 375 +++++---- test/e2e/stats.test.js | 11 +- test/e2e/target.test.js | 46 +- test/e2e/watch-files.test.js | 170 ++-- test/e2e/web-socket-communication.test.js | 30 +- test/e2e/web-socket-server-url.test.js | 354 ++++---- test/e2e/web-socket-server.test.js | 10 +- 70 files changed, 4844 insertions(+), 3003 deletions(-) diff --git a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 index 4f79109c83..ff6142425c 100644 --- a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 @@ -1,48 +1,88 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`allowed hosts check host headers should allow hosts in allowedHosts: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should allow hosts in allowedHosts: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should allow hosts in allowedHosts: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should allow hosts that pass a wildcard in allowedHosts: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should allow hosts that pass a wildcard in allowedHosts: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should allow hosts that pass a wildcard in allowedHosts: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should always allow \`localhost\` if options.allowedHosts is auto: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow \`localhost\` if options.allowedHosts is auto: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow \`localhost\` if options.allowedHosts is auto: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should always allow \`localhost\` subdomain if options.allowedHosts is auto: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow \`localhost\` subdomain if options.allowedHosts is auto: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow \`localhost\` subdomain if options.allowedHosts is auto: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should always allow any host if options.allowedHosts is all: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow any host if options.allowedHosts is all: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow any host if options.allowedHosts is all: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should always allow value from the \`host\` options if options.allowedHosts is auto: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow value from the \`host\` options if options.allowedHosts is auto: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow value from the \`host\` options if options.allowedHosts is auto: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > response status 1`] = ` +200 +`; -exports[`allowed hosts check host headers should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto: console messages 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > console messages 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto: page errors 1`] = `[]`; +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > page errors 1`] = ` +[] +`; -exports[`allowed hosts check host headers should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto: response status 1`] = `200`; +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > response status 1`] = ` +200 +`; -exports[`allowed hosts should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -50,9 +90,11 @@ exports[`allowed hosts should connect web socket client using "[::1] host to web ] `; -exports[`allowed hosts should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -60,9 +102,11 @@ exports[`allowed hosts should connect web socket client using "0.0.0.0" host to ] `; -exports[`allowed hosts should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "127.0.0.1" host to web socket server by default ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -70,9 +114,11 @@ exports[`allowed hosts should connect web socket client using "127.0.0.1" host t ] `; -exports[`allowed hosts should connect web socket client using "127.0.0.1" host to web socket server by default ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -80,9 +126,11 @@ exports[`allowed hosts should connect web socket client using "127.0.0.1" host t ] `; -exports[`allowed hosts should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -90,9 +138,11 @@ exports[`allowed hosts should connect web socket client using "chrome-extension: ] `; -exports[`allowed hosts should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -100,9 +150,11 @@ exports[`allowed hosts should connect web socket client using "file:" protocol t ] `; -exports[`allowed hosts should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using "localhost" host to web socket server by default ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -110,9 +162,11 @@ exports[`allowed hosts should connect web socket client using "localhost" host t ] `; -exports[`allowed hosts should connect web socket client using "localhost" host to web socket server by default ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the "all" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -120,9 +174,11 @@ exports[`allowed hosts should connect web socket client using custom hostname to ] `; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the "all" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -130,9 +186,11 @@ exports[`allowed hosts should connect web socket client using custom hostname to ] `; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -140,9 +198,11 @@ exports[`allowed hosts should connect web socket client using custom hostname to ] `; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -150,9 +210,11 @@ exports[`allowed hosts should connect web socket client using custom hostname to ] `; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -160,9 +222,11 @@ exports[`allowed hosts should connect web socket client using custom hostname to ] `; -exports[`allowed hosts should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -170,9 +234,11 @@ exports[`allowed hosts should connect web socket client using custom sub hostnam ] `; -exports[`allowed hosts should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using localhost to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -180,9 +246,11 @@ exports[`allowed hosts should connect web socket client using localhost to web s ] `; -exports[`allowed hosts should connect web socket client using localhost to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should connect web socket client using origin header containing an IP address with the custom hostname value ("ws"): (work) console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -190,19 +258,25 @@ exports[`allowed hosts should connect web socket client using origin header cont ] `; -exports[`allowed hosts should connect web socket client using origin header containing an IP address with the custom hostname value ("ws"): (work) page errors 1`] = `[]`; +exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) page errors 1`] = ` +[] +`; -exports[`allowed hosts should disconnect web client using localhost to web socket server with the "auto" value ("ws"): console messages 1`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 403 (Forbidden)", ] `; -exports[`allowed hosts should disconnect web client using localhost to web socket server with the "auto" value ("ws"): html 1`] = `"
Invalid Host header
"`; +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > html 1`] = ` +"
Invalid Host header
" +`; -exports[`allowed hosts should disconnect web client using localhost to web socket server with the "auto" value ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should disconnect web client using origin header containing an IP address with the "auto" value ("ws"): (work) console messages 1`] = ` +exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -213,9 +287,11 @@ exports[`allowed hosts should disconnect web client using origin header containi ] `; -exports[`allowed hosts should disconnect web client using origin header containing an IP address with the "auto" value ("ws"): (work) page errors 1`] = `[]`; +exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) page errors 1`] = ` +[] +`; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws"): console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -226,9 +302,11 @@ exports[`allowed hosts should disconnect web socket client using custom hostname ] `; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws"): console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -239,9 +317,11 @@ exports[`allowed hosts should disconnect web socket client using custom hostname ] `; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > page errors 1`] = ` +[] +`; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws"): console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -252,4 +332,6 @@ exports[`allowed hosts should disconnect web socket client using custom hostname ] `; -exports[`allowed hosts should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws"): page errors 1`] = `[]`; +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/api.test.js.snap.webpack5 b/test/e2e/__snapshots__/api.test.js.snap.webpack5 index 14c74e33ea..81f3a4ae31 100644 --- a/test/e2e/__snapshots__/api.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/api.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`API Invalidate callback should use the default \`noop\` callback when invalidate is called without any callback: console messages 1`] = ` +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,11 +6,15 @@ exports[`API Invalidate callback should use the default \`noop\` callback when i ] `; -exports[`API Invalidate callback should use the default \`noop\` callback when invalidate is called without any callback: page errors 1`] = `[]`; +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > page errors 1`] = ` +[] +`; -exports[`API Invalidate callback should use the default \`noop\` callback when invalidate is called without any callback: response status 1`] = `200`; +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > response status 1`] = ` +200 +`; -exports[`API Invalidate callback should use the provided \`callback\` function: console messages 1`] = ` +exports[`API > Invalidate callback > should use the provided \`callback\` function > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -20,11 +22,15 @@ exports[`API Invalidate callback should use the provided \`callback\` function: ] `; -exports[`API Invalidate callback should use the provided \`callback\` function: page errors 1`] = `[]`; +exports[`API > Invalidate callback > should use the provided \`callback\` function > page errors 1`] = ` +[] +`; -exports[`API Invalidate callback should use the provided \`callback\` function: response status 1`] = `200`; +exports[`API > Invalidate callback > should use the provided \`callback\` function > response status 1`] = ` +200 +`; -exports[`API Server.checkHostHeader should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object: console messages 1`] = ` +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -36,13 +42,19 @@ exports[`API Server.checkHostHeader should allow URLs with scheme for checking o ] `; -exports[`API Server.checkHostHeader should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object: page errors 1`] = `[]`; +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > page errors 1`] = ` +[] +`; -exports[`API Server.checkHostHeader should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object: response status 1`] = `200`; +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > response status 1`] = ` +200 +`; -exports[`API Server.checkHostHeader should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object: web socket URL 1`] = `"ws://test.host:8156/ws"`; +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > web socket URL 1`] = ` +"ws://test.host:8156/ws" +`; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (number): console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -50,11 +62,15 @@ exports[`API Server.getFreePort should retry finding the port for up to defaultP ] `; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (number): page errors 1`] = `[]`; +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > page errors 1`] = ` +[] +`; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (number): response status 1`] = `200`; +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > response status 1`] = ` +200 +`; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (string): console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -62,11 +78,15 @@ exports[`API Server.getFreePort should retry finding the port for up to defaultP ] `; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (string): page errors 1`] = `[]`; +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > page errors 1`] = ` +[] +`; -exports[`API Server.getFreePort should retry finding the port for up to defaultPortRetry times (string): response status 1`] = `200`; +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > response status 1`] = ` +200 +`; -exports[`API Server.getFreePort should retry finding the port when serial ports are busy: console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -74,11 +94,15 @@ exports[`API Server.getFreePort should retry finding the port when serial ports ] `; -exports[`API Server.getFreePort should retry finding the port when serial ports are busy: page errors 1`] = `[]`; +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > page errors 1`] = ` +[] +`; -exports[`API Server.getFreePort should retry finding the port when serial ports are busy: response status 1`] = `200`; +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > response status 1`] = ` +200 +`; -exports[`API Server.getFreePort should return the port when the port is \`null\`: console messages 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is \`null\` > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -86,11 +110,15 @@ exports[`API Server.getFreePort should return the port when the port is \`null\` ] `; -exports[`API Server.getFreePort should return the port when the port is \`null\`: page errors 1`] = `[]`; +exports[`API > Server.getFreePort > should return the port when the port is \`null\` > page errors 1`] = ` +[] +`; -exports[`API Server.getFreePort should return the port when the port is \`null\`: response status 1`] = `200`; +exports[`API > Server.getFreePort > should return the port when the port is \`null\` > response status 1`] = ` +200 +`; -exports[`API Server.getFreePort should return the port when the port is undefined: console messages 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is undefined > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -98,13 +126,19 @@ exports[`API Server.getFreePort should return the port when the port is undefine ] `; -exports[`API Server.getFreePort should return the port when the port is undefined: page errors 1`] = `[]`; +exports[`API > Server.getFreePort > should return the port when the port is undefined > page errors 1`] = ` +[] +`; -exports[`API Server.getFreePort should return the port when the port is undefined: response status 1`] = `200`; +exports[`API > Server.getFreePort > should return the port when the port is undefined > response status 1`] = ` +200 +`; -exports[`API Server.getFreePort should throw the error when the port isn't found 1`] = `"busy"`; +exports[`API > Server.getFreePort > should throw the error when the port isn't found 1`] = ` +"busy" +`; -exports[`API WEBPACK_SERVE environment variable should be present: console messages 1`] = ` +exports[`API > WEBPACK_SERVE environment variable > should be present > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -112,11 +146,15 @@ exports[`API WEBPACK_SERVE environment variable should be present: console messa ] `; -exports[`API WEBPACK_SERVE environment variable should be present: page errors 1`] = `[]`; +exports[`API > WEBPACK_SERVE environment variable > should be present > page errors 1`] = ` +[] +`; -exports[`API WEBPACK_SERVE environment variable should be present: response status 1`] = `200`; +exports[`API > WEBPACK_SERVE environment variable > should be present > response status 1`] = ` +200 +`; -exports[`API latest async API should work and allow to rerun dev server multiple times: console messages 1`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -124,7 +162,7 @@ exports[`API latest async API should work and allow to rerun dev server multiple ] `; -exports[`API latest async API should work and allow to rerun dev server multiple times: console messages 2`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -132,11 +170,15 @@ exports[`API latest async API should work and allow to rerun dev server multiple ] `; -exports[`API latest async API should work and allow to rerun dev server multiple times: page errors 1`] = `[]`; +exports[`API > latest async API > should work and allow to rerun dev server multiple times > page errors 1`] = ` +[] +`; -exports[`API latest async API should work and allow to rerun dev server multiple times: page errors 2`] = `[]`; +exports[`API > latest async API > should work and allow to rerun dev server multiple times > page errors 2`] = ` +[] +`; -exports[`API latest async API should work when using configured manually: console messages 1`] = ` +exports[`API > latest async API > should work when using configured manually > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -144,9 +186,11 @@ exports[`API latest async API should work when using configured manually: consol ] `; -exports[`API latest async API should work when using configured manually: page errors 1`] = `[]`; +exports[`API > latest async API > should work when using configured manually > page errors 1`] = ` +[] +`; -exports[`API latest async API should work with async API: console messages 1`] = ` +exports[`API > latest async API > should work with async API > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -154,9 +198,11 @@ exports[`API latest async API should work with async API: console messages 1`] = ] `; -exports[`API latest async API should work with async API: page errors 1`] = `[]`; +exports[`API > latest async API > should work with async API > page errors 1`] = ` +[] +`; -exports[`API latest async API should work with callback API: console messages 1`] = ` +exports[`API > latest async API > should work with callback API > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -164,4 +210,6 @@ exports[`API latest async API should work with callback API: console messages 1` ] `; -exports[`API latest async API should work with callback API: page errors 1`] = `[]`; +exports[`API > latest async API > should work with callback API > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 b/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 index 2ddbc8b934..bf04b05c2d 100644 --- a/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`bonjour option as object should apply bonjour options: console messages 1`] = ` +exports[`bonjour option > as object > should apply bonjour options > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,11 +6,15 @@ exports[`bonjour option as object should apply bonjour options: console messages ] `; -exports[`bonjour option as object should apply bonjour options: page errors 1`] = `[]`; +exports[`bonjour option > as object > should apply bonjour options > page errors 1`] = ` +[] +`; -exports[`bonjour option as object should apply bonjour options: response status 1`] = `200`; +exports[`bonjour option > as object > should apply bonjour options > response status 1`] = ` +200 +`; -exports[`bonjour option as true should call bonjour with correct params: console messages 1`] = ` +exports[`bonjour option > as true > should call bonjour with correct params > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -20,11 +22,15 @@ exports[`bonjour option as true should call bonjour with correct params: console ] `; -exports[`bonjour option as true should call bonjour with correct params: page errors 1`] = `[]`; +exports[`bonjour option > as true > should call bonjour with correct params > page errors 1`] = ` +[] +`; -exports[`bonjour option as true should call bonjour with correct params: response status 1`] = `200`; +exports[`bonjour option > as true > should call bonjour with correct params > response status 1`] = ` +200 +`; -exports[`bonjour option bonjour object and 'server' option should apply bonjour options: console messages 1`] = ` +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -32,11 +38,15 @@ exports[`bonjour option bonjour object and 'server' option should apply bonjour ] `; -exports[`bonjour option bonjour object and 'server' option should apply bonjour options: page errors 1`] = `[]`; +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > page errors 1`] = ` +[] +`; -exports[`bonjour option bonjour object and 'server' option should apply bonjour options: response status 1`] = `200`; +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > response status 1`] = ` +200 +`; -exports[`bonjour option with 'server' option should call bonjour with 'https' type: console messages 1`] = ` +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -44,6 +54,10 @@ exports[`bonjour option with 'server' option should call bonjour with 'https' ty ] `; -exports[`bonjour option with 'server' option should call bonjour with 'https' type: page errors 1`] = `[]`; +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > page errors 1`] = ` +[] +`; -exports[`bonjour option with 'server' option should call bonjour with 'https' type: response status 1`] = `200`; +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 b/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 index c3df0191d7..80133b0473 100644 --- a/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 @@ -1,8 +1,8 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`Built in routes with multi config should handle GET request to directory index and list all middleware directories: console messages 1`] = `[]`; +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > console messages 1`] = ` +[] +`; -exports[`Built in routes with multi config should handle GET request to directory index and list all middleware directories: directory list 1`] = ` +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > directory list 1`] = ` "

Assets Report:

Compilation: unnamed[0]

  • foo.js
  • @@ -14,15 +14,23 @@ exports[`Built in routes with multi config should handle GET request to director
" `; -exports[`Built in routes with multi config should handle GET request to directory index and list all middleware directories: page errors 1`] = `[]`; +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > page errors 1`] = ` +[] +`; -exports[`Built in routes with multi config should handle GET request to directory index and list all middleware directories: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`Built in routes with multi config should handle GET request to directory index and list all middleware directories: response status 1`] = `200`; +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > response status 1`] = ` +200 +`; -exports[`Built in routes with simple config should handle GET request to directory index and list all middleware directories: console messages 1`] = `[]`; +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > console messages 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle GET request to directory index and list all middleware directories: directory list 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > directory list 1`] = ` "

Assets Report:

Compilation: unnamed

  • main.js
  • @@ -32,36 +40,70 @@ exports[`Built in routes with simple config should handle GET request to directo
" `; -exports[`Built in routes with simple config should handle GET request to directory index and list all middleware directories: page errors 1`] = `[]`; +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > page errors 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle GET request to directory index and list all middleware directories: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`Built in routes with simple config should handle GET request to directory index and list all middleware directories: response status 1`] = `200`; +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > response status 1`] = ` +200 +`; -exports[`Built in routes with simple config should handle GET request to invalidate endpoint: console messages 1`] = `[]`; +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > console messages 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle GET request to invalidate endpoint: page errors 1`] = `[]`; +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > page errors 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle GET request to invalidate endpoint: response status 1`] = `200`; +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > response status 1`] = ` +200 +`; -exports[`Built in routes with simple config should handle GET request to magic async chunk: console messages 1`] = `[]`; +exports[`Built in routes > with simple config > should handle GET request to magic async chunk > console messages 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle GET request to magic async chunk: response headers content-type 1`] = `"text/javascript; charset=utf-8"`; +exports[`Built in routes > with simple config > should handle GET request to magic async chunk > response headers content-type 1`] = ` +"text/javascript; charset=utf-8" +`; -exports[`Built in routes with simple config should handle GET request to magic async chunk: response status 1`] = `200`; +exports[`Built in routes > with simple config > should handle GET request to magic async chunk > response status 1`] = ` +200 +`; -exports[`Built in routes with simple config should handle HEAD request to directory index: console messages 1`] = `[]`; +exports[`Built in routes > with simple config > should handle HEAD request to directory index > console messages 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle HEAD request to directory index: directory list 1`] = `""`; +exports[`Built in routes > with simple config > should handle HEAD request to directory index > directory list 1`] = ` +"" +`; -exports[`Built in routes with simple config should handle HEAD request to directory index: page errors 1`] = `[]`; +exports[`Built in routes > with simple config > should handle HEAD request to directory index > page errors 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle HEAD request to directory index: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`Built in routes > with simple config > should handle HEAD request to directory index > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`Built in routes with simple config should handle HEAD request to directory index: response status 1`] = `200`; +exports[`Built in routes > with simple config > should handle HEAD request to directory index > response status 1`] = ` +200 +`; -exports[`Built in routes with simple config should handle HEAD request to magic async chunk: console messages 1`] = `[]`; +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > console messages 1`] = ` +[] +`; -exports[`Built in routes with simple config should handle HEAD request to magic async chunk: response headers content-type 1`] = `"text/javascript; charset=utf-8"`; +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response headers content-type 1`] = ` +"text/javascript; charset=utf-8" +`; -exports[`Built in routes with simple config should handle HEAD request to magic async chunk: response status 1`] = `200`; +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 b/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 index d043471d44..b5653f67b0 100644 --- a/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`client.reconnect option specified as false should not try to reconnect: console messages 1`] = ` +exports[`client.reconnect option > specified as false > should not try to reconnect > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -9,11 +7,15 @@ exports[`client.reconnect option specified as false should not try to reconnect: ] `; -exports[`client.reconnect option specified as false should not try to reconnect: page errors 1`] = `[]`; +exports[`client.reconnect option > specified as false > should not try to reconnect > page errors 1`] = ` +[] +`; -exports[`client.reconnect option specified as false should not try to reconnect: response status 1`] = `200`; +exports[`client.reconnect option > specified as false > should not try to reconnect > response status 1`] = ` +200 +`; -exports[`client.reconnect option specified as number should try to reconnect 2 times: console messages 1`] = ` +exports[`client.reconnect option > specified as number > should try to reconnect 2 times > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,10 +30,18 @@ exports[`client.reconnect option specified as number should try to reconnect 2 t ] `; -exports[`client.reconnect option specified as number should try to reconnect 2 times: page errors 1`] = `[]`; +exports[`client.reconnect option > specified as number > should try to reconnect 2 times > page errors 1`] = ` +[] +`; -exports[`client.reconnect option specified as number should try to reconnect 2 times: response status 1`] = `200`; +exports[`client.reconnect option > specified as number > should try to reconnect 2 times > response status 1`] = ` +200 +`; -exports[`client.reconnect option specified as true should try to reconnect unlimited times: page errors 1`] = `[]`; +exports[`client.reconnect option > specified as true > should try to reconnect unlimited times > page errors 1`] = ` +[] +`; -exports[`client.reconnect option specified as true should try to reconnect unlimited times: response status 1`] = `200`; +exports[`client.reconnect option > specified as true > should try to reconnect unlimited times > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/client.test.js.snap.webpack5 b/test/e2e/__snapshots__/client.test.js.snap.webpack5 index 5e818f99ca..e89511fadc 100644 --- a/test/e2e/__snapshots__/client.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/client.test.js.snap.webpack5 @@ -1,14 +1,20 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`client option configure client entry should disable client entry: console messages 1`] = `[]`; +exports[`client option > configure client entry > should disable client entry > console messages 1`] = ` +[] +`; -exports[`client option configure client entry should disable client entry: page errors 1`] = `[]`; +exports[`client option > configure client entry > should disable client entry > page errors 1`] = ` +[] +`; -exports[`client option configure client entry should disable client entry: response status 1`] = `200`; +exports[`client option > configure client entry > should disable client entry > response status 1`] = ` +200 +`; -exports[`client option configure client entry should disable client entry: webSockets 1`] = `[]`; +exports[`client option > configure client entry > should disable client entry > webSockets 1`] = ` +[] +`; -exports[`client option default behaviour responds with a 200 status code for / path: console messages 1`] = ` +exports[`client option > default behaviour > responds with a 200 status code for / path > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -16,19 +22,25 @@ exports[`client option default behaviour responds with a 200 status code for / p ] `; -exports[`client option default behaviour responds with a 200 status code for / path: page errors 1`] = `[]`; +exports[`client option > default behaviour > responds with a 200 status code for / path > page errors 1`] = ` +[] +`; -exports[`client option default behaviour responds with a 200 status code for / path: response status 1`] = `200`; +exports[`client option > default behaviour > responds with a 200 status code for / path > response status 1`] = ` +200 +`; -exports[`client option default behaviour responds with a 200 status code for / path: webSockets 1`] = ` +exports[`client option > default behaviour > responds with a 200 status code for / path > webSockets 1`] = ` [ "ws://localhost:8104/ws", ] `; -exports[`client option override client entry should disable client entry: response status 1`] = `200`; +exports[`client option > override client entry > should disable client entry > response status 1`] = ` +200 +`; -exports[`client option should respect path option responds with a websocket with the /foo/test/bar path: console messages 1`] = ` +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -36,9 +48,11 @@ exports[`client option should respect path option responds with a websocket with ] `; -exports[`client option should respect path option responds with a websocket with the /foo/test/bar path: page errors 1`] = `[]`; +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > page errors 1`] = ` +[] +`; -exports[`client option should respect path option responds with a websocket with the /foo/test/bar path: webSockets 1`] = ` +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > webSockets 1`] = ` [ "ws://localhost:8104/foo/test/bar", ] diff --git a/test/e2e/__snapshots__/compress.test.js.snap.webpack5 b/test/e2e/__snapshots__/compress.test.js.snap.webpack5 index 306717f6a9..e1303160b9 100644 --- a/test/e2e/__snapshots__/compress.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/compress.test.js.snap.webpack5 @@ -1,25 +1,47 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`compress option > as false > should handle GET request to bundle file > console messages 1`] = ` +[] +`; -exports[`compress option as false should handle GET request to bundle file: console messages 1`] = `[]`; +exports[`compress option > as false > should handle GET request to bundle file > page errors 1`] = ` +[] +`; -exports[`compress option as false should handle GET request to bundle file: page errors 1`] = `[]`; +exports[`compress option > as false > should handle GET request to bundle file > response headers content-encoding 1`] = ` +undefined +`; -exports[`compress option as false should handle GET request to bundle file: response headers content-encoding 1`] = `undefined`; +exports[`compress option > as false > should handle GET request to bundle file > response status 1`] = ` +200 +`; -exports[`compress option as false should handle GET request to bundle file: response status 1`] = `200`; +exports[`compress option > as true > should handle GET request to bundle file > console messages 1`] = ` +[] +`; -exports[`compress option as true should handle GET request to bundle file: console messages 1`] = `[]`; +exports[`compress option > as true > should handle GET request to bundle file > page errors 1`] = ` +[] +`; -exports[`compress option as true should handle GET request to bundle file: page errors 1`] = `[]`; +exports[`compress option > as true > should handle GET request to bundle file > response headers content-encoding 1`] = ` +"br" +`; -exports[`compress option as true should handle GET request to bundle file: response headers content-encoding 1`] = `"br"`; +exports[`compress option > as true > should handle GET request to bundle file > response status 1`] = ` +200 +`; -exports[`compress option as true should handle GET request to bundle file: response status 1`] = `200`; +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > console messages 1`] = ` +[] +`; -exports[`compress option enabled by default when not specified should handle GET request to bundle file: console messages 1`] = `[]`; +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > page errors 1`] = ` +[] +`; -exports[`compress option enabled by default when not specified should handle GET request to bundle file: page errors 1`] = `[]`; +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > response headers content-encoding 1`] = ` +"br" +`; -exports[`compress option enabled by default when not specified should handle GET request to bundle file: response headers content-encoding 1`] = `"br"`; - -exports[`compress option enabled by default when not specified should handle GET request to bundle file: response status 1`] = `200`; +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/entry.test.js.snap.webpack5 b/test/e2e/__snapshots__/entry.test.js.snap.webpack5 index 9c5547bbce..ab49928092 100644 --- a/test/e2e/__snapshots__/entry.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/entry.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`entry should work with dynamic async entry: console messages 1`] = ` +exports[`entry > should work with dynamic async entry > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,9 +6,11 @@ exports[`entry should work with dynamic async entry: console messages 1`] = ` ] `; -exports[`entry should work with dynamic async entry: page errors 1`] = `[]`; +exports[`entry > should work with dynamic async entry > page errors 1`] = ` +[] +`; -exports[`entry should work with dynamic entry: console messages 1`] = ` +exports[`entry > should work with dynamic entry > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,9 +18,11 @@ exports[`entry should work with dynamic entry: console messages 1`] = ` ] `; -exports[`entry should work with dynamic entry: page errors 1`] = `[]`; +exports[`entry > should work with dynamic entry > page errors 1`] = ` +[] +`; -exports[`entry should work with empty: console messages 1`] = ` +exports[`entry > should work with empty > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,9 +30,11 @@ exports[`entry should work with empty: console messages 1`] = ` ] `; -exports[`entry should work with empty: page errors 1`] = `[]`; +exports[`entry > should work with empty > page errors 1`] = ` +[] +`; -exports[`entry should work with multiple entries #2: console messages 1`] = ` +exports[`entry > should work with multiple entries #2 > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,9 +42,11 @@ exports[`entry should work with multiple entries #2: console messages 1`] = ` ] `; -exports[`entry should work with multiple entries #2: page errors 1`] = `[]`; +exports[`entry > should work with multiple entries #2 > page errors 1`] = ` +[] +`; -exports[`entry should work with multiple entries and "dependOn": console messages 1`] = ` +exports[`entry > should work with multiple entries and "dependOn" > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -49,9 +55,11 @@ exports[`entry should work with multiple entries and "dependOn": console message ] `; -exports[`entry should work with multiple entries and "dependOn": page errors 1`] = `[]`; +exports[`entry > should work with multiple entries and "dependOn" > page errors 1`] = ` +[] +`; -exports[`entry should work with multiple entries: console messages 1`] = ` +exports[`entry > should work with multiple entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -59,9 +67,11 @@ exports[`entry should work with multiple entries: console messages 1`] = ` ] `; -exports[`entry should work with multiple entries: page errors 1`] = `[]`; +exports[`entry > should work with multiple entries > page errors 1`] = ` +[] +`; -exports[`entry should work with object entry: console messages 1`] = ` +exports[`entry > should work with object entry > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -69,9 +79,11 @@ exports[`entry should work with object entry: console messages 1`] = ` ] `; -exports[`entry should work with object entry: page errors 1`] = `[]`; +exports[`entry > should work with object entry > page errors 1`] = ` +[] +`; -exports[`entry should work with single array entry: console messages 1`] = ` +exports[`entry > should work with single array entry > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -80,9 +92,11 @@ exports[`entry should work with single array entry: console messages 1`] = ` ] `; -exports[`entry should work with single array entry: page errors 1`] = `[]`; +exports[`entry > should work with single array entry > page errors 1`] = ` +[] +`; -exports[`entry should work with single entry: console messages 1`] = ` +exports[`entry > should work with single entry > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -90,4 +104,6 @@ exports[`entry should work with single entry: console messages 1`] = ` ] `; -exports[`entry should work with single entry: page errors 1`] = `[]`; +exports[`entry > should work with single entry > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/headers.test.js.snap.webpack5 b/test/e2e/__snapshots__/headers.test.js.snap.webpack5 index b8141019c5..d57a884404 100644 --- a/test/e2e/__snapshots__/headers.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/headers.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`headers option as a function returning an array should handle GET request with headers: console messages 1`] = ` +exports[`headers option > as a function returning an array > should handle GET request with headers > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,15 +6,23 @@ exports[`headers option as a function returning an array should handle GET reque ] `; -exports[`headers option as a function returning an array should handle GET request with headers: page errors 1`] = `[]`; +exports[`headers option > as a function returning an array > should handle GET request with headers > page errors 1`] = ` +[] +`; -exports[`headers option as a function returning an array should handle GET request with headers: response headers x-bar 1`] = `"value2"`; +exports[`headers option > as a function returning an array > should handle GET request with headers > response headers x-bar 1`] = ` +"value2" +`; -exports[`headers option as a function returning an array should handle GET request with headers: response headers x-foo 1`] = `"value1"`; +exports[`headers option > as a function returning an array > should handle GET request with headers > response headers x-foo 1`] = ` +"value1" +`; -exports[`headers option as a function returning an array should handle GET request with headers: response status 1`] = `200`; +exports[`headers option > as a function returning an array > should handle GET request with headers > response status 1`] = ` +200 +`; -exports[`headers option as a function should handle GET request with headers as a function: console messages 1`] = ` +exports[`headers option > as a function > should handle GET request with headers as a function > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -24,16 +30,20 @@ exports[`headers option as a function should handle GET request with headers as ] `; -exports[`headers option as a function should handle GET request with headers as a function: page errors 1`] = `[]`; +exports[`headers option > as a function > should handle GET request with headers as a function > page errors 1`] = ` +[] +`; -exports[`headers option as a function should handle GET request with headers as a function: response headers x-bar 1`] = ` +exports[`headers option > as a function > should handle GET request with headers as a function > response headers x-bar 1`] = ` "key1=value1 key2=value2" `; -exports[`headers option as a function should handle GET request with headers as a function: response status 1`] = `200`; +exports[`headers option > as a function > should handle GET request with headers as a function > response status 1`] = ` +200 +`; -exports[`headers option as a string and support HEAD request should handle HEAD request with headers: console messages 1`] = ` +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -41,13 +51,19 @@ exports[`headers option as a string and support HEAD request should handle HEAD ] `; -exports[`headers option as a string and support HEAD request should handle HEAD request with headers: page errors 1`] = `[]`; +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > page errors 1`] = ` +[] +`; -exports[`headers option as a string and support HEAD request should handle HEAD request with headers: response headers x-foo 1`] = `"dev-server headers"`; +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > response headers x-foo 1`] = ` +"dev-server headers" +`; -exports[`headers option as a string and support HEAD request should handle HEAD request with headers: response status 1`] = `200`; +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > response status 1`] = ` +200 +`; -exports[`headers option as a string should handle GET request with headers: console messages 1`] = ` +exports[`headers option > as a string > should handle GET request with headers > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -55,13 +71,19 @@ exports[`headers option as a string should handle GET request with headers: cons ] `; -exports[`headers option as a string should handle GET request with headers: page errors 1`] = `[]`; +exports[`headers option > as a string > should handle GET request with headers > page errors 1`] = ` +[] +`; -exports[`headers option as a string should handle GET request with headers: response headers x-foo 1`] = `"dev-server headers"`; +exports[`headers option > as a string > should handle GET request with headers > response headers x-foo 1`] = ` +"dev-server headers" +`; -exports[`headers option as a string should handle GET request with headers: response status 1`] = `200`; +exports[`headers option > as a string > should handle GET request with headers > response status 1`] = ` +200 +`; -exports[`headers option as an array of objects should handle GET request with headers: console messages 1`] = ` +exports[`headers option > as an array of objects > should handle GET request with headers > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -69,15 +91,23 @@ exports[`headers option as an array of objects should handle GET request with he ] `; -exports[`headers option as an array of objects should handle GET request with headers: page errors 1`] = `[]`; +exports[`headers option > as an array of objects > should handle GET request with headers > page errors 1`] = ` +[] +`; -exports[`headers option as an array of objects should handle GET request with headers: response headers x-bar 1`] = `"value2"`; +exports[`headers option > as an array of objects > should handle GET request with headers > response headers x-bar 1`] = ` +"value2" +`; -exports[`headers option as an array of objects should handle GET request with headers: response headers x-foo 1`] = `"value1"`; +exports[`headers option > as an array of objects > should handle GET request with headers > response headers x-foo 1`] = ` +"value1" +`; -exports[`headers option as an array of objects should handle GET request with headers: response status 1`] = `200`; +exports[`headers option > as an array of objects > should handle GET request with headers > response status 1`] = ` +200 +`; -exports[`headers option as an array should handle GET request with headers as an array: console messages 1`] = ` +exports[`headers option > as an array > should handle GET request with headers as an array > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -85,16 +115,20 @@ exports[`headers option as an array should handle GET request with headers as an ] `; -exports[`headers option as an array should handle GET request with headers as an array: page errors 1`] = `[]`; +exports[`headers option > as an array > should handle GET request with headers as an array > page errors 1`] = ` +[] +`; -exports[`headers option as an array should handle GET request with headers as an array: response headers x-bar 1`] = ` +exports[`headers option > as an array > should handle GET request with headers as an array > response headers x-bar 1`] = ` "key1=value1 key2=value2" `; -exports[`headers option as an array should handle GET request with headers as an array: response status 1`] = `200`; +exports[`headers option > as an array > should handle GET request with headers as an array > response status 1`] = ` +200 +`; -exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: console messages 1`] = ` +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -102,8 +136,14 @@ exports[`headers option dev middleware headers take precedence for dev middlewar ] `; -exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: page errors 1`] = `[]`; +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > page errors 1`] = ` +[] +`; -exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response headers x-foo 1`] = `"dev-middleware-headers"`; +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > response headers x-foo 1`] = ` +"dev-middleware-headers" +`; -exports[`headers option dev middleware headers take precedence for dev middleware output files should handle GET request with headers as a function: response status 1`] = `200`; +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 b/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 index 5490dc26d5..61ea5f2741 100644 --- a/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 @@ -1,153 +1,243 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`historyApiFallback option as boolean should handle GET request to directory: console messages 1`] = `[]`; +exports[`historyApiFallback option > as boolean > should handle GET request to directory > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as boolean should handle GET request to directory: page errors 1`] = `[]`; +exports[`historyApiFallback option > as boolean > should handle GET request to directory > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as boolean should handle GET request to directory: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as boolean > should handle GET request to directory > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as boolean should handle GET request to directory: response status 1`] = `200`; +exports[`historyApiFallback option > as boolean > should handle GET request to directory > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as boolean should handle GET request to directory: response text 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory > response text 1`] = ` "Heyyy " `; -exports[`historyApiFallback option as object should handle GET request to directory: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object > should handle GET request to directory > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object should handle GET request to directory: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object > should handle GET request to directory > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object should handle GET request to directory: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object > should handle GET request to directory > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object should handle GET request to directory: response status 1`] = `200`; +exports[`historyApiFallback option > as object > should handle GET request to directory > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object should handle GET request to directory: response text 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect any other specified rewrites: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect any other specified rewrites: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect any other specified rewrites: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect any other specified rewrites: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect any other specified rewrites: response text 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response text 1`] = ` "Other file " `; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites and shows index for unknown urls: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites and shows index for unknown urls: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites and shows index for unknown urls: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites and shows index for unknown urls: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites and shows index for unknown urls: response text 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites for index: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites for index: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites for index: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites for index: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static and rewrites historyApiFallback respect rewrites for index: response text 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option as object with static set to false historyApiFallback should work and ignore static content: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static set to false historyApiFallback should work and ignore static content: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static set to false historyApiFallback should work and ignore static content: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with static set to false historyApiFallback should work and ignore static content: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static set to false historyApiFallback should work and ignore static content: response text 1`] = ` +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response text 1`] = ` "In-memory file " `; -exports[`historyApiFallback option as object with static should handle GET request to directory: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static > should handle GET request to directory > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static should handle GET request to directory: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static > should handle GET request to directory > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static should handle GET request to directory: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with static > should handle GET request to directory > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with static should handle GET request to directory: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static > should handle GET request to directory > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static should handle GET request to directory: response text 1`] = ` +exports[`historyApiFallback option > as object with static > should handle GET request to directory > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option as object with static should prefer static file over historyApiFallback: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static should prefer static file over historyApiFallback: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with static should prefer static file over historyApiFallback: response headers content-type 1`] = `"text/plain; charset=utf-8"`; +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response headers content-type 1`] = ` +"text/plain; charset=utf-8" +`; -exports[`historyApiFallback option as object with static should prefer static file over historyApiFallback: response status 1`] = `200`; +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with static should prefer static file over historyApiFallback: response text 1`] = ` +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response text 1`] = ` "Random file " `; -exports[`historyApiFallback option as object with the "logger" option request to directory and log: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with the "logger" option request to directory and log: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with the "logger" option request to directory and log: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with the "logger" option request to directory and log: response status 1`] = `200`; +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with the "logger" option request to directory and log: response text 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option as object with the "verbose" option request to directory and log: console messages 1`] = `[]`; +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option as object with the "verbose" option request to directory and log: page errors 1`] = `[]`; +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option as object with the "verbose" option request to directory and log: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option as object with the "verbose" option request to directory and log: response status 1`] = `200`; +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response status 1`] = ` +200 +`; -exports[`historyApiFallback option as object with the "verbose" option request to directory and log: response text 1`] = ` +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response text 1`] = ` "Foobar " `; -exports[`historyApiFallback option in-memory files should perform HEAD request in same way as GET: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option in-memory files should perform HEAD request in same way as GET: response status 1`] = `"OK"`; +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response status 1`] = ` +"OK" +`; -exports[`historyApiFallback option in-memory files should perform HEAD request in same way as GET: response text 1`] = ` +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response text 1`] = ` "In-memory file " `; -exports[`historyApiFallback option in-memory files should take precedence over static files: console messages 1`] = `[]`; +exports[`historyApiFallback option > in-memory files > should take precedence over static files > console messages 1`] = ` +[] +`; -exports[`historyApiFallback option in-memory files should take precedence over static files: page errors 1`] = `[]`; +exports[`historyApiFallback option > in-memory files > should take precedence over static files > page errors 1`] = ` +[] +`; -exports[`historyApiFallback option in-memory files should take precedence over static files: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`historyApiFallback option > in-memory files > should take precedence over static files > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`historyApiFallback option in-memory files should take precedence over static files: response status 1`] = `200`; +exports[`historyApiFallback option > in-memory files > should take precedence over static files > response status 1`] = ` +200 +`; -exports[`historyApiFallback option in-memory files should take precedence over static files: response text 1`] = ` +exports[`historyApiFallback option > in-memory files > should take precedence over static files > response text 1`] = ` "In-memory file " `; diff --git a/test/e2e/__snapshots__/host.test.js.snap.webpack5 b/test/e2e/__snapshots__/host.test.js.snap.webpack5 index 69c627cdb0..8008e4e679 100644 --- a/test/e2e/__snapshots__/host.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/host.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`host should work using "::" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "::" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,9 +6,11 @@ exports[`host should work using "::" host and "auto" port: console messages 1`] ] `; -exports[`host should work using "::" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "::" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "::" host and port as number: console messages 1`] = ` +exports[`host > should work using "::" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,9 +18,11 @@ exports[`host should work using "::" host and port as number: console messages 1 ] `; -exports[`host should work using "::" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "::" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "::" host and port as string: console messages 1`] = ` +exports[`host > should work using "::" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,9 +30,11 @@ exports[`host should work using "::" host and port as string: console messages 1 ] `; -exports[`host should work using "::" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "::" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "::1" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "::1" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,9 +42,11 @@ exports[`host should work using "::1" host and "auto" port: console messages 1`] ] `; -exports[`host should work using "::1" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "::1" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "::1" host and port as number: console messages 1`] = ` +exports[`host > should work using "::1" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -48,9 +54,11 @@ exports[`host should work using "::1" host and port as number: console messages ] `; -exports[`host should work using "::1" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "::1" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "::1" host and port as string: console messages 1`] = ` +exports[`host > should work using "::1" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -58,9 +66,11 @@ exports[`host should work using "::1" host and port as string: console messages ] `; -exports[`host should work using "::1" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "::1" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -68,9 +78,11 @@ exports[`host should work using "" host and "auto" port: console ] `; -exports[`host should work using "" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "" host and port as number: console messages 1`] = ` +exports[`host > should work using "" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -78,9 +90,11 @@ exports[`host should work using "" host and port as number: conso ] `; -exports[`host should work using "" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "" host and port as string: console messages 1`] = ` +exports[`host > should work using "" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -88,9 +102,11 @@ exports[`host should work using "" host and port as string: conso ] `; -exports[`host should work using "" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "0.0.0.0" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -98,9 +114,11 @@ exports[`host should work using "0.0.0.0" host and "auto" port: console messages ] `; -exports[`host should work using "0.0.0.0" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "0.0.0.0" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "0.0.0.0" host and port as number: console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -108,9 +126,11 @@ exports[`host should work using "0.0.0.0" host and port as number: console messa ] `; -exports[`host should work using "0.0.0.0" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "0.0.0.0" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "0.0.0.0" host and port as string: console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -118,9 +138,11 @@ exports[`host should work using "0.0.0.0" host and port as string: console messa ] `; -exports[`host should work using "0.0.0.0" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "0.0.0.0" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "127.0.0.1" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -128,9 +150,11 @@ exports[`host should work using "127.0.0.1" host and "auto" port: console messag ] `; -exports[`host should work using "127.0.0.1" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "127.0.0.1" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "127.0.0.1" host and port as number: console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -138,9 +162,11 @@ exports[`host should work using "127.0.0.1" host and port as number: console mes ] `; -exports[`host should work using "127.0.0.1" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "127.0.0.1" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "127.0.0.1" host and port as string: console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -148,9 +174,11 @@ exports[`host should work using "127.0.0.1" host and port as string: console mes ] `; -exports[`host should work using "127.0.0.1" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "127.0.0.1" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ip" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "local-ip" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -158,9 +186,11 @@ exports[`host should work using "local-ip" host and "auto" port: console message ] `; -exports[`host should work using "local-ip" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "local-ip" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ip" host and port as number: console messages 1`] = ` +exports[`host > should work using "local-ip" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -168,9 +198,11 @@ exports[`host should work using "local-ip" host and port as number: console mess ] `; -exports[`host should work using "local-ip" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "local-ip" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ip" host and port as string: console messages 1`] = ` +exports[`host > should work using "local-ip" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -178,9 +210,11 @@ exports[`host should work using "local-ip" host and port as string: console mess ] `; -exports[`host should work using "local-ip" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "local-ip" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv4" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -188,9 +222,11 @@ exports[`host should work using "local-ipv4" host and "auto" port: console messa ] `; -exports[`host should work using "local-ipv4" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv4" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv4" host and port as number: console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -198,9 +234,11 @@ exports[`host should work using "local-ipv4" host and port as number: console me ] `; -exports[`host should work using "local-ipv4" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv4" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv4" host and port as string: console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -208,9 +246,11 @@ exports[`host should work using "local-ipv4" host and port as string: console me ] `; -exports[`host should work using "local-ipv4" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv4" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv6" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -218,9 +258,11 @@ exports[`host should work using "local-ipv6" host and "auto" port: console messa ] `; -exports[`host should work using "local-ipv6" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv6" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv6" host and port as number: console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -228,9 +270,11 @@ exports[`host should work using "local-ipv6" host and port as number: console me ] `; -exports[`host should work using "local-ipv6" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv6" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "local-ipv6" host and port as string: console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -238,9 +282,11 @@ exports[`host should work using "local-ipv6" host and port as string: console me ] `; -exports[`host should work using "local-ipv6" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "local-ipv6" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "localhost" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "localhost" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -248,9 +294,11 @@ exports[`host should work using "localhost" host and "auto" port: console messag ] `; -exports[`host should work using "localhost" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "localhost" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "localhost" host and port as number: console messages 1`] = ` +exports[`host > should work using "localhost" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -258,9 +306,11 @@ exports[`host should work using "localhost" host and port as number: console mes ] `; -exports[`host should work using "localhost" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "localhost" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "localhost" host and port as string: console messages 1`] = ` +exports[`host > should work using "localhost" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -268,9 +318,11 @@ exports[`host should work using "localhost" host and port as string: console mes ] `; -exports[`host should work using "localhost" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "localhost" host and port as string > page errors 1`] = ` +[] +`; -exports[`host should work using "undefined" host and "auto" port: console messages 1`] = ` +exports[`host > should work using "undefined" host and "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -278,9 +330,11 @@ exports[`host should work using "undefined" host and "auto" port: console messag ] `; -exports[`host should work using "undefined" host and "auto" port: page errors 1`] = `[]`; +exports[`host > should work using "undefined" host and "auto" port > page errors 1`] = ` +[] +`; -exports[`host should work using "undefined" host and port as number: console messages 1`] = ` +exports[`host > should work using "undefined" host and port as number > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -288,9 +342,11 @@ exports[`host should work using "undefined" host and port as number: console mes ] `; -exports[`host should work using "undefined" host and port as number: page errors 1`] = `[]`; +exports[`host > should work using "undefined" host and port as number > page errors 1`] = ` +[] +`; -exports[`host should work using "undefined" host and port as string: console messages 1`] = ` +exports[`host > should work using "undefined" host and port as string > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -298,4 +354,6 @@ exports[`host should work using "undefined" host and port as string: console mes ] `; -exports[`host should work using "undefined" host and port as string: page errors 1`] = `[]`; +exports[`host > should work using "undefined" host and port as string > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 b/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 index eb184786fa..e45edfddaa 100644 --- a/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 @@ -1,24 +1,26 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`hot and live reload should not refresh content when hot and no live reload disabled (default): console messages 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload should not refresh content when hot and no live reload disabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should not refresh content when hot and no live reload disabled (ws): console messages 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload should not refresh content when hot and no live reload disabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default): console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -26,9 +28,11 @@ exports[`hot and live reload should work and allow to disable hot module replace ] `; -exports[`hot and live reload should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default): console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -39,22 +43,30 @@ exports[`hot and live reload should work and allow to disable hot module replace ] `; -exports[`hot and live reload should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default): console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and do nothing when web socket server disabled (default): console messages 1`] = `[]`; +exports[`hot and live reload > should work and do nothing when web socket server disabled (default) > console messages 1`] = ` +[] +`; -exports[`hot and live reload should work and do nothing when web socket server disabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and do nothing when web socket server disabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -69,9 +81,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when hot enabled (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -86,9 +100,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when hot enabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when hot enabled (ws): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -103,9 +119,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when hot enabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload and hot enabled (ws): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -120,9 +138,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload and hot enabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload disabled and hot enabled (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -137,9 +157,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload disabled and hot enabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -154,9 +176,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -171,9 +195,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled (ws): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -188,9 +214,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled and hot disabled (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -205,9 +233,11 @@ exports[`hot and live reload should work and refresh content using hot module re ] `; -exports[`hot and live reload should work and refresh content using hot module replacement when live reload enabled and hot disabled (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using live reload (default): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -216,9 +246,11 @@ exports[`hot and live reload should work and refresh content using live reload ( ] `; -exports[`hot and live reload should work and refresh content using live reload (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using live reload (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work and refresh content using live reload when live reload enabled and hot disabled (ws): console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -227,9 +259,11 @@ exports[`hot and live reload should work and refresh content using live reload w ] `; -exports[`hot and live reload should work and refresh content using live reload when live reload enabled and hot disabled (ws): page errors 1`] = `[]`; +exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work with manual client setup (default): console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup (default) > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -244,9 +278,11 @@ exports[`hot and live reload should work with manual client setup (default): con ] `; -exports[`hot and live reload should work with manual client setup (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work with manual client setup (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work with manual client setup and allow to disable hot module replacement (default): console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -257,18 +293,22 @@ exports[`hot and live reload should work with manual client setup and allow to d ] `; -exports[`hot and live reload should work with manual client setup and allow to disable hot module replacement (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work with manual client setup and allow to disable live reload (default): console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload should work with manual client setup and allow to disable live reload (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work with manual client setup and allow to enable hot module replacement (default): console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -283,9 +323,11 @@ exports[`hot and live reload should work with manual client setup and allow to e ] `; -exports[`hot and live reload should work with manual client setup and allow to enable hot module replacement (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) > page errors 1`] = ` +[] +`; -exports[`hot and live reload should work with manual client setup and allow to enable live reload (default): console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay disabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -294,20 +336,26 @@ exports[`hot and live reload should work with manual client setup and allow to e ] `; -exports[`hot and live reload should work with manual client setup and allow to enable live reload (default): page errors 1`] = `[]`; +exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) > page errors 1`] = ` +[] +`; -exports[`hot disabled HMR plugin should NOT register the HMR plugin before compilation is complete: console messages 1`] = ` +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hey.", ] `; -exports[`hot disabled HMR plugin should NOT register the HMR plugin before compilation is complete: page errors 1`] = `[]`; +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > page errors 1`] = ` +[] +`; -exports[`hot disabled HMR plugin should NOT register the HMR plugin before compilation is complete: response status 1`] = `200`; +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > response status 1`] = ` +200 +`; -exports[`multi compiler hot config HMR plugin should register the HMR plugin before compilation is complete: console messages 1`] = ` +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -315,11 +363,15 @@ exports[`multi compiler hot config HMR plugin should register the HMR plugin bef ] `; -exports[`multi compiler hot config HMR plugin should register the HMR plugin before compilation is complete: page errors 1`] = `[]`; +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +[] +`; -exports[`multi compiler hot config HMR plugin should register the HMR plugin before compilation is complete: response status 1`] = `200`; +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` +200 +`; -exports[`simple hot config HMR plugin should register the HMR plugin before compilation is complete: console messages 1`] = ` +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -327,11 +379,15 @@ exports[`simple hot config HMR plugin should register the HMR plugin before comp ] `; -exports[`simple hot config HMR plugin should register the HMR plugin before compilation is complete: page errors 1`] = `[]`; +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +[] +`; -exports[`simple hot config HMR plugin should register the HMR plugin before compilation is complete: response status 1`] = `200`; +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` +200 +`; -exports[`simple hot config HMR plugin with already added HMR plugin should register the HMR plugin before compilation is complete: console messages 1`] = ` +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -339,6 +395,10 @@ exports[`simple hot config HMR plugin with already added HMR plugin should regis ] `; -exports[`simple hot config HMR plugin with already added HMR plugin should register the HMR plugin before compilation is complete: page errors 1`] = `[]`; +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +[] +`; -exports[`simple hot config HMR plugin with already added HMR plugin should register the HMR plugin before compilation is complete: response status 1`] = `200`; +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 b/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 index bf7ab3e4da..a2d05bcb88 100644 --- a/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`web socket server URL should work with the "ipc" option using "string" value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,9 +6,11 @@ exports[`web socket server URL should work with the "ipc" option using "string" ] `; -exports[`web socket server URL should work with the "ipc" option using "string" value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "ipc" option using "true" value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,4 +18,6 @@ exports[`web socket server URL should work with the "ipc" option using "true" va ] `; -exports[`web socket server URL should work with the "ipc" option using "true" value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/logging.test.js.snap.webpack5 b/test/e2e/__snapshots__/logging.test.js.snap.webpack5 index 4c8cc479f7..2ed213cbd4 100644 --- a/test/e2e/__snapshots__/logging.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/logging.test.js.snap.webpack5 @@ -1,13 +1,11 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`logging should work and do not log messages about hot and live reloading is enabled (ws) 1`] = ` +exports[`logging > should work and do not log messages about hot and live reloading is enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "Hey.", ] `; -exports[`logging should work and log errors by default (ws) 1`] = ` +exports[`logging > should work and log errors by default (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,14 +16,14 @@ Error from compilation", ] `; -exports[`logging should work and log message about live reloading is enabled (ws) 1`] = ` +exports[`logging > should work and log message about live reloading is enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hey.", ] `; -exports[`logging should work and log messages about hot and live reloading is enabled (ws) 1`] = ` +exports[`logging > should work and log messages about hot and live reloading is enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -33,7 +31,7 @@ exports[`logging should work and log messages about hot and live reloading is en ] `; -exports[`logging should work and log messages about hot and live reloading is enabled (ws) 2`] = ` +exports[`logging > should work and log messages about hot and live reloading is enabled (ws) 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -41,7 +39,7 @@ exports[`logging should work and log messages about hot and live reloading is en ] `; -exports[`logging should work and log messages about hot and live reloading is enabled (ws) 3`] = ` +exports[`logging > should work and log messages about hot and live reloading is enabled (ws) 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -49,7 +47,7 @@ exports[`logging should work and log messages about hot and live reloading is en ] `; -exports[`logging should work and log messages about hot is enabled (ws) 1`] = ` +exports[`logging > should work and log messages about hot is enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -57,7 +55,7 @@ exports[`logging should work and log messages about hot is enabled (ws) 1`] = ` ] `; -exports[`logging should work and log only error (ws) 1`] = ` +exports[`logging > should work and log only error (ws) 1`] = ` [ "Hey.", "[webpack-dev-server] Errors while compiling. Reload prevented.", @@ -66,7 +64,7 @@ Error from compilation", ] `; -exports[`logging should work and log static changes (ws) 1`] = ` +exports[`logging > should work and log static changes (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -78,7 +76,7 @@ exports[`logging should work and log static changes (ws) 1`] = ` ] `; -exports[`logging should work and log warning and errors (ws) 1`] = ` +exports[`logging > should work and log warning and errors (ws) 1`] = ` [ "Hey.", "[webpack-dev-server] Warnings while compiling.", @@ -90,7 +88,7 @@ Error from compilation", ] `; -exports[`logging should work and log warnings by default (ws) 1`] = ` +exports[`logging > should work and log warnings by default (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -101,7 +99,7 @@ Warning from compilation", ] `; -exports[`logging should work when the "client.logging" is "info" (ws) 1`] = ` +exports[`logging > should work when the "client.logging" is "info" (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -109,7 +107,7 @@ exports[`logging should work when the "client.logging" is "info" (ws) 1`] = ` ] `; -exports[`logging should work when the "client.logging" is "log" (ws) 1`] = ` +exports[`logging > should work when the "client.logging" is "log" (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -117,13 +115,13 @@ exports[`logging should work when the "client.logging" is "log" (ws) 1`] = ` ] `; -exports[`logging should work when the "client.logging" is "none" (ws) 1`] = ` +exports[`logging > should work when the "client.logging" is "none" (ws) 1`] = ` [ "Hey.", ] `; -exports[`logging should work when the "client.logging" is "verbose" (ws) 1`] = ` +exports[`logging > should work when the "client.logging" is "verbose" (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", diff --git a/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 b/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 index 2fe136bcf6..4a13be8682 100644 --- a/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 @@ -1,17 +1,31 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > console messages 1`] = ` +[] +`; -exports[`mimeTypes option as an object with a custom type should request file with different js mime type: console messages 1`] = `[]`; +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > page errors 1`] = ` +[] +`; -exports[`mimeTypes option as an object with a custom type should request file with different js mime type: page errors 1`] = `[]`; +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`mimeTypes option as an object with a custom type should request file with different js mime type: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > response status 1`] = ` +200 +`; -exports[`mimeTypes option as an object with a custom type should request file with different js mime type: response status 1`] = `200`; +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > console messages 1`] = ` +[] +`; -exports[`mimeTypes option as an object with a remapped type should request file with different js mime type: console messages 1`] = `[]`; +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > page errors 1`] = ` +[] +`; -exports[`mimeTypes option as an object with a remapped type should request file with different js mime type: page errors 1`] = `[]`; +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > response headers content-type 1`] = ` +"text/plain; charset=utf-8" +`; -exports[`mimeTypes option as an object with a remapped type should request file with different js mime type: response headers content-type 1`] = `"text/plain; charset=utf-8"`; - -exports[`mimeTypes option as an object with a remapped type should request file with different js mime type: response status 1`] = `200`; +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 b/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 index 1c3c271708..25c4ab00a4 100644 --- a/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 @@ -1,25 +1,47 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`Module federation > should use plugin > should contain hot script in main.js > console messages 1`] = ` +[] +`; -exports[`Module federation should use plugin should contain hot script in main.js: console messages 1`] = `[]`; +exports[`Module federation > should use plugin > should contain hot script in main.js > page errors 1`] = ` +[] +`; -exports[`Module federation should use plugin should contain hot script in main.js: page errors 1`] = `[]`; +exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js > console messages 1`] = ` +[] +`; -exports[`Module federation should use plugin should contain hot script in remoteEntry.js: console messages 1`] = `[]`; +exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js > page errors 1`] = ` +[] +`; -exports[`Module federation should use plugin should contain hot script in remoteEntry.js: page errors 1`] = `[]`; +exports[`Module federation > should work with multi compiler config > should use the last entry export > console messages 1`] = ` +[] +`; -exports[`Module federation should work with multi compiler config should use the last entry export: console messages 1`] = `[]`; +exports[`Module federation > should work with multi compiler config > should use the last entry export > page errors 1`] = ` +[] +`; -exports[`Module federation should work with multi compiler config should use the last entry export: page errors 1`] = `[]`; +exports[`Module federation > should work with object multi-entry config > should support the named entry export > console messages 1`] = ` +[] +`; -exports[`Module federation should work with object multi-entry config should support the named entry export: console messages 1`] = `[]`; +exports[`Module federation > should work with object multi-entry config > should support the named entry export > page errors 1`] = ` +[] +`; -exports[`Module federation should work with object multi-entry config should support the named entry export: page errors 1`] = `[]`; +exports[`Module federation > should work with object multi-entry config > should use the last entry export > console messages 1`] = ` +[] +`; -exports[`Module federation should work with object multi-entry config should use the last entry export: console messages 1`] = `[]`; +exports[`Module federation > should work with object multi-entry config > should use the last entry export > page errors 1`] = ` +[] +`; -exports[`Module federation should work with object multi-entry config should use the last entry export: page errors 1`] = `[]`; +exports[`Module federation > should work with simple multi-entry config > should use the last entry export > console messages 1`] = ` +[] +`; -exports[`Module federation should work with simple multi-entry config should use the last entry export: console messages 1`] = `[]`; - -exports[`Module federation should work with simple multi-entry config should use the last entry export: page errors 1`] = `[]`; +exports[`Module federation > should work with simple multi-entry config > should use the last entry export > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 1d99bb38ff..5fd7545d24 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`multi compiler should work with one web target configuration and do nothing: console messages 1`] = ` +exports[`multi compiler > should work with one web target configuration and do nothing > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,9 +6,11 @@ exports[`multi compiler should work with one web target configuration and do not ] `; -exports[`multi compiler should work with one web target configuration and do nothing: page errors 1`] = `[]`; +exports[`multi compiler > should work with one web target configuration and do nothing > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration and do nothing: console messages 1`] = ` +exports[`multi compiler > should work with universal configuration and do nothing > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,9 +18,11 @@ exports[`multi compiler should work with universal configuration and do nothing: ] `; -exports[`multi compiler should work with universal configuration and do nothing: page errors 1`] = `[]`; +exports[`multi compiler > should work with universal configuration and do nothing > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,9 +40,11 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed: page errors 1`] = `[]`; +exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -58,9 +62,11 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed: page errors 1`] = `[]`; +exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -71,7 +77,7 @@ exports[`multi compiler should work with universal configuration when only live ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: console messages 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -82,11 +88,15 @@ exports[`multi compiler should work with universal configuration when only live ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -97,7 +107,7 @@ exports[`multi compiler should work with universal configuration when only live ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: console messages 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -108,11 +118,15 @@ exports[`multi compiler should work with universal configuration when only live ] `; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with web target configurations and do nothing: console messages 1`] = ` +exports[`multi compiler > should work with web target configurations and do nothing > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -120,7 +134,7 @@ exports[`multi compiler should work with web target configurations and do nothin ] `; -exports[`multi compiler should work with web target configurations and do nothing: console messages 2`] = ` +exports[`multi compiler > should work with web target configurations and do nothing > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -128,11 +142,15 @@ exports[`multi compiler should work with web target configurations and do nothin ] `; -exports[`multi compiler should work with web target configurations and do nothing: page errors 1`] = `[]`; +exports[`multi compiler > should work with web target configurations and do nothing > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with web target configurations and do nothing: page errors 2`] = `[]`; +exports[`multi compiler > should work with web target configurations and do nothing > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -150,7 +168,7 @@ Update propagation: ./one.js ] `; -exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -168,11 +186,15 @@ Update propagation: ./two.js ] `; -exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -190,7 +212,7 @@ Update propagation: ./one.js ] `; -exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -208,11 +230,15 @@ Update propagation: ./two.js ] `; -exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -223,7 +249,7 @@ exports[`multi compiler should work with web target configurations when only liv ] `; -exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "two", @@ -234,11 +260,15 @@ exports[`multi compiler should work with web target configurations when only liv ] `; -exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only live reload is enabled and do live reload when changing other entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > page errors 2`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -249,7 +279,7 @@ exports[`multi compiler should work with web target configurations when only liv ] `; -exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "two", @@ -260,6 +290,10 @@ exports[`multi compiler should work with web target configurations when only liv ] `; -exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 1`] = `[]`; +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > page errors 1`] = ` +[] +`; -exports[`multi compiler should work with web target configurations when only live reload is enabled, and do live reload when changing own entries: page errors 2`] = `[]`; +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > page errors 2`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 b/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 index 66bebdb439..8d29e07822 100644 --- a/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 @@ -1,21 +1,39 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`onListening option > should handle GET request to /listening/some/path route > console messages 1`] = ` +[] +`; -exports[`onListening option should handle GET request to /listening/some/path route: console messages 1`] = `[]`; +exports[`onListening option > should handle GET request to /listening/some/path route > page errors 1`] = ` +[] +`; -exports[`onListening option should handle GET request to /listening/some/path route: page errors 1`] = `[]`; +exports[`onListening option > should handle GET request to /listening/some/path route > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`onListening option should handle GET request to /listening/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`onListening option > should handle GET request to /listening/some/path route > response status 1`] = ` +200 +`; -exports[`onListening option should handle GET request to /listening/some/path route: response status 1`] = `200`; +exports[`onListening option > should handle GET request to /listening/some/path route > response text 1`] = ` +"listening" +`; -exports[`onListening option should handle GET request to /listening/some/path route: response text 1`] = `"listening"`; +exports[`onListening option > should handle POST request to /listening/some/path route > console messages 1`] = ` +[] +`; -exports[`onListening option should handle POST request to /listening/some/path route: console messages 1`] = `[]`; +exports[`onListening option > should handle POST request to /listening/some/path route > page errors 1`] = ` +[] +`; -exports[`onListening option should handle POST request to /listening/some/path route: page errors 1`] = `[]`; +exports[`onListening option > should handle POST request to /listening/some/path route > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`onListening option should handle POST request to /listening/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`onListening option > should handle POST request to /listening/some/path route > response status 1`] = ` +200 +`; -exports[`onListening option should handle POST request to /listening/some/path route: response status 1`] = `200`; - -exports[`onListening option should handle POST request to /listening/some/path route: response text 1`] = `"listening POST"`; +exports[`onListening option > should handle POST request to /listening/some/path route > response text 1`] = ` +"listening POST" +`; diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 index 45e917b284..b4a75e33be 100644 --- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`overlay should not show a warning when "client.overlay" is "false": page html 1`] = ` +exports[`overlay > should not show a warning when "client.overlay" is "false" > page html 1`] = ` "

webpack-dev-server is running...

@@ -8,7 +6,7 @@ exports[`overlay should not show a warning when "client.overlay" is "false": pag " `; -exports[`overlay should not show a warning when "client.overlay.warnings" is "false": page html 1`] = ` +exports[`overlay > should not show a warning when "client.overlay.warnings" is "false" > page html 1`] = ` "

webpack-dev-server is running...

@@ -16,7 +14,7 @@ exports[`overlay should not show a warning when "client.overlay.warnings" is "fa " `; -exports[`overlay should not show an error when "client.overlay" is "false": page html 1`] = ` +exports[`overlay > should not show an error when "client.overlay" is "false" > page html 1`] = ` "

webpack-dev-server is running...

@@ -24,7 +22,7 @@ exports[`overlay should not show an error when "client.overlay" is "false": page " `; -exports[`overlay should not show an error when "client.overlay.errors" is "false": page html 1`] = ` +exports[`overlay > should not show an error when "client.overlay.errors" is "false" > page html 1`] = ` "

webpack-dev-server is running...

@@ -32,7 +30,7 @@ exports[`overlay should not show an error when "client.overlay.errors" is "false " `; -exports[`overlay should not show initially, then show on an error and allow to close: overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error and allow to close > overlay html 1`] = ` "
should not show initially, then show on an error and allow to close > page html after close 1`] = ` "

webpack-dev-server is running...

@@ -129,7 +127,7 @@ exports[`overlay should not show initially, then show on an error and allow to c " `; -exports[`overlay should not show initially, then show on an error and allow to close: page html initial 1`] = ` +exports[`overlay > should not show initially, then show on an error and allow to close > page html initial 1`] = ` "

webpack-dev-server is running...

@@ -137,7 +135,7 @@ exports[`overlay should not show initially, then show on an error and allow to c " `; -exports[`overlay should not show initially, then show on an error and allow to close: page html with error 1`] = ` +exports[`overlay > should not show initially, then show on an error and allow to close > page html with error 1`] = ` "

webpack-dev-server is running...

@@ -158,7 +156,7 @@ exports[`overlay should not show initially, then show on an error and allow to c " `; -exports[`overlay should not show initially, then show on an error, then hide on fix: overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix > overlay html 1`] = ` "
should not show initially, then show on an error, then hide on fix > page html after fix error 1`] = ` "

webpack-dev-server is running...

@@ -255,7 +253,7 @@ exports[`overlay should not show initially, then show on an error, then hide on " `; -exports[`overlay should not show initially, then show on an error, then hide on fix: page html initial 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix > page html initial 1`] = ` "

webpack-dev-server is running...

@@ -263,7 +261,7 @@ exports[`overlay should not show initially, then show on an error, then hide on " `; -exports[`overlay should not show initially, then show on an error, then hide on fix: page html with error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix > page html with error 1`] = ` "

webpack-dev-server is running...

@@ -284,7 +282,7 @@ exports[`overlay should not show initially, then show on an error, then hide on " `; -exports[`overlay should not show initially, then show on an error, then show other error, then hide on fix: overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > overlay html 1`] = ` "
should not show initially, then show on an error, then show other error, then hide on fix > overlay html 2`] = ` "
should not show initially, then show on an error, then show other error, then hide on fix > page html after fix error 1`] = ` "

webpack-dev-server is running...

@@ -470,7 +468,7 @@ exports[`overlay should not show initially, then show on an error, then show oth " `; -exports[`overlay should not show initially, then show on an error, then show other error, then hide on fix: page html initial 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html initial 1`] = ` "

webpack-dev-server is running...

@@ -478,7 +476,7 @@ exports[`overlay should not show initially, then show on an error, then show oth " `; -exports[`overlay should not show initially, then show on an error, then show other error, then hide on fix: page html with error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html with error 1`] = ` "

webpack-dev-server is running...

@@ -499,7 +497,7 @@ exports[`overlay should not show initially, then show on an error, then show oth " `; -exports[`overlay should not show initially, then show on an error, then show other error, then hide on fix: page html with other error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html with other error 1`] = ` "

webpack-dev-server is running...

@@ -520,7 +518,7 @@ exports[`overlay should not show initially, then show on an error, then show oth " `; -exports[`overlay should not show overlay when Trusted Types are enabled, but policy is not allowed: page html 1`] = ` +exports[`overlay > should not show overlay when Trusted Types are enabled, but policy is not allowed > page html 1`] = ` "

webpack-dev-server is running...

@@ -528,7 +526,7 @@ exports[`overlay should not show overlay when Trusted Types are enabled, but pol " `; -exports[`overlay should show a warning after invalidation: overlay html 1`] = ` +exports[`overlay > should show a warning after invalidation > overlay html 1`] = ` "
should show a warning after invalidation > page html 1`] = ` "

webpack-dev-server is running...

@@ -633,7 +631,7 @@ exports[`overlay should show a warning after invalidation: page html 1`] = ` " `; -exports[`overlay should show a warning and error for initial compilation and protects against xss: overlay html 1`] = ` +exports[`overlay > should show a warning and error for initial compilation and protects against xss > overlay html 1`] = ` "
should show a warning and error for initial compilation and protects against xss > page html 1`] = ` "

webpack-dev-server is running...

@@ -765,7 +763,7 @@ exports[`overlay should show a warning and error for initial compilation and pro " `; -exports[`overlay should show a warning and error for initial compilation: overlay html 1`] = ` +exports[`overlay > should show a warning and error for initial compilation > overlay html 1`] = ` "
should show a warning and error for initial compilation > page html 1`] = ` "

webpack-dev-server is running...

@@ -978,7 +976,7 @@ exports[`overlay should show a warning and error for initial compilation: page h " `; -exports[`overlay should show a warning and hide them after closing connection: overlay html 1`] = ` +exports[`overlay > should show a warning and hide them after closing connection > overlay html 1`] = ` "
should show a warning and hide them after closing connection > page html 1`] = ` "

webpack-dev-server is running...

@@ -1083,7 +1081,7 @@ exports[`overlay should show a warning and hide them after closing connection: p " `; -exports[`overlay should show a warning and hide them after closing connection: page html 2`] = ` +exports[`overlay > should show a warning and hide them after closing connection > page html 2`] = ` "

webpack-dev-server is running...

@@ -1091,7 +1089,7 @@ exports[`overlay should show a warning and hide them after closing connection: p " `; -exports[`overlay should show a warning for initial compilation: overlay html 1`] = ` +exports[`overlay > should show a warning for initial compilation > overlay html 1`] = ` "
should show a warning for initial compilation > page html 1`] = ` "

webpack-dev-server is running...

@@ -1196,7 +1194,7 @@ exports[`overlay should show a warning for initial compilation: page html 1`] = " `; -exports[`overlay should show a warning when "client.overlay" is "true": overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay" is "true" > overlay html 1`] = ` "
should show a warning when "client.overlay" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -1301,7 +1299,7 @@ exports[`overlay should show a warning when "client.overlay" is "true": page htm " `; -exports[`overlay should show a warning when "client.overlay.errors" is "true": overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.errors" is "true" > overlay html 1`] = ` "
should show a warning when "client.overlay.errors" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -1406,7 +1404,7 @@ exports[`overlay should show a warning when "client.overlay.errors" is "true": p " `; -exports[`overlay should show a warning when "client.overlay.warnings" is "true": overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.warnings" is "true" > overlay html 1`] = ` "
should show a warning when "client.overlay.warnings" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -1511,7 +1509,7 @@ exports[`overlay should show a warning when "client.overlay.warnings" is "true": " `; -exports[`overlay should show an ansi formatted error for initial compilation: overlay html 1`] = ` +exports[`overlay > should show an ansi formatted error for initial compilation > overlay html 1`] = ` "
should show an ansi formatted error for initial compilation > page html 1`] = ` "

webpack-dev-server is running...

@@ -1627,7 +1625,7 @@ exports[`overlay should show an ansi formatted error for initial compilation: pa " `; -exports[`overlay should show an error after invalidation: overlay html 1`] = ` +exports[`overlay > should show an error after invalidation > overlay html 1`] = ` "
should show an error after invalidation > page html 1`] = ` "

webpack-dev-server is running...

@@ -1732,7 +1730,7 @@ exports[`overlay should show an error after invalidation: page html 1`] = ` " `; -exports[`overlay should show an error for initial compilation: overlay html 1`] = ` +exports[`overlay > should show an error for initial compilation > overlay html 1`] = ` "
should show an error for initial compilation > page html 1`] = ` "

webpack-dev-server is running...

@@ -1837,7 +1835,7 @@ exports[`overlay should show an error for initial compilation: page html 1`] = ` " `; -exports[`overlay should show an error when "client.overlay" is "true": overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay" is "true" > overlay html 1`] = ` "
should show an error when "client.overlay" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -1942,7 +1940,7 @@ exports[`overlay should show an error when "client.overlay" is "true": page html " `; -exports[`overlay should show an error when "client.overlay.errors" is "true": overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay.errors" is "true" > overlay html 1`] = ` "
should show an error when "client.overlay.errors" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -2047,7 +2045,7 @@ exports[`overlay should show an error when "client.overlay.errors" is "true": pa " `; -exports[`overlay should show an error when "client.overlay.warnings" is "true": overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay.warnings" is "true" > overlay html 1`] = ` "
should show an error when "client.overlay.warnings" is "true" > page html 1`] = ` "

webpack-dev-server is running...

@@ -2152,7 +2150,7 @@ exports[`overlay should show an error when "client.overlay.warnings" is "true": " `; -exports[`overlay should show error for uncaught promise rejection: overlay html 1`] = ` +exports[`overlay > should show error for uncaught promise rejection > overlay html 1`] = ` "
should show error for uncaught runtime error > overlay html 1`] = ` "
should show error when it is not filtered > overlay html 1`] = ` "
should show error when it is not filtered > page html 1`] = ` "

webpack-dev-server is running...

@@ -2426,7 +2424,7 @@ exports[`overlay should show error when it is not filtered: page html 1`] = ` " `; -exports[`overlay should show overlay when "Content-Security-Policy" is "default-src 'self'" was used: overlay html 1`] = ` +exports[`overlay > should show overlay when "Content-Security-Policy" is "default-src 'self'" was used > overlay html 1`] = ` "
should show overlay when "Content-Security-Policy" is "default-src 'self'" was used > page html 1`] = ` "

webpack-dev-server is running...

@@ -2531,7 +2529,7 @@ exports[`overlay should show overlay when "Content-Security-Policy" is "default- " `; -exports[`overlay should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used: overlay html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used > overlay html 1`] = ` "
should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used > page html 1`] = ` "

webpack-dev-server is running...

@@ -2636,7 +2634,7 @@ exports[`overlay should show overlay when Trusted Types are enabled and the "req " `; -exports[`overlay should show overlay when Trusted Types are enabled: overlay html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled > overlay html 1`] = ` "
should show overlay when Trusted Types are enabled > page html 1`] = ` "

webpack-dev-server is running...

@@ -2741,7 +2739,7 @@ exports[`overlay should show overlay when Trusted Types are enabled: page html 1 " `; -exports[`overlay should show warning when it is not filtered: overlay html 1`] = ` +exports[`overlay > should show warning when it is not filtered > overlay html 1`] = ` "

webpack-dev-server is running...

diff --git a/test/e2e/__snapshots__/port.test.js.snap.webpack5 b/test/e2e/__snapshots__/port.test.js.snap.webpack5 index 3a5dc33cd7..f8c2f2370e 100644 --- a/test/e2e/__snapshots__/port.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/port.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`port should work using "" port : console messages 1`] = ` +exports[`port > should work using "" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,9 +6,11 @@ exports[`port should work using "" port : console messages 1`] = ] `; -exports[`port should work using "" port : page errors 1`] = `[]`; +exports[`port > should work using "" port > page errors 1`] = ` +[] +`; -exports[`port should work using "0" port : console messages 1`] = ` +exports[`port > should work using "0" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,9 +18,11 @@ exports[`port should work using "0" port : console messages 1`] = ` ] `; -exports[`port should work using "0" port : page errors 1`] = `[]`; +exports[`port > should work using "0" port > page errors 1`] = ` +[] +`; -exports[`port should work using "8159" port : console messages 1`] = ` +exports[`port > should work using "8159" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,7 +30,7 @@ exports[`port should work using "8159" port : console messages 1`] = ` ] `; -exports[`port should work using "8159" port : console messages 2`] = ` +exports[`port > should work using "8159" port > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -36,11 +38,15 @@ exports[`port should work using "8159" port : console messages 2`] = ` ] `; -exports[`port should work using "8159" port : page errors 1`] = `[]`; +exports[`port > should work using "8159" port > page errors 1`] = ` +[] +`; -exports[`port should work using "8159" port : page errors 2`] = `[]`; +exports[`port > should work using "8159" port > page errors 2`] = ` +[] +`; -exports[`port should work using "auto" port : console messages 1`] = ` +exports[`port > should work using "auto" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -48,9 +54,11 @@ exports[`port should work using "auto" port : console messages 1`] = ` ] `; -exports[`port should work using "auto" port : page errors 1`] = `[]`; +exports[`port > should work using "auto" port > page errors 1`] = ` +[] +`; -exports[`port should work using "undefined" port : console messages 1`] = ` +exports[`port > should work using "undefined" port > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -58,4 +66,6 @@ exports[`port should work using "undefined" port : console messages 1`] = ` ] `; -exports[`port should work using "undefined" port : page errors 1`] = `[]`; +exports[`port > should work using "undefined" port > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/server-and-client-transport.test.js.snap.webpack5 b/test/e2e/__snapshots__/server-and-client-transport.test.js.snap.webpack5 index a106b87b20..9a6e519f00 100644 --- a/test/e2e/__snapshots__/server-and-client-transport.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/server-and-client-transport.test.js.snap.webpack5 @@ -1,68 +1,72 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`server and client transport should throw an error on invalid path to client transport 1`] = `"client.webSocketTransport must be a string denoting a default implementation (e.g. 'ws') or a full path to a JS file via require.resolve(...) which exports a class "`; +exports[`server and client transport > should throw an error on invalid path to client transport 1`] = ` +"client.webSocketTransport must be a string denoting a default implementation (e.g. 'ws') or a full path to a JS file via require.resolve(...) which exports a class " +`; -exports[`server and client transport should throw an error on invalid path to server transport 1`] = `"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer"`; +exports[`server and client transport > should throw an error on invalid path to server transport 1`] = ` +"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer" +`; -exports[`server and client transport should throw an error on wrong path 1`] = `"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer"`; +exports[`server and client transport > should throw an error on wrong path 1`] = ` +"webSocketServer (webSocketServer.type) must be a string denoting a default implementation (e.g. 'ws'), a full path to a JS file which exports a class extending BaseServer (webpack-dev-server/lib/servers/BaseServer.js) via require.resolve(...), or the class itself which extends BaseServer" +`; -exports[`server and client transport should use "ws" transport and "ws" web socket server 1`] = ` +exports[`server and client transport > should use "ws" transport and "ws" web socket server 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use "ws" transport, when web socket server is not specify 1`] = ` +exports[`server and client transport > should use "ws" transport, when web socket server is not specify 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use "ws" web socket server when specify "ws" value 1`] = ` +exports[`server and client transport > should use "ws" web socket server when specify "ws" value 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use "ws" web socket server when specify "ws" value using object 1`] = ` +exports[`server and client transport > should use "ws" web socket server when specify "ws" value using object 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use custom web socket server when specify class 1`] = ` +exports[`server and client transport > should use custom web socket server when specify class 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use custom web socket server when specify class using object 1`] = ` +exports[`server and client transport > should use custom web socket server when specify class using object 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use custom web socket server when specify path to class 1`] = ` +exports[`server and client transport > should use custom web socket server when specify path to class 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use custom web socket server when specify path to class using object 1`] = ` +exports[`server and client transport > should use custom web socket server when specify path to class using object 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", ] `; -exports[`server and client transport should use default web socket server ("ws") 1`] = ` +exports[`server and client transport > should use default web socket server ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", diff --git a/test/e2e/__snapshots__/server.test.js.snap.webpack5 b/test/e2e/__snapshots__/server.test.js.snap.webpack5 index 9eb2a7c938..9648854152 100644 --- a/test/e2e/__snapshots__/server.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/server.test.js.snap.webpack5 @@ -1,8 +1,8 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`server option as object allow to pass more options should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object allow to pass more options should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > https options 1`] = ` { "ca": "", "cert": "", @@ -14,18 +14,24 @@ exports[`server option as object allow to pass more options should handle GET re } `; -exports[`server option as object allow to pass more options should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object allow to pass more options should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object allow to pass more options should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are array of buffers should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of buffers should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > https options 1`] = ` { "ca": [ "", @@ -44,18 +50,24 @@ exports[`server option as object ca, pfx, key and cert are array of buffers shou } `; -exports[`server option as object ca, pfx, key and cert are array of buffers should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of buffers should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are array of buffers should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are array of paths to files should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of paths to files should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > https options 1`] = ` { "ca": [ "", @@ -74,18 +86,24 @@ exports[`server option as object ca, pfx, key and cert are array of paths to fil } `; -exports[`server option as object ca, pfx, key and cert are array of paths to files should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of paths to files should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are array of paths to files should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are array of strings should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of strings should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > https options 1`] = ` { "ca": [ "-----BEGIN RSA PRIVATE KEY----- @@ -180,18 +198,24 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option as object ca, pfx, key and cert are array of strings should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are array of strings should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are array of strings should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are buffer should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are buffer should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > https options 1`] = ` { "ca": "", "cert": "", @@ -202,18 +226,24 @@ exports[`server option as object ca, pfx, key and cert are buffer should handle } `; -exports[`server option as object ca, pfx, key and cert are buffer should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are buffer should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are buffer should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are buffer, key and pfx are objects should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are buffer, key and pfx are objects should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > https options 1`] = ` { "ca": "", "cert": "", @@ -232,18 +262,24 @@ exports[`server option as object ca, pfx, key and cert are buffer, key and pfx a } `; -exports[`server option as object ca, pfx, key and cert are buffer, key and pfx are objects should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are buffer, key and pfx are objects should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are buffer, key and pfx are objects should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are paths to files should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are paths to files should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > https options 1`] = ` { "ca": "", "cert": "", @@ -254,18 +290,24 @@ exports[`server option as object ca, pfx, key and cert are paths to files should } `; -exports[`server option as object ca, pfx, key and cert are paths to files should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are paths to files should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are paths to files should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are strings should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are strings should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > https options 1`] = ` { "ca": "-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kv @@ -352,18 +394,24 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option as object ca, pfx, key and cert are strings should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are strings should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are strings should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object ca, pfx, key and cert are strings, key and pfx are objects should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are strings, key and pfx are objects should handle GET request to index route (/): https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > https options 1`] = ` { "ca": "-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kv @@ -458,40 +506,52 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option as object ca, pfx, key and cert are strings, key and pfx are objects should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object ca, pfx, key and cert are strings, key and pfx are objects should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object ca, pfx, key and cert are strings, key and pfx are objects should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object custom server with options should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as object > custom server with options > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as object custom server with options should handle GET request to index route (/): http options 1`] = ` +exports[`server option > as object > custom server with options > should handle GET request to index route (/) > http options 1`] = ` { "maxHeaderSize": 16384, } `; -exports[`server option as object custom server with options should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as object > custom server with options > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as object custom server with options should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > custom server with options > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object custom server with options should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > custom server with options > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object should support the "requestCert" option should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as object should support the "requestCert" option should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as object should support the "requestCert" option should pass options to the 'https.createServer' method: https options 1`] = ` +exports[`server option > as object > should support the "requestCert" option > should pass options to the 'https.createServer' method > https options 1`] = ` { "cert": "", "key": "", @@ -501,35 +561,53 @@ exports[`server option as object should support the "requestCert" option should } `; -exports[`server option as string custom-http should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as string > custom-http > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as string custom-http should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as string > custom-http > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as string custom-http should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as string > custom-http > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as string custom-http should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as string > custom-http > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as string http should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as string > http > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as string http should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as string > http > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as string http should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as string > http > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as string http should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as string > http > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; -exports[`server option as string https should handle GET request to index route (/): console messages 1`] = `[]`; +exports[`server option > as string > https > should handle GET request to index route (/) > console messages 1`] = ` +[] +`; -exports[`server option as string https should handle GET request to index route (/): page errors 1`] = `[]`; +exports[`server option > as string > https > should handle GET request to index route (/) > page errors 1`] = ` +[] +`; -exports[`server option as string https should handle GET request to index route (/): response status 1`] = `200`; +exports[`server option > as string > https > should handle GET request to index route (/) > response status 1`] = ` +200 +`; -exports[`server option as string https should handle GET request to index route (/): response text 1`] = ` +exports[`server option > as string > https > should handle GET request to index route (/) > response text 1`] = ` "Heyo. " `; diff --git a/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 index c593d85b82..00b3a25cab 100644 --- a/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGINT: console messages 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,11 +6,15 @@ exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals sh ] `; -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGINT: page errors 1`] = `[]`; +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > page errors 1`] = ` +[] +`; -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGINT: response status 1`] = `200`; +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > response status 1`] = ` +200 +`; -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGTERM: console messages 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -20,6 +22,10 @@ exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals sh ] `; -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGTERM: page errors 1`] = `[]`; +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > page errors 1`] = ` +[] +`; -exports[`setupExitSignals option should handle 'SIGINT' and 'SIGTERM' signals should close and exit on SIGTERM: response status 1`] = `200`; +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 index 2a83e8bbbf..4eeb43d618 100644 --- a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 @@ -1,39 +1,75 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > console messages 1`] = ` +[] +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: console messages 1`] = `[]`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > page errors 1`] = ` +[] +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: page errors 1`] = `[]`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 2`] = ` +"text/html; charset=utf-8" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 2`] = `"text/html; charset=utf-8"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 3`] = ` +"text/html; charset=utf-8" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 3`] = `"text/html; charset=utf-8"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 4`] = ` +"text/html; charset=utf-8" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response headers content-type 4`] = `"text/html; charset=utf-8"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 1`] = ` +200 +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 1`] = `200`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 2`] = ` +200 +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 2`] = `200`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 3`] = ` +200 +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 3`] = `200`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 4`] = ` +200 +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response status 4`] = `200`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 1`] = ` +"setup-middlewares option GET" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option GET"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 2`] = ` +"Hello World with path!" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 2`] = `"Hello World with path!"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 3`] = ` +"Hello World without path!" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 3`] = `"Hello World without path!"`; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 4`] = ` +"Hello World as function!" +`; -exports[`setupMiddlewares option should handle GET request to /setup-middleware/some/path route: response text 4`] = `"Hello World as function!"`; +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > console messages 1`] = ` +[] +`; -exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: console messages 1`] = `[]`; +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > page errors 1`] = ` +[] +`; -exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: page errors 1`] = `[]`; +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response headers content-type 1`] = ` +"text/html; charset=utf-8" +`; -exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response headers content-type 1`] = `"text/html; charset=utf-8"`; +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response status 1`] = ` +200 +`; -exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response status 1`] = `200`; - -exports[`setupMiddlewares option should handle POST request to /setup-middleware/some/path route: response text 1`] = `"setup-middlewares option POST"`; +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response text 1`] = ` +"setup-middlewares option POST" +`; diff --git a/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 b/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 index 4d88c538a7..0f08bf903a 100644 --- a/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 @@ -1,27 +1,35 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`static.directory option defaults to PWD should handle request to /index.html: console messages 1`] = `[]`; +exports[`static.directory option > defaults to PWD > should handle request to /index.html > console messages 1`] = ` +[] +`; -exports[`static.directory option defaults to PWD should handle request to /index.html: page errors 1`] = `[]`; +exports[`static.directory option > defaults to PWD > should handle request to /index.html > page errors 1`] = ` +[] +`; -exports[`static.directory option defaults to PWD should handle request to /index.html: response status 1`] = `200`; +exports[`static.directory option > defaults to PWD > should handle request to /index.html > response status 1`] = ` +200 +`; -exports[`static.directory option defaults to PWD should handle request to /index.html: response text 1`] = ` +exports[`static.directory option > defaults to PWD > should handle request to /index.html > response text 1`] = ` "Heyo. " `; -exports[`static.directory option disabled should not handle request to /other.html (404): console messages 1`] = ` +exports[`static.directory option > disabled > should not handle request to /other.html (404) > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.directory option disabled should not handle request to /other.html (404): page errors 1`] = `[]`; +exports[`static.directory option > disabled > should not handle request to /other.html (404) > page errors 1`] = ` +[] +`; -exports[`static.directory option disabled should not handle request to /other.html (404): response status 1`] = `404`; +exports[`static.directory option > disabled > should not handle request to /other.html (404) > response status 1`] = ` +404 +`; -exports[`static.directory option disabled should not handle request to /other.html (404): response text 1`] = ` +exports[`static.directory option > disabled > should not handle request to /other.html (404) > response text 1`] = ` " @@ -35,34 +43,50 @@ exports[`static.directory option disabled should not handle request to /other.ht " `; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should list the files inside the assets folder (200): console messages 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > console messages 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should list the files inside the assets folder (200): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should list the files inside the assets folder (200): response status 1`] = `200`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > response status 1`] = ` +200 +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.directory option test listing files in folders without index.html using the default static.serveIndex option (true) should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should not list the files inside the assets folder (404): console messages 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should not list the files inside the assets folder (404): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should not list the files inside the assets folder (404): response status 1`] = `404`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > response status 1`] = ` +404 +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should not list the files inside the assets folder (404): response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > response text 1`] = ` " @@ -76,74 +100,116 @@ exports[`static.directory option test listing files in folders without index.htm " `; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): console messages 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > console messages 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): response status 1`] = `200`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > response status 1`] = ` +200 +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.directory option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.directory option to directory should handle request to index route: console messages 1`] = `[]`; +exports[`static.directory option > to directory > should handle request to index route > console messages 1`] = ` +[] +`; -exports[`static.directory option to directory should handle request to index route: page errors 1`] = `[]`; +exports[`static.directory option > to directory > should handle request to index route > page errors 1`] = ` +[] +`; -exports[`static.directory option to directory should handle request to index route: response status 1`] = `200`; +exports[`static.directory option > to directory > should handle request to index route > response status 1`] = ` +200 +`; -exports[`static.directory option to directory should handle request to index route: response text 1`] = ` +exports[`static.directory option > to directory > should handle request to index route > response text 1`] = ` "Heyo. " `; -exports[`static.directory option to directory should handle request to other file: console messages 1`] = `[]`; +exports[`static.directory option > to directory > should handle request to other file > console messages 1`] = ` +[] +`; -exports[`static.directory option to directory should handle request to other file: page errors 1`] = `[]`; +exports[`static.directory option > to directory > should handle request to other file > page errors 1`] = ` +[] +`; -exports[`static.directory option to directory should handle request to other file: response status 1`] = `200`; +exports[`static.directory option > to directory > should handle request to other file > response status 1`] = ` +200 +`; -exports[`static.directory option to directory should handle request to other file: response text 1`] = ` +exports[`static.directory option > to directory > should handle request to other file > response text 1`] = ` "Other html " `; -exports[`static.directory option to multiple directories should handle request first directory: console messages 1`] = `[]`; +exports[`static.directory option > to multiple directories > should handle request first directory > console messages 1`] = ` +[] +`; -exports[`static.directory option to multiple directories should handle request first directory: page errors 1`] = `[]`; +exports[`static.directory option > to multiple directories > should handle request first directory > page errors 1`] = ` +[] +`; -exports[`static.directory option to multiple directories should handle request first directory: response status 1`] = `200`; +exports[`static.directory option > to multiple directories > should handle request first directory > response status 1`] = ` +200 +`; -exports[`static.directory option to multiple directories should handle request first directory: response text 1`] = ` +exports[`static.directory option > to multiple directories > should handle request first directory > response text 1`] = ` "Heyo. " `; -exports[`static.directory option to multiple directories should handle request to second directory: console messages 1`] = `[]`; +exports[`static.directory option > to multiple directories > should handle request to second directory > console messages 1`] = ` +[] +`; -exports[`static.directory option to multiple directories should handle request to second directory: page errors 1`] = `[]`; +exports[`static.directory option > to multiple directories > should handle request to second directory > page errors 1`] = ` +[] +`; -exports[`static.directory option to multiple directories should handle request to second directory: response status 1`] = `200`; +exports[`static.directory option > to multiple directories > should handle request to second directory > response status 1`] = ` +200 +`; -exports[`static.directory option to multiple directories should handle request to second directory: response text 1`] = ` +exports[`static.directory option > to multiple directories > should handle request to second directory > response text 1`] = ` "Foo! " `; diff --git a/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 b/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 index de31661060..846f0e087e 100644 --- a/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 @@ -1,192 +1,296 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`static.publicPath option Content type should handle request to example.txt: console messages 1`] = `[]`; +exports[`static.publicPath option > Content type > should handle request to example.txt > console messages 1`] = ` +[] +`; -exports[`static.publicPath option Content type should handle request to example.txt: page errors 1`] = `[]`; +exports[`static.publicPath option > Content type > should handle request to example.txt > page errors 1`] = ` +[] +`; -exports[`static.publicPath option Content type should handle request to example.txt: response header content-type 1`] = `"text/plain; charset=utf-8"`; +exports[`static.publicPath option > Content type > should handle request to example.txt > response header content-type 1`] = ` +"text/plain; charset=utf-8" +`; -exports[`static.publicPath option Content type should handle request to example.txt: response status 1`] = `200`; +exports[`static.publicPath option > Content type > should handle request to example.txt > response status 1`] = ` +200 +`; -exports[`static.publicPath option defaults to CWD should handle request to page: console messages 1`] = `[]`; +exports[`static.publicPath option > defaults to CWD > should handle request to page > console messages 1`] = ` +[] +`; -exports[`static.publicPath option defaults to CWD should handle request to page: page errors 1`] = `[]`; +exports[`static.publicPath option > defaults to CWD > should handle request to page > page errors 1`] = ` +[] +`; -exports[`static.publicPath option defaults to CWD should handle request to page: response status 1`] = `200`; +exports[`static.publicPath option > defaults to CWD > should handle request to page > response status 1`] = ` +200 +`; -exports[`static.publicPath option defaults to CWD should handle request to page: response text 1`] = ` +exports[`static.publicPath option > defaults to CWD > should handle request to page > response text 1`] = ` "Heyo. " `; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the /foo route of second path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the /foo route of second path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the /foo route of second path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the /foo route of second path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > response text 1`] = ` "Foo! " `; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the index of first path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the index of first path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the index of first path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the index of first path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > response text 1`] = ` "Heyo. " `; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the other file of first path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the other file of first path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the other file of first path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries should handle request to the other file of first path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > response text 1`] = ` "Other html " `; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of first path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of first path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of first path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of first path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > response text 1`] = ` "Foo! " `; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of second path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of second path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of second path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the /foo route of second path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > response text 1`] = ` "Foo! " `; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the index of first path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the index of first path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the index of first path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the index of first path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > response text 1`] = ` "Heyo. " `; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the other file of first path: console messages 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > console messages 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the other file of first path: page errors 1`] = `[]`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > page errors 1`] = ` +[] +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the other file of first path: response status 1`] = `200`; +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > response status 1`] = ` +200 +`; -exports[`static.publicPath option multiple static.publicPath entries with publicPath array should handle request to the other file of first path: response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > response text 1`] = ` "Other html " `; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle GET request: console messages 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > console messages 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle GET request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle GET request: response status 1`] = `200`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > response status 1`] = ` +200 +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle HEAD request: console messages 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > console messages 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle HEAD request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should handle HEAD request: response status 1`] = `200`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > response status 1`] = ` +200 +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle DELETE request: console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle DELETE request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle DELETE request: response status 1`] = `404`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > response status 1`] = ` +404 +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PATCH request: console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PATCH request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PATCH request: response status 1`] = `404`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > response status 1`] = ` +404 +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle POST request: console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle POST request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle POST request: response status 1`] = `404`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > response status 1`] = ` +404 +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PUT request: console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PUT request: page errors 1`] = `[]`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > page errors 1`] = ` +[] +`; -exports[`static.publicPath option should ignore methods other than GET and HEAD should not handle PUT request: response status 1`] = `404`; +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > response status 1`] = ` +404 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should list the files inside the assets folder (200): console messages 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > console messages 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should list the files inside the assets folder (200): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should list the files inside the assets folder (200): response status 1`] = `200`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > response status 1`] = ` +200 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex default (true) should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false shouldn't list the files inside the assets folder (404): console messages 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > console messages 1`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false shouldn't list the files inside the assets folder (404): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false shouldn't list the files inside the assets folder (404): response status 1`] = `404`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > response status 1`] = ` +404 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: false shouldn't list the files inside the assets folder (404): response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > response text 1`] = ` " @@ -200,63 +304,99 @@ exports[`static.publicPath option test listing files in folders without index.ht " `; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): console messages 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > console messages 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should list the files inside the assets folder (200): response status 1`] = `200`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > response status 1`] = ` +200 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): console messages 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): page errors 1`] = `[]`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +[] +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): response status 1`] = `200`; +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +200 +`; -exports[`static.publicPath option test listing files in folders without index.html using the option static.serveIndex: true should show Heyo. because bar has index.html inside it (200): response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` "Heyo " `; -exports[`static.publicPath option to directory should handle request to index: console messages 1`] = `[]`; +exports[`static.publicPath option > to directory > should handle request to index > console messages 1`] = ` +[] +`; -exports[`static.publicPath option to directory should handle request to index: page errors 1`] = `[]`; +exports[`static.publicPath option > to directory > should handle request to index > page errors 1`] = ` +[] +`; -exports[`static.publicPath option to directory should handle request to index: response status 1`] = `200`; +exports[`static.publicPath option > to directory > should handle request to index > response status 1`] = ` +200 +`; -exports[`static.publicPath option to directory should handle request to index: response text 1`] = ` +exports[`static.publicPath option > to directory > should handle request to index > response text 1`] = ` "Heyo. " `; -exports[`static.publicPath option to directory should handle request to other file: console messages 1`] = `[]`; +exports[`static.publicPath option > to directory > should handle request to other file > console messages 1`] = ` +[] +`; -exports[`static.publicPath option to directory should handle request to other file: page errors 1`] = `[]`; +exports[`static.publicPath option > to directory > should handle request to other file > page errors 1`] = ` +[] +`; -exports[`static.publicPath option to directory should handle request to other file: response status 1`] = `200`; +exports[`static.publicPath option > to directory > should handle request to other file > response status 1`] = ` +200 +`; -exports[`static.publicPath option to directory should handle request to other file: response text 1`] = ` +exports[`static.publicPath option > to directory > should handle request to other file > response text 1`] = ` "Other html " `; -exports[`static.publicPath option to multiple directories should handle request to first directory: console messages 1`] = `[]`; +exports[`static.publicPath option > to multiple directories > should handle request to first directory > console messages 1`] = ` +[] +`; -exports[`static.publicPath option to multiple directories should handle request to first directory: page errors 1`] = `[]`; +exports[`static.publicPath option > to multiple directories > should handle request to first directory > page errors 1`] = ` +[] +`; -exports[`static.publicPath option to multiple directories should handle request to first directory: response status 1`] = `200`; +exports[`static.publicPath option > to multiple directories > should handle request to first directory > response status 1`] = ` +200 +`; -exports[`static.publicPath option to multiple directories should handle request to first directory: response text 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to first directory > response text 1`] = ` "Heyo. " `; -exports[`static.publicPath option to multiple directories should handle request to second directory: console messages 1`] = `[]`; +exports[`static.publicPath option > to multiple directories > should handle request to second directory > console messages 1`] = ` +[] +`; -exports[`static.publicPath option to multiple directories should handle request to second directory: page errors 1`] = `[]`; +exports[`static.publicPath option > to multiple directories > should handle request to second directory > page errors 1`] = ` +[] +`; -exports[`static.publicPath option to multiple directories should handle request to second directory: response status 1`] = `200`; +exports[`static.publicPath option > to multiple directories > should handle request to second directory > response status 1`] = ` +200 +`; -exports[`static.publicPath option to multiple directories should handle request to second directory: response text 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to second directory > response text 1`] = ` "Foo! " `; diff --git a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 index c36c1f21f7..8fa3ad04b2 100644 --- a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`stats should work and respect the "ignoreWarnings" option 1`] = ` +exports[`stats > should work and respect the "ignoreWarnings" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,7 +6,7 @@ exports[`stats should work and respect the "ignoreWarnings" option 1`] = ` ] `; -exports[`stats should work using "{ assets: false }" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ assets > false }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -16,7 +14,7 @@ exports[`stats should work using "{ assets: false }" value for the "stats" optio ] `; -exports[`stats should work using "{ assets: false }" value for the "stats" option 2`] = ` +exports[`stats > should work using "{ assets > false }" value for the "stats" option 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -24,7 +22,7 @@ exports[`stats should work using "{ assets: false }" value for the "stats" optio ] `; -exports[`stats should work using "{ warningsFilter: 'test' }" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ warningsFilter > 'test' }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -32,7 +30,7 @@ exports[`stats should work using "{ warningsFilter: 'test' }" value for the "sta ] `; -exports[`stats should work using "{}" value for the "stats" option 1`] = ` +exports[`stats > should work using "{}" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -40,7 +38,7 @@ exports[`stats should work using "{}" value for the "stats" option 1`] = ` ] `; -exports[`stats should work using "errors-only" value for the "stats" option 1`] = ` +exports[`stats > should work using "errors-only" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -48,7 +46,7 @@ exports[`stats should work using "errors-only" value for the "stats" option 1`] ] `; -exports[`stats should work using "false" value for the "stats" option 1`] = ` +exports[`stats > should work using "false" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -56,7 +54,7 @@ exports[`stats should work using "false" value for the "stats" option 1`] = ` ] `; -exports[`stats should work using "undefined" value for the "stats" option 1`] = ` +exports[`stats > should work using "undefined" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -64,7 +62,7 @@ exports[`stats should work using "undefined" value for the "stats" option 1`] = ] `; -exports[`stats should work when "stats" is not specified 1`] = ` +exports[`stats > should work when "stats" is not specified 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", diff --git a/test/e2e/__snapshots__/target.test.js.snap.webpack5 b/test/e2e/__snapshots__/target.test.js.snap.webpack5 index fd2295ff09..eb68c93d01 100644 --- a/test/e2e/__snapshots__/target.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/target.test.js.snap.webpack5 @@ -1,8 +1,8 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`target should work using "async-node" target: console messages 1`] = `[]`; +exports[`target > should work using "async-node" target > console messages 1`] = ` +[] +`; -exports[`target should work using "browserslist:defaults" target: console messages 1`] = ` +exports[`target > should work using "browserslist:defaults" target > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -10,39 +10,57 @@ exports[`target should work using "browserslist:defaults" target: console messag ] `; -exports[`target should work using "browserslist:defaults" target: page errors 1`] = `[]`; +exports[`target > should work using "browserslist:defaults" target > page errors 1`] = ` +[] +`; -exports[`target should work using "electron-main" target: console messages 1`] = `[]`; +exports[`target > should work using "electron-main" target > console messages 1`] = ` +[] +`; -exports[`target should work using "electron-preload" target: console messages 1`] = `[]`; +exports[`target > should work using "electron-preload" target > console messages 1`] = ` +[] +`; -exports[`target should work using "electron-renderer" target: console messages 1`] = `[]`; +exports[`target > should work using "electron-renderer" target > console messages 1`] = ` +[] +`; -exports[`target should work using "es5" target: console messages 1`] = ` +exports[`target > should work using "es5" target > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "Hey.", ] `; -exports[`target should work using "es5" target: page errors 1`] = `[]`; +exports[`target > should work using "es5" target > page errors 1`] = ` +[] +`; -exports[`target should work using "false" target: console messages 1`] = ` +exports[`target > should work using "false" target > console messages 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "Hey.", ] `; -exports[`target should work using "false" target: page errors 1`] = `[]`; +exports[`target > should work using "false" target > page errors 1`] = ` +[] +`; -exports[`target should work using "node" target: console messages 1`] = `[]`; +exports[`target > should work using "node" target > console messages 1`] = ` +[] +`; -exports[`target should work using "node-webkit" target: console messages 1`] = `[]`; +exports[`target > should work using "node-webkit" target > console messages 1`] = ` +[] +`; -exports[`target should work using "nwjs" target: console messages 1`] = `[]`; +exports[`target > should work using "nwjs" target > console messages 1`] = ` +[] +`; -exports[`target should work using "web" target: console messages 1`] = ` +exports[`target > should work using "web" target > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -50,9 +68,11 @@ exports[`target should work using "web" target: console messages 1`] = ` ] `; -exports[`target should work using "web" target: page errors 1`] = `[]`; +exports[`target > should work using "web" target > page errors 1`] = ` +[] +`; -exports[`target should work using "web,es5" target: console messages 1`] = ` +exports[`target > should work using "web,es5" target > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -60,9 +80,11 @@ exports[`target should work using "web,es5" target: console messages 1`] = ` ] `; -exports[`target should work using "web,es5" target: page errors 1`] = `[]`; +exports[`target > should work using "web,es5" target > page errors 1`] = ` +[] +`; -exports[`target should work using "webworker" target: console messages 1`] = ` +exports[`target > should work using "webworker" target > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -70,9 +92,11 @@ exports[`target should work using "webworker" target: console messages 1`] = ` ] `; -exports[`target should work using "webworker" target: page errors 1`] = `[]`; +exports[`target > should work using "webworker" target > page errors 1`] = ` +[] +`; -exports[`target should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\`: console messages 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -81,9 +105,11 @@ exports[`target should work using multi compiler mode with \`web\` and \`webwork ] `; -exports[`target should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\`: page errors 1`] = `[]`; +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` > page errors 1`] = ` +[] +`; -exports[`target should work using multi compiler mode with \`web\` and \`webworker\` targets: console messages 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -94,4 +120,6 @@ exports[`target should work using multi compiler mode with \`web\` and \`webwork ] `; -exports[`target should work using multi compiler mode with \`web\` and \`webworker\` targets: page errors 1`] = `[]`; +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 index adf5ea5d50..500dd8fb51 100644 --- a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 @@ -1,92 +1,128 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`watchFiles option should not crash if file doesn't exist should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should not crash if file doesn't exist should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should not crash if file doesn't exist should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with array config should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with array config > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with array config should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with array config > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with array config should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with array config > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with array of globs should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with array of globs > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with array of globs should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with array of globs > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with array of globs should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with array of globs > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with directory and ignored option to filter files should not reload when a non-matching file is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with directory and ignored option to filter files > should not reload when a non-matching file is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with directory and ignored option to filter files should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with directory and ignored option to filter files should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with directory and ignored option to filter files should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with ignored option using glob array should not reload when an ignored glob file is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with ignored option using glob array > should not reload when an ignored glob file is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with ignored option using glob array should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with ignored option using glob array should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with ignored option using glob array should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with ignored option using glob string should not reload when an ignored glob file is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with ignored option using glob string > should not reload when an ignored glob file is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with ignored option using glob string should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with ignored option using glob string should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with ignored option using glob string should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with object with multiple paths should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with object with multiple paths should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with object with multiple paths should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with object with single path should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with object with single path > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with object with single path should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with object with single path > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with object with single path should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with object with single path > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"interval":400,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -102,17 +138,21 @@ exports[`watchFiles option should work with options {"interval":400,"poll":200} } `; -exports[`watchFiles option should work with options {"interval":400,"poll":200} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"interval":400,"poll":200} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"interval":400,"poll":200} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -128,17 +168,21 @@ exports[`watchFiles option should work with options {"poll":200} should reload w } `; -exports[`watchFiles option should work with options {"poll":200} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"poll":200} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"poll":200} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"poll":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -154,17 +198,21 @@ exports[`watchFiles option should work with options {"poll":true} should reload } `; -exports[`watchFiles option should work with options {"poll":true} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"poll":true} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"poll":true} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -180,17 +228,21 @@ exports[`watchFiles option should work with options {"usePolling":false,"interva } `; -exports[`watchFiles option should work with options {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":false,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -206,17 +258,21 @@ exports[`watchFiles option should work with options {"usePolling":false,"poll":2 } `; -exports[`watchFiles option should work with options {"usePolling":false,"poll":200} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":false,"poll":200} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":false,"poll":200} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":false,"poll":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -232,17 +288,21 @@ exports[`watchFiles option should work with options {"usePolling":false,"poll":t } `; -exports[`watchFiles option should work with options {"usePolling":false,"poll":true} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":false,"poll":true} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":false,"poll":true} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":false} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -258,17 +318,21 @@ exports[`watchFiles option should work with options {"usePolling":false} should } `; -exports[`watchFiles option should work with options {"usePolling":false} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":false} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":false} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -284,17 +348,21 @@ exports[`watchFiles option should work with options {"usePolling":true,"interval } `; -exports[`watchFiles option should work with options {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":true,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -310,17 +378,21 @@ exports[`watchFiles option should work with options {"usePolling":true,"poll":20 } `; -exports[`watchFiles option should work with options {"usePolling":true,"poll":200} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":true,"poll":200} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":true,"poll":200} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {"usePolling":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -336,17 +408,21 @@ exports[`watchFiles option should work with options {"usePolling":true} should r } `; -exports[`watchFiles option should work with options {"usePolling":true} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {"usePolling":true} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {"usePolling":true} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -362,7 +438,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 2`] = ` { "alwaysStat": true, "atomic": false, @@ -378,7 +454,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 3`] = ` { "alwaysStat": true, "atomic": false, @@ -394,7 +470,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 4`] = ` { "alwaysStat": true, "atomic": false, @@ -410,7 +486,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 5`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 5`] = ` { "alwaysStat": true, "atomic": true, @@ -426,7 +502,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 6`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 6`] = ` { "alwaysStat": undefined, "atomic": false, @@ -442,7 +518,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 7`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 7`] = ` { "alwaysStat": true, "atomic": false, @@ -459,7 +535,7 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed 8`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 8`] = ` { "alwaysStat": true, "atomic": false, @@ -475,112 +551,156 @@ exports[`watchFiles option should work with options {} should reload when file c } `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 2`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 3`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 3`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 4`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 4`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 5`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 5`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 6`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 6`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 7`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 7`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: console messages 8`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 8`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 2`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 2`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 3`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 3`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 4`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 4`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 5`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 5`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 6`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 6`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 7`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 7`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: page errors 8`] = `[]`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 8`] = ` +[] +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 2`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 2`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 3`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 3`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 4`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 4`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 5`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 5`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 6`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 6`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 7`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 7`] = ` +200 +`; -exports[`watchFiles option should work with options {} should reload when file content is changed: response status 8`] = `200`; +exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 8`] = ` +200 +`; -exports[`watchFiles option should work with string and glob should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with string and glob > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with string and glob should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with string and glob > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with string and glob should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with string and glob > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with string and path to directory should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with string and path to directory should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with string and path to directory should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > response status 1`] = ` +200 +`; -exports[`watchFiles option should work with string and path to file should reload when file content is changed: console messages 1`] = ` +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > console messages 1`] = ` [ "Hey.", ] `; -exports[`watchFiles option should work with string and path to file should reload when file content is changed: page errors 1`] = `[]`; +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > page errors 1`] = ` +[] +`; -exports[`watchFiles option should work with string and path to file should reload when file content is changed: response status 1`] = `200`; +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > response status 1`] = ` +200 +`; diff --git a/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 index 5a31cc7769..ea9829f59f 100644 --- a/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`web socket communication should work and close web socket client connection when web socket server closed ("ws"): console messages 1`] = ` +exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -10,9 +8,11 @@ exports[`web socket communication should work and close web socket client connec ] `; -exports[`web socket communication should work and close web socket client connection when web socket server closed ("ws"): page errors 1`] = `[]`; +exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket communication should work and reconnect when the connection is lost ("ws"): console messages 1`] = ` +exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,9 +30,11 @@ exports[`web socket communication should work and reconnect when the connection ] `; -exports[`web socket communication should work and reconnect when the connection is lost ("ws"): page errors 1`] = `[]`; +exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket communication should work and terminate client that is not alive ("ws"): console messages 1`] = ` +exports[`web socket communication > should work and terminate client that is not alive ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -40,4 +42,6 @@ exports[`web socket communication should work and terminate client that is not a ] `; -exports[`web socket communication should work and terminate client that is not alive ("ws"): page errors 1`] = `[]`; +exports[`web socket communication > should work and terminate client that is not alive ("ws") > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 index 931f7df51e..eabbe65016 100644 --- a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`web socket server URL should not work and output disconnect wrong web socket URL ("ws"): console messages 1`] = ` +exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -11,21 +9,23 @@ exports[`web socket server URL should not work and output disconnect wrong web s ] `; -exports[`web socket server URL should not work and output disconnect wrong web socket URL ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work and throw an error on invalid web socket URL ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", ] `; -exports[`web socket server URL should work and throw an error on invalid web socket URL ("ws"): page errors 1`] = ` +exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") > page errors 1`] = ` [ "Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. 'unknown' is not allowed.", ] `; -exports[`web socket server URL should work behind proxy, when hostnames are different and ports are different ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -33,9 +33,11 @@ exports[`web socket server URL should work behind proxy, when hostnames are diff ] `; -exports[`web socket server URL should work behind proxy, when hostnames are different and ports are different ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work behind proxy, when hostnames are different and ports are same ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -43,9 +45,11 @@ exports[`web socket server URL should work behind proxy, when hostnames are diff ] `; -exports[`web socket server URL should work behind proxy, when hostnames are different and ports are same ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work behind proxy, when hostnames are same and ports are different ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -53,9 +57,11 @@ exports[`web socket server URL should work behind proxy, when hostnames are same ] `; -exports[`web socket server URL should work behind proxy, when hostnames are same and ports are different ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -63,9 +69,11 @@ exports[`web socket server URL should work behind proxy, when the "host" option ] `; -exports[`web socket server URL should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work when "host" option is "local-ip" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -73,9 +81,11 @@ exports[`web socket server URL should work when "host" option is "local-ip" ("ws ] `; -exports[`web socket server URL should work when "host" option is "local-ip" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work when "host" option is "local-ipv4" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -83,9 +93,11 @@ exports[`web socket server URL should work when "host" option is "local-ipv4" (" ] `; -exports[`web socket server URL should work when "host" option is "local-ipv4" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work when "host" option is IPv4 ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is IPv4 ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -93,9 +105,11 @@ exports[`web socket server URL should work when "host" option is IPv4 ("ws"): co ] `; -exports[`web socket server URL should work when "host" option is IPv4 ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work when "host" option is IPv4 ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work when "port" option is "auto" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work when "port" option is "auto" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -103,9 +117,11 @@ exports[`web socket server URL should work when "port" option is "auto" ("ws"): ] `; -exports[`web socket server URL should work when "port" option is "auto" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work when "port" option is "auto" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with "client.webSocketURL.*" options ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -113,9 +129,11 @@ exports[`web socket server URL should work with "client.webSocketURL.*" options ] `; -exports[`web socket server URL should work with "client.webSocketURL.*" options ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -123,9 +141,11 @@ exports[`web socket server URL should work with "client.webSocketURL.port" and " ] `; -exports[`web socket server URL should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with "server: 'https'" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with "server: 'https'" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -133,9 +153,11 @@ exports[`web socket server URL should work with "server: 'https'" option ("ws"): ] `; -exports[`web socket server URL should work with "server: 'https'" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with "server: 'https'" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -143,9 +165,11 @@ exports[`web socket server URL should work with default "/ws" value of the "clie ] `; -exports[`web socket server URL should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL" option as "string" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -153,9 +177,11 @@ exports[`web socket server URL should work with the "client.webSocketURL" option ] `; -exports[`web socket server URL should work with the "client.webSocketURL" option as "string" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.host" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -163,9 +189,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.host" o ] `; -exports[`web socket server URL should work with the "client.webSocketURL.host" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -173,9 +201,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.host" o ] `; -exports[`web socket server URL should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.password" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -183,9 +213,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.passwor ] `; -exports[`web socket server URL should work with the "client.webSocketURL.password" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -193,7 +225,7 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option ("ws"): console messages 2`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -201,11 +233,15 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option ("ws"): page errors 2`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > page errors 2`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -213,9 +249,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -223,9 +261,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -233,9 +273,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -243,9 +285,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.pathnam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.port" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -253,9 +297,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.port" o ] `; -exports[`web socket server URL should work with the "client.webSocketURL.port" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.port" option as string ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -263,9 +309,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.port" o ] `; -exports[`web socket server URL should work with the "client.webSocketURL.port" option as string ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.port" option using "0" value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -273,9 +321,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.port" o ] `; -exports[`web socket server URL should work with the "client.webSocketURL.port" option using "0" value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -283,9 +333,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.protoco ] `; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -293,9 +345,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.protoco ] `; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -303,9 +357,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.protoco ] `; -exports[`web socket server URL should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -313,9 +369,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.usernam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the "client.webSocketURL.username" option ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -323,9 +381,11 @@ exports[`web socket server URL should work with the "client.webSocketURL.usernam ] `; -exports[`web socket server URL should work with the "client.webSocketURL.username" option ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the custom web socket server "path" ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -333,9 +393,11 @@ exports[`web socket server URL should work with the custom web socket server "pa ] `; -exports[`web socket server URL should work with the custom web socket server "path" ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the custom web socket server "path" ("ws") > page errors 1`] = ` +[] +`; -exports[`web socket server URL should work with the custom web socket server "path" using empty value ("ws"): console messages 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") > console messages 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -343,4 +405,6 @@ exports[`web socket server URL should work with the custom web socket server "pa ] `; -exports[`web socket server URL should work with the custom web socket server "path" using empty value ("ws"): page errors 1`] = `[]`; +exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") > page errors 1`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 index db4b4ffb5b..595665ebd9 100644 --- a/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 @@ -1,9 +1,9 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`web socket server should work allow to disable: console messages 1`] = ` +exports[`web socket server > should work allow to disable > console messages 1`] = ` [ "Hey.", ] `; -exports[`web socket server should work allow to disable: page errors 1`] = `[]`; +exports[`web socket server > should work allow to disable > page errors 1`] = ` +[] +`; diff --git a/test/e2e/allowed-hosts.test.js b/test/e2e/allowed-hosts.test.js index 7f7f9b492d..c2d5016faa 100644 --- a/test/e2e/allowed-hosts.test.js +++ b/test/e2e/allowed-hosts.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); + const express = require("express"); const { createProxyMiddleware } = require("http-proxy-middleware"); const webpack = require("webpack"); @@ -12,7 +14,7 @@ const webSocketServers = ["ws"]; describe("allowed hosts", () => { for (const webSocketServer of webSocketServers) { - it(`should connect web socket client using localhost to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using localhost to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "localhost"; const devServerPort = port1; const proxyHost = devServerHost; @@ -73,10 +75,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -85,7 +87,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "localhost" host to web socket server by default ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "localhost" host to web socket server by default ("${webSocketServer}")`, async (t) => { const devServerHost = "localhost"; const devServerPort = port1; const proxyHost = devServerHost; @@ -146,10 +148,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -158,7 +160,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "127.0.0.1" host to web socket server by default ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "127.0.0.1" host to web socket server by default ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -219,10 +221,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -231,7 +233,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -293,10 +295,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -305,7 +307,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "[::1] host to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "[::1] host to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "::1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -367,10 +369,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -379,7 +381,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "0.0.0.0"; const IPv4 = Server.findIp("v4"); const devServerPort = port1; @@ -442,10 +444,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -454,7 +456,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "file:" protocol to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "file:" protocol to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -521,10 +523,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -533,7 +535,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -600,10 +602,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -612,7 +614,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom hostname to web socket server with the "all" value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom hostname to web socket server with the "all" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -680,10 +682,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -692,7 +694,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom hostname to web socket server with the "all" value in array ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom hostname to web socket server with the "all" value in array ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -760,10 +762,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -772,7 +774,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom hostname to web socket server with the custom hostname value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom hostname to web socket server with the custom hostname value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -840,10 +842,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -852,7 +854,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -920,10 +922,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -932,7 +934,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1003,10 +1005,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1015,7 +1017,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("${webSocketServer}")`, async () => { + it(`should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1083,10 +1085,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1095,7 +1097,7 @@ describe("allowed hosts", () => { } }); - it(`should connect web socket client using origin header containing an IP address with the custom hostname value ("${webSocketServer}")`, async () => { + it(`should connect web socket client using origin header containing an IP address with the custom hostname value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1163,10 +1165,12 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("(work) console messages"); - expect(pageErrors).toMatchSnapshot("(work) page errors"); + await t.test("(work) console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("(work) page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } finally { proxy.close(); @@ -1175,7 +1179,7 @@ describe("allowed hosts", () => { } }); - it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("${webSocketServer}")`, async () => { + it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1243,10 +1247,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1255,7 +1259,7 @@ describe("allowed hosts", () => { } }); - it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("${webSocketServer}")`, async () => { + it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1326,10 +1330,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1338,7 +1342,7 @@ describe("allowed hosts", () => { } }); - it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("${webSocketServer}")`, async () => { + it(`should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1406,10 +1410,10 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1418,7 +1422,7 @@ describe("allowed hosts", () => { } }); - it(`should disconnect web client using localhost to web socket server with the "auto" value ("${webSocketServer}")`, async () => { + it(`should disconnect web client using localhost to web socket server with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1489,11 +1493,11 @@ describe("allowed hosts", () => { const html = await page.content(); - expect(html).toMatchSnapshot("html"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("html", async (t) => t.assert.snapshot(html)); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -1502,7 +1506,7 @@ describe("allowed hosts", () => { } }); - it(`should disconnect web client using origin header containing an IP address with the "auto" value ("${webSocketServer}")`, async () => { + it(`should disconnect web client using origin header containing an IP address with the "auto" value ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -1570,10 +1574,12 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("(work) console messages"); - expect(pageErrors).toMatchSnapshot("(work) page errors"); + await t.test("(work) console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("(work) page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } finally { proxy.close(); @@ -1602,7 +1608,7 @@ describe("allowed hosts", () => { await server.stop(); }); - it("should always allow `localhost` if options.allowedHosts is auto", async () => { + it("should always allow `localhost` if options.allowedHosts is auto", async (t) => { const options = { allowedHosts: "auto", port: port1, @@ -1634,16 +1640,18 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should always allow `localhost` subdomain if options.allowedHosts is auto", async () => { + it("should always allow `localhost` subdomain if options.allowedHosts is auto", async (t) => { const options = { allowedHosts: "auto", port: port1, @@ -1675,16 +1683,18 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should always allow value from the `host` options if options.allowedHosts is auto", async () => { + it("should always allow value from the `host` options if options.allowedHosts is auto", async (t) => { const networkIP = Server.findIp("v4", false); const options = { host: networkIP, @@ -1718,16 +1728,18 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should always allow value of the `host` option from the `client.webSocketURL` option if options.allowedHosts is auto", async () => { + it("should always allow value of the `host` option from the `client.webSocketURL` option if options.allowedHosts is auto", async (t) => { const options = { allowedHosts: "auto", port: port1, @@ -1762,16 +1774,18 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should always allow any host if options.allowedHosts is all", async () => { + it("should always allow any host if options.allowedHosts is all", async (t) => { const options = { allowedHosts: "all", port: port1, @@ -1802,16 +1816,18 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should allow hosts in allowedHosts", async () => { + it("should allow hosts in allowedHosts", async (t) => { const tests = ["test.host", "test2.host", "test3.host"]; const options = { allowedHosts: tests, @@ -1844,16 +1860,18 @@ describe("allowed hosts", () => { } } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should allow hosts that pass a wildcard in allowedHosts", async () => { + it("should allow hosts that pass a wildcard in allowedHosts", async (t) => { const options = { allowedHosts: [".example.com"], port: port1, @@ -1894,13 +1912,15 @@ describe("allowed hosts", () => { } } - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/api.test.js b/test/e2e/api.test.js index ee09842d04..42e82bce9d 100644 --- a/test/e2e/api.test.js +++ b/test/e2e/api.test.js @@ -1,6 +1,9 @@ "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { expect } = require("expect"); +const { fn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -18,8 +21,9 @@ describe("API", () => { let consoleMessages; beforeEach(async () => { - // this is important - it clears the cache - jest.resetModules(); + // Note: jest.resetModules() removed during migration to node:test. + // It cleared require.cache between tests; mock.module() restoration + // (in afterEach / try-finally) replaces that role. process.env = { ...OLD_ENV }; @@ -37,7 +41,7 @@ describe("API", () => { process.env = OLD_ENV; }); - it("should be present", async () => { + it("should be present", async (t) => { expect(process.env.WEBPACK_SERVE).toBeUndefined(); page @@ -61,18 +65,20 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); describe("latest async API", () => { - it("should work with async API", async () => { + it("should work with async API", async (t) => { const compiler = webpack(config); const server = new Server({ port }, compiler); @@ -96,17 +102,17 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with callback API", async () => { + it("should work with callback API", async (t) => { const compiler = webpack(config); const server = new Server({ port }, compiler); @@ -134,10 +140,10 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await new Promise((resolve) => { @@ -171,7 +177,7 @@ describe("API", () => { }); }); - it("should work when using configured manually", async () => { + it("should work when using configured manually", async (t) => { const compiler = webpack({ ...config, entry: [ @@ -205,17 +211,17 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work and allow to rerun dev server multiple times", async () => { + it("should work and allow to rerun dev server multiple times", async (t) => { const compiler = webpack(config); const server = new Server({ port }, compiler); @@ -239,10 +245,14 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect( - firstConsoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(firstPageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot( + firstConsoleMessages.map((message) => message.text()), + ), + ); + await t.test("page errors", async (t) => + t.assert.snapshot(firstPageErrors), + ); } finally { await server.stop(); } @@ -267,10 +277,14 @@ describe("API", () => { waitUntil: "networkidle0", }); - expect( - secondConsoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(secondPageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot( + secondConsoleMessages.map((message) => message.text()), + ), + ); + await t.test("page errors", async (t) => + t.assert.snapshot(secondPageErrors), + ); } finally { await browser.close(); await server.stop(); @@ -312,8 +326,8 @@ describe("API", () => { await server.stop(); }); - it("should use the default `noop` callback when invalidate is called without any callback", async () => { - const callback = jest.fn(); + it("should use the default `noop` callback when invalidate is called without any callback", async (t) => { + const callback = fn(); server.invalidate(); server.middleware.context.callbacks[0] = callback; @@ -323,16 +337,18 @@ describe("API", () => { }); expect(callback).toHaveBeenCalledTimes(1); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should use the provided `callback` function", async () => { - const callback = jest.fn(); + it("should use the provided `callback` function", async (t) => { + const callback = fn(); server.invalidate(callback); @@ -341,13 +357,15 @@ describe("API", () => { }); expect(callback).toHaveBeenCalledTimes(1); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -429,7 +447,7 @@ describe("API", () => { expect(freePort).toBe(9082); }); - it("should return the port when the port is `null`", async () => { + it("should return the port when the port is `null`", async (t) => { const retryCount = 2; process.env.WEBPACK_DEV_SERVER_PORT_RETRY = retryCount; @@ -464,13 +482,17 @@ describe("API", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -504,7 +526,7 @@ describe("API", () => { } }); - it("should return the port when the port is undefined", async () => { + it("should return the port when the port is undefined", async (t) => { const retryCount = 3; process.env.WEBPACK_DEV_SERVER_PORT_RETRY = retryCount; @@ -540,13 +562,17 @@ describe("API", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -580,7 +606,7 @@ describe("API", () => { } }); - it("should retry finding the port for up to defaultPortRetry times (number)", async () => { + it("should retry finding the port for up to defaultPortRetry times (number)", async (t) => { const retryCount = 4; process.env.WEBPACK_DEV_SERVER_PORT_RETRY = retryCount; @@ -616,13 +642,17 @@ describe("API", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -657,7 +687,7 @@ describe("API", () => { } }); - it("should retry finding the port for up to defaultPortRetry times (string)", async () => { + it("should retry finding the port for up to defaultPortRetry times (string)", async (t) => { const retryCount = 5; process.env.WEBPACK_DEV_SERVER_PORT_RETRY = retryCount; @@ -693,13 +723,17 @@ describe("API", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -734,7 +768,7 @@ describe("API", () => { } }); - it("should retry finding the port when serial ports are busy", async () => { + it("should retry finding the port when serial ports are busy", async (t) => { const basePort = Number.parseInt( process.env.WEBPACK_DEV_SERVER_TEST_BASE_PORT || 30000, 10, @@ -772,13 +806,17 @@ describe("API", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -823,20 +861,21 @@ describe("API", () => { } }); - it("should throw the error when the port isn't found", async () => { + it("should throw the error when the port isn't found", async (t) => { expect.assertions(1); - jest.mock( - "../../lib/getPort", - () => () => Promise.reject(new Error("busy")), - ); + const getPortMock = mock.module("../../lib/getPort", { + defaultExport: () => Promise.reject(new Error("busy")), + }); process.env.WEBPACK_DEV_SERVER_PORT_RETRY = 1; try { await Server.getFreePort(); } catch (error) { - expect(error.message).toMatchSnapshot(); + t.assert.snapshot(error.message); + } finally { + getPortMock.restore(); } }); }); @@ -872,7 +911,7 @@ describe("API", () => { expect(isValidHost).toBe(true); }); - it('should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object', async () => { + it('should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object', async (t) => { const options = { port, client: { @@ -943,16 +982,23 @@ describe("API", () => { }, 100); }); - expect(webSocketRequests[0].url).toMatchSnapshot("web socket URL"); + await t.test("web socket URL", async (t) => + t.assert.snapshot(webSocketRequests[0].url), + ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - // net::ERR_NAME_NOT_RESOLVED can be multiple times - consoleMessages.map((message) => message.text()).slice(0, 7), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot( + consoleMessages.map((message) => message.text()).slice(0, 7), + ), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors diff --git a/test/e2e/app.test.js b/test/e2e/app.test.js index b98b9f65e9..19d9b09b8f 100644 --- a/test/e2e/app.test.js +++ b/test/e2e/app.test.js @@ -2,6 +2,8 @@ const fs = require("node:fs"); const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const wdm = require("webpack-dev-middleware"); const Server = require("../../lib/Server"); diff --git a/test/e2e/bonjour.test.js b/test/e2e/bonjour.test.js index 5f2bc90aab..f21cf78378 100644 --- a/test/e2e/bonjour.test.js +++ b/test/e2e/bonjour.test.js @@ -1,6 +1,9 @@ "use strict"; const os = require("node:os"); +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { expect } = require("expect"); +const { fn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/simple-config/webpack.config"); @@ -13,11 +16,11 @@ describe("bonjour option", () => { let mockDestroy; beforeEach(() => { - mockPublish = jest.fn(); - mockUnpublishAll = jest.fn((callback) => { + mockPublish = fn(); + mockUnpublishAll = fn((callback) => { callback(); }); - mockDestroy = jest.fn(); + mockDestroy = fn(); }); describe("as true", () => { @@ -27,15 +30,18 @@ describe("bonjour option", () => { let browser; let pageErrors; let consoleMessages; + let bonjourMock; beforeEach(async () => { - jest.mock("bonjour-service", () => ({ - Bonjour: jest.fn().mockImplementation(() => ({ - publish: mockPublish, - unpublishAll: mockUnpublishAll, - destroy: mockDestroy, - })), - })); + bonjourMock = mock.module("bonjour-service", { + namedExports: { + Bonjour: fn().mockImplementation(() => ({ + publish: mockPublish, + unpublishAll: mockUnpublishAll, + destroy: mockDestroy, + })), + }, + }); compiler = webpack(config); @@ -56,9 +62,10 @@ describe("bonjour option", () => { mockPublish.mockReset(); mockUnpublishAll.mockReset(); mockDestroy.mockReset(); + bonjourMock.restore(); }); - it("should call bonjour with correct params", async () => { + it("should call bonjour with correct params", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -83,13 +90,15 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -100,15 +109,18 @@ describe("bonjour option", () => { let browser; let pageErrors; let consoleMessages; + let bonjourMock; beforeEach(async () => { - jest.mock("bonjour-service", () => ({ - Bonjour: jest.fn().mockImplementation(() => ({ - publish: mockPublish, - unpublishAll: mockUnpublishAll, - destroy: mockDestroy, - })), - })); + bonjourMock = mock.module("bonjour-service", { + namedExports: { + Bonjour: fn().mockImplementation(() => ({ + publish: mockPublish, + unpublishAll: mockUnpublishAll, + destroy: mockDestroy, + })), + }, + }); compiler = webpack(config); @@ -125,9 +137,10 @@ describe("bonjour option", () => { afterEach(async () => { await browser.close(); await server.stop(); + bonjourMock.restore(); }); - it("should call bonjour with 'https' type", async () => { + it("should call bonjour with 'https' type", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -152,13 +165,15 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -169,15 +184,18 @@ describe("bonjour option", () => { let browser; let pageErrors; let consoleMessages; + let bonjourMock; beforeEach(async () => { - jest.mock("bonjour-service", () => ({ - Bonjour: jest.fn().mockImplementation(() => ({ - publish: mockPublish, - unpublishAll: mockUnpublishAll, - destroy: mockDestroy, - })), - })); + bonjourMock = mock.module("bonjour-service", { + namedExports: { + Bonjour: fn().mockImplementation(() => ({ + publish: mockPublish, + unpublishAll: mockUnpublishAll, + destroy: mockDestroy, + })), + }, + }); compiler = webpack(config); @@ -203,9 +221,10 @@ describe("bonjour option", () => { afterEach(async () => { await browser.close(); await server.stop(); + bonjourMock.restore(); }); - it("should apply bonjour options", async () => { + it("should apply bonjour options", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -231,13 +250,15 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -248,15 +269,18 @@ describe("bonjour option", () => { let browser; let pageErrors; let consoleMessages; + let bonjourMock; beforeEach(async () => { - jest.mock("bonjour-service", () => ({ - Bonjour: jest.fn().mockImplementation(() => ({ - publish: mockPublish, - unpublishAll: mockUnpublishAll, - destroy: mockDestroy, - })), - })); + bonjourMock = mock.module("bonjour-service", { + namedExports: { + Bonjour: fn().mockImplementation(() => ({ + publish: mockPublish, + unpublishAll: mockUnpublishAll, + destroy: mockDestroy, + })), + }, + }); compiler = webpack(config); @@ -285,9 +309,10 @@ describe("bonjour option", () => { afterEach(async () => { await browser.close(); await server.stop(); + bonjourMock.restore(); }); - it("should apply bonjour options", async () => { + it("should apply bonjour options", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -313,13 +338,15 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/built-in-routes.test.js b/test/e2e/built-in-routes.test.js index a0af821a2a..abf2608d34 100644 --- a/test/e2e/built-in-routes.test.js +++ b/test/e2e/built-in-routes.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -33,7 +35,7 @@ describe("Built in routes", () => { await server.stop(); }); - it("should handle GET request to invalidate endpoint", async () => { + it("should handle GET request to invalidate endpoint", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -51,16 +53,18 @@ describe("Built in routes", () => { expect(response.headers()["content-type"]).not.toBe("text/html"); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle GET request to directory index and list all middleware directories", async () => { + it("should handle GET request to directory index and list all middleware directories", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -76,22 +80,26 @@ describe("Built in routes", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("directory list"); + await t.test("directory list", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle HEAD request to directory index", async () => { + it("should handle HEAD request to directory index", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -112,22 +120,26 @@ describe("Built in routes", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("directory list"); + await t.test("directory list", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle GET request to magic async chunk", async () => { + it("should handle GET request to magic async chunk", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -140,18 +152,20 @@ describe("Built in routes", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); }); - it("should handle HEAD request to magic async chunk", async () => { + it("should handle HEAD request to magic async chunk", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -169,14 +183,16 @@ describe("Built in routes", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); }); }); @@ -206,7 +222,7 @@ describe("Built in routes", () => { await server.stop(); }); - it("should handle GET request to directory index and list all middleware directories", async () => { + it("should handle GET request to directory index and list all middleware directories", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -222,19 +238,23 @@ describe("Built in routes", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("directory list"); + await t.test("directory list", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/client-reconnect.test.js b/test/e2e/client-reconnect.test.js index eff831783d..c39c0a35f7 100644 --- a/test/e2e/client-reconnect.test.js +++ b/test/e2e/client-reconnect.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/simple-config/webpack.config"); @@ -32,7 +34,7 @@ describe("client.reconnect option", () => { await browser.close(); }); - it("should try to reconnect unlimited times", async () => { + it("should try to reconnect unlimited times", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -46,7 +48,9 @@ describe("client.reconnect option", () => { }); try { - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); } finally { await server.stop(); } @@ -67,7 +71,7 @@ describe("client.reconnect option", () => { }, 1000); }); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -96,7 +100,7 @@ describe("client.reconnect option", () => { await browser.close(); }); - it("should not try to reconnect", async () => { + it("should not try to reconnect", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -110,7 +114,9 @@ describe("client.reconnect option", () => { }); try { - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); } finally { await server.stop(); } @@ -125,11 +131,11 @@ describe("client.reconnect option", () => { ); }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -158,7 +164,7 @@ describe("client.reconnect option", () => { await browser.close(); }); - it("should try to reconnect 2 times", async () => { + it("should try to reconnect 2 times", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -172,7 +178,9 @@ describe("client.reconnect option", () => { }); try { - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); } finally { await server.stop(); } @@ -187,11 +195,11 @@ describe("client.reconnect option", () => { ); }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/client.test.js b/test/e2e/client.test.js index 5c779a2cbd..02e4410f96 100644 --- a/test/e2e/client.test.js +++ b/test/e2e/client.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -43,7 +45,7 @@ describe("client option", () => { await server.stop(); }); - it("responds with a 200 status code for / path", async () => { + it("responds with a 200 status code for / path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -74,17 +76,19 @@ describe("client option", () => { // overlay should be true by default expect(server.options.client.overlay).toBe(true); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(webSocketRequests.map((request) => request.url)).toMatchSnapshot( - "webSockets", + await t.test("webSockets", async (t) => + t.assert.snapshot(webSocketRequests.map((request) => request.url)), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -132,7 +136,7 @@ describe("client option", () => { await server.stop(); }); - it("responds with a websocket with the /foo/test/bar path", async () => { + it("responds with a websocket with the /foo/test/bar path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -160,15 +164,15 @@ describe("client option", () => { waitUntil: "networkidle0", }); - expect(webSocketRequests.map((request) => request.url)).toMatchSnapshot( - "webSockets", + await t.test("webSockets", async (t) => + t.assert.snapshot(webSocketRequests.map((request) => request.url)), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -204,7 +208,7 @@ describe("client option", () => { await server.stop(); }); - it("should disable client entry", async () => { + it("should disable client entry", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -232,17 +236,21 @@ describe("client option", () => { waitUntil: "networkidle0", }); - expect(webSocketRequests).toMatchSnapshot("webSockets"); + await t.test("webSockets", async (t) => + t.assert.snapshot(webSocketRequests), + ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); expect(await response.text()).not.toMatch(/client\/index\.js/); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -286,12 +294,14 @@ describe("client option", () => { await server.stop(); }); - it("should disable client entry", async () => { + it("should disable client entry", async (t) => { const response = await page.goto(`http://localhost:${port}/main.js`, { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); const content = await response.text(); expect(content).toContain("CustomClientEntry.js"); diff --git a/test/e2e/compress.test.js b/test/e2e/compress.test.js index 4436292e8f..50b3748133 100644 --- a/test/e2e/compress.test.js +++ b/test/e2e/compress.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/simple-config-other/webpack.config"); @@ -33,7 +35,7 @@ describe("compress option", () => { await server.stop(); }); - it("should handle GET request to bundle file", async () => { + it("should handle GET request to bundle file", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -46,17 +48,19 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-encoding"]).toMatchSnapshot( - "response headers content-encoding", + await t.test("response headers content-encoding", async (t) => + t.assert.snapshot(response.headers()["content-encoding"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -92,7 +96,7 @@ describe("compress option", () => { await server.stop(); }); - it("should handle GET request to bundle file", async () => { + it("should handle GET request to bundle file", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -105,17 +109,19 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-encoding"]).toMatchSnapshot( - "response headers content-encoding", + await t.test("response headers content-encoding", async (t) => + t.assert.snapshot(response.headers()["content-encoding"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -151,7 +157,7 @@ describe("compress option", () => { await server.stop(); }); - it("should handle GET request to bundle file", async () => { + it("should handle GET request to bundle file", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -164,17 +170,19 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-encoding"]).toMatchSnapshot( - "response headers content-encoding", + await t.test("response headers content-encoding", async (t) => + t.assert.snapshot(response.headers()["content-encoding"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/cross-origin-request.test.js b/test/e2e/cross-origin-request.test.js index d003024928..76bb7ed71c 100644 --- a/test/e2e/cross-origin-request.test.js +++ b/test/e2e/cross-origin-request.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); diff --git a/test/e2e/entry.test.js b/test/e2e/entry.test.js index 311d87c333..2639c91802 100644 --- a/test/e2e/entry.test.js +++ b/test/e2e/entry.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -32,7 +34,7 @@ describe("entry", () => { "../fixtures/client-config/bar.js", ); - it("should work with single entry", async () => { + it("should work with single entry", async (t) => { const compiler = webpack({ ...config, entry: entryFirst }); const devServerOptions = { port, @@ -59,17 +61,17 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with single array entry", async () => { + it("should work with single array entry", async (t) => { const compiler = webpack({ ...config, entry: [entryFirst, entrySecond] }); const devServerOptions = { port, @@ -96,17 +98,17 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with object entry", async () => { + it("should work with object entry", async (t) => { const compiler = webpack({ ...config, entry: { @@ -138,17 +140,17 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with dynamic entry", async () => { + it("should work with dynamic entry", async (t) => { const compiler = webpack({ ...config, entry: () => entryFirst }); const devServerOptions = { port, @@ -175,17 +177,17 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with dynamic async entry", async () => { + it("should work with dynamic async entry", async (t) => { const compiler = webpack({ ...config, entry: () => @@ -218,17 +220,17 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with multiple entries", async () => { + it("should work with multiple entries", async (t) => { const compiler = webpack({ ...config, entry: { @@ -269,15 +271,17 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/foo.js` }); await waitForConsoleLogFinished(consoleMessages); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with multiple entries #2", async () => { + it("should work with multiple entries #2", async (t) => { const compiler = webpack({ ...config, entry: { @@ -318,15 +322,17 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/bar.js` }); await waitForConsoleLogFinished(consoleMessages); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it('should work with multiple entries and "dependOn"', async () => { + it('should work with multiple entries and "dependOn"', async (t) => { const compiler = webpack({ ...config, entry: { @@ -365,15 +371,17 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/foo.js` }); await waitForConsoleLogFinished(consoleMessages); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with empty", async () => { + it("should work with empty", async (t) => { const compiler = webpack({ ...config, entry: {}, @@ -408,10 +416,10 @@ describe("entry", () => { waitUntil: "networkidle0", }); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/headers.test.js b/test/e2e/headers.test.js index efaddab452..67400fd7d0 100644 --- a/test/e2e/headers.test.js +++ b/test/e2e/headers.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const request = require("supertest"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -40,7 +42,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers", async () => { + it("should handle GET request with headers", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -53,17 +55,19 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-foo"]).toMatchSnapshot( - "response headers x-foo", + await t.test("response headers x-foo", async (t) => + t.assert.snapshot(response.headers()["x-foo"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -108,7 +112,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers", async () => { + it("should handle GET request with headers", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -121,21 +125,23 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-foo"]).toMatchSnapshot( - "response headers x-foo", + await t.test("response headers x-foo", async (t) => + t.assert.snapshot(response.headers()["x-foo"]), ); - expect(response.headers()["x-bar"]).toMatchSnapshot( - "response headers x-bar", + await t.test("response headers x-bar", async (t) => + t.assert.snapshot(response.headers()["x-bar"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -171,7 +177,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers as an array", async () => { + it("should handle GET request with headers as an array", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -184,17 +190,19 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-bar"]).toMatchSnapshot( - "response headers x-bar", + await t.test("response headers x-bar", async (t) => + t.assert.snapshot(response.headers()["x-bar"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -230,7 +238,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers as a function", async () => { + it("should handle GET request with headers as a function", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -243,17 +251,19 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-bar"]).toMatchSnapshot( - "response headers x-bar", + await t.test("response headers x-bar", async (t) => + t.assert.snapshot(response.headers()["x-bar"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -298,7 +308,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers", async () => { + it("should handle GET request with headers", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -311,21 +321,23 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-foo"]).toMatchSnapshot( - "response headers x-foo", + await t.test("response headers x-foo", async (t) => + t.assert.snapshot(response.headers()["x-foo"]), ); - expect(response.headers()["x-bar"]).toMatchSnapshot( - "response headers x-bar", + await t.test("response headers x-bar", async (t) => + t.assert.snapshot(response.headers()["x-bar"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -364,7 +376,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle GET request with headers as a function", async () => { + it("should handle GET request with headers as a function", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -377,17 +389,19 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-foo"]).toMatchSnapshot( - "response headers x-foo", + await t.test("response headers x-foo", async (t) => + t.assert.snapshot(response.headers()["x-foo"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -426,7 +440,7 @@ describe("headers option", () => { await server.stop(); }); - it("should handle HEAD request with headers", async () => { + it("should handle HEAD request with headers", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -439,14 +453,16 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["x-foo"]).toMatchSnapshot( - "response headers x-foo", + await t.test("response headers x-foo", async (t) => + t.assert.snapshot(response.headers()["x-foo"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), ); - expect(response.status()).toMatchSnapshot("response status"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); const responseForHead = await req.get("/"); diff --git a/test/e2e/history-api-fallback.test.js b/test/e2e/history-api-fallback.test.js index b6506e85af..25e76571f2 100644 --- a/test/e2e/history-api-fallback.test.js +++ b/test/e2e/history-api-fallback.test.js @@ -1,6 +1,9 @@ "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); +const { spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config2 = require("../fixtures/historyapifallback-2-config/webpack.config"); @@ -42,7 +45,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("should handle GET request to directory", async () => { + it("should handle GET request to directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -55,19 +58,23 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -105,7 +112,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("should handle GET request to directory", async () => { + it("should handle GET request to directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -118,19 +125,23 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -172,7 +183,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("should handle GET request to directory", async () => { + it("should handle GET request to directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -185,22 +196,26 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should prefer static file over historyApiFallback", async () => { + it("should prefer static file over historyApiFallback", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -216,19 +231,23 @@ describe("historyApiFallback option", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -267,7 +286,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("historyApiFallback should work and ignore static content", async () => { + it("historyApiFallback should work and ignore static content", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -280,19 +299,23 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -343,7 +366,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("historyApiFallback respect rewrites for index", async () => { + it("historyApiFallback respect rewrites for index", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -356,22 +379,26 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("historyApiFallback respect rewrites and shows index for unknown urls", async () => { + it("historyApiFallback respect rewrites and shows index for unknown urls", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -384,22 +411,26 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("historyApiFallback respect any other specified rewrites", async () => { + it("historyApiFallback respect any other specified rewrites", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -412,19 +443,23 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -438,7 +473,7 @@ describe("historyApiFallback option", () => { let consoleSpy; beforeEach(async () => { - consoleSpy = jest.spyOn(globalThis.console, "log"); + consoleSpy = spyOn(globalThis.console, "log"); compiler = webpack(config); @@ -467,7 +502,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("request to directory and log", async () => { + it("request to directory and log", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -480,13 +515,17 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); expect(consoleSpy).toHaveBeenCalledWith( "Rewriting", @@ -496,11 +535,11 @@ describe("historyApiFallback option", () => { "/bar.html", ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -514,7 +553,7 @@ describe("historyApiFallback option", () => { let consoleSpy; beforeEach(async () => { - consoleSpy = jest.spyOn(globalThis.console, "log"); + consoleSpy = spyOn(globalThis.console, "log"); compiler = webpack(config); @@ -543,7 +582,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("request to directory and log", async () => { + it("request to directory and log", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -556,13 +595,17 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); expect(consoleSpy).toHaveBeenCalledWith( "Rewriting", @@ -572,11 +615,11 @@ describe("historyApiFallback option", () => { "/bar.html", ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -616,7 +659,7 @@ describe("historyApiFallback option", () => { await server.stop(); }); - it("should take precedence over static files", async () => { + it("should take precedence over static files", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -629,22 +672,26 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should perform HEAD request in same way as GET", async () => { + it("should perform HEAD request in same way as GET", async (t) => { await page.goto(`http://localhost:${port}/foo`, { waitUntil: "networkidle0", }); @@ -659,13 +706,17 @@ describe("historyApiFallback option", () => { }; }); - expect(responseGet.contentType).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(responseGet.contentType), ); - expect(responseGet.statusText).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(responseGet.statusText), + ); - expect(responseGet.text).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(responseGet.text), + ); const responseHead = await page.evaluate(async () => { const response = await fetch("/foo", { method: "HEAD" }); diff --git a/test/e2e/host.test.js b/test/e2e/host.test.js index fe79392ca4..b12c81a345 100644 --- a/test/e2e/host.test.js +++ b/test/e2e/host.test.js @@ -1,6 +1,7 @@ "use strict"; const http = require("node:http"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -71,7 +72,7 @@ describe("host", () => { ]; for (const host of hosts) { - it(`should work using "${host}" host and port as number`, async () => { + it(`should work using "${host}" host and port as number`, async (t) => { const compiler = webpack(config); const devServerOptions = { port }; @@ -134,18 +135,18 @@ describe("host", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work using "${host}" host and port as string`, async () => { + it(`should work using "${host}" host and port as string`, async (t) => { const compiler = webpack(config); const devServerOptions = { port: `${port}` }; @@ -208,18 +209,18 @@ describe("host", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work using "${host}" host and "auto" port`, async () => { + it(`should work using "${host}" host and "auto" port`, async (t) => { const compiler = webpack(config); process.env.WEBPACK_DEV_SERVER_BASE_PORT = port; @@ -286,11 +287,11 @@ describe("host", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { delete process.env.WEBPACK_DEV_SERVER_BASE_PORT; diff --git a/test/e2e/hot-and-live-reload.test.js b/test/e2e/hot-and-live-reload.test.js index 9778b2cd5f..b112bc89d2 100644 --- a/test/e2e/hot-and-live-reload.test.js +++ b/test/e2e/hot-and-live-reload.test.js @@ -1,11 +1,10 @@ -/** - * @jest-environment node - */ - "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); +const { fn, spyOn } = require("jest-mock"); const webpack = require("webpack"); const WebSocket = require("ws"); const Server = require("../../lib/Server"); @@ -267,7 +266,7 @@ describe("hot and live reload", () => { : "default"; // eslint-disable-next-line no-loop-func - it(`${mode.title} (${webSocketServerTitle})`, async () => { + it(`${mode.title} (${webSocketServerTitle})`, async (t) => { const webpackOptions = { ...reloadConfig, ...mode.webpackOptions }; const compiler = webpack(webpackOptions); const testDevServerOptions = mode.options || {}; @@ -452,8 +451,10 @@ describe("hot and live reload", () => { expect(backgroundColorAfter).toBe("rgb(255, 0, 0)"); } - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); } }); @@ -483,7 +484,7 @@ describe("simple hot config HMR plugin", () => { await server.stop(); }); - it("should register the HMR plugin before compilation is complete", async () => { + it("should register the HMR plugin before compilation is complete", async (t) => { let pluginFound = false; compiler.hooks.compilation.intercept({ @@ -514,13 +515,15 @@ describe("simple hot config HMR plugin", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -549,7 +552,7 @@ describe("simple hot config HMR plugin with already added HMR plugin", () => { await server.stop(); }); - it("should register the HMR plugin before compilation is complete", async () => { + it("should register the HMR plugin before compilation is complete", async (t) => { let pluginFound = false; compiler.hooks.compilation.intercept({ @@ -581,13 +584,15 @@ describe("simple hot config HMR plugin with already added HMR plugin", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -604,15 +609,16 @@ describe("simple config with already added HMR plugin", () => { plugins: [...config.plugins, new webpack.HotModuleReplacementPlugin()], }); - loggerWarnSpy = jest.fn(); + loggerWarnSpy = fn(); - getInfrastructureLoggerSpy = jest - .spyOn(compiler, "getInfrastructureLogger") - .mockImplementation(() => ({ - warn: loggerWarnSpy, - info: () => {}, - log: () => {}, - })); + getInfrastructureLoggerSpy = spyOn( + compiler, + "getInfrastructureLogger", + ).mockImplementation(() => ({ + warn: loggerWarnSpy, + info: () => {}, + log: () => {}, + })); }); afterEach(() => { @@ -679,7 +685,7 @@ describe("multi compiler hot config HMR plugin", () => { await server.stop(); }); - it("should register the HMR plugin before compilation is complete", async () => { + it("should register the HMR plugin before compilation is complete", async (t) => { let pluginFound = false; compiler.compilers[0].hooks.compilation.intercept({ @@ -710,13 +716,15 @@ describe("multi compiler hot config HMR plugin", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -742,7 +750,7 @@ describe("hot disabled HMR plugin", () => { await server.stop(); }); - it("should NOT register the HMR plugin before compilation is complete", async () => { + it("should NOT register the HMR plugin before compilation is complete", async (t) => { let pluginFound = false; compiler.hooks.compilation.intercept({ @@ -773,12 +781,14 @@ describe("hot disabled HMR plugin", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); diff --git a/test/e2e/ipc.test.js b/test/e2e/ipc.test.js index 519c9e1ea4..60ff6fc5f3 100644 --- a/test/e2e/ipc.test.js +++ b/test/e2e/ipc.test.js @@ -4,6 +4,8 @@ const http = require("node:http"); const net = require("node:net"); const os = require("node:os"); const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const httpProxy = require("http-proxy"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -18,7 +20,7 @@ describe("web socket server URL", () => { for (const webSocketServer of webSocketServers) { const websocketURLProtocol = webSocketServer; - it(`should work with the "ipc" option using "true" value ("${webSocketServer}")`, async () => { + it(`should work with the "ipc" option using "true" value ("${webSocketServer}")`, async (t) => { const devServerHost = "localhost"; const proxyHost = devServerHost; const proxyPort = port1; @@ -95,10 +97,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -107,7 +109,7 @@ describe("web socket server URL", () => { } }); - it(`should work with the "ipc" option using "string" value ("${webSocketServer}")`, async () => { + it(`should work with the "ipc" option using "string" value ("${webSocketServer}")`, async (t) => { const isWindows = process.platform === "win32"; const pipePrefix = isWindows ? "\\\\.\\pipe\\" : os.tmpdir(); const pipeName = `webpack-dev-server.${process.pid}-1.sock`; @@ -189,10 +191,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -202,8 +204,8 @@ describe("web socket server URL", () => { }); // TODO un skip after implement new API - // eslint-disable-next-line jest/no-disabled-tests - it.skip(`should work with the "ipc" option using "string" value and remove old ("${webSocketServer}")`, async () => { + + it.skip(`should work with the "ipc" option using "string" value and remove old ("${webSocketServer}")`, async (t) => { const isWindows = process.platform === "win32"; const localRelative = path.relative(process.cwd(), `${os.tmpdir()}/`); const pipePrefix = isWindows ? "\\\\.\\pipe\\" : localRelative; @@ -301,10 +303,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); diff --git a/test/e2e/lazy-compilation.test.js b/test/e2e/lazy-compilation.test.js index 8bb5390fa5..f9b82e7be3 100644 --- a/test/e2e/lazy-compilation.test.js +++ b/test/e2e/lazy-compilation.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const lazyCompilationMultipleEntriesConfig = require("../fixtures/lazy-compilation-multiple-entries/webpack.config"); @@ -7,10 +9,9 @@ const lazyCompilationSingleEntryConfig = require("../fixtures/lazy-compilation-s const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["lazy-compilation"]; -/* eslint-disable jest/no-disabled-tests */ describe("lazy compilation", () => { // TODO jest freeze due webpack do not close `eventsource`, we should uncomment this after fix it on webpack side - it.skip("should work with single entry", async () => { + it.skip("should work with single entry", async (t) => { const compiler = webpack(lazyCompilationSingleEntryConfig); const server = new Server({ port }, compiler); @@ -43,15 +44,17 @@ describe("lazy compilation", () => { }, 100); }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it.skip("should work with multiple entries", async () => { + it.skip("should work with multiple entries", async (t) => { const compiler = webpack(lazyCompilationMultipleEntriesConfig); const server = new Server({ port }, compiler); @@ -99,8 +102,10 @@ describe("lazy compilation", () => { }, 100); }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/logging.test.js b/test/e2e/logging.test.js index 9ba530ba3d..c97ee8395a 100644 --- a/test/e2e/logging.test.js +++ b/test/e2e/logging.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); + const fs = require("graceful-fs"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -189,7 +191,7 @@ describe("logging", () => { for (const testCase of cases) { it(`${testCase.title} (${ webSocketServer.webSocketServer || "default" - })`, async () => { + })`, async (t) => { const compiler = webpack({ ...config, ...testCase.webpackOptions }); const devServerOptions = { port, @@ -223,7 +225,7 @@ describe("logging", () => { }); } - expect( + t.assert.snapshot( consoleMessages.map((message) => message .text() @@ -233,7 +235,7 @@ describe("logging", () => { "", ), ), - ).toMatchSnapshot(); + ); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/mime-types.test.js b/test/e2e/mime-types.test.js index ee71894d70..c37e957467 100644 --- a/test/e2e/mime-types.test.js +++ b/test/e2e/mime-types.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/mime-types-config/webpack.config"); @@ -43,7 +45,7 @@ describe("mimeTypes option", () => { await server.stop(); }); - it("should request file with different js mime type", async () => { + it("should request file with different js mime type", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -56,17 +58,19 @@ describe("mimeTypes option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -106,7 +110,7 @@ describe("mimeTypes option", () => { await server.stop(); }); - it("should request file with different js mime type", async () => { + it("should request file with different js mime type", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -119,17 +123,19 @@ describe("mimeTypes option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/module-federation.test.js b/test/e2e/module-federation.test.js index f1fa63144f..c50007e152 100644 --- a/test/e2e/module-federation.test.js +++ b/test/e2e/module-federation.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const requireFromString = require("require-from-string"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -36,7 +38,7 @@ describe("Module federation", () => { await server.stop(); }); - it("should use the last entry export", async () => { + it("should use the last entry export", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -61,11 +63,11 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -94,7 +96,7 @@ describe("Module federation", () => { await server.stop(); }); - it("should use the last entry export", async () => { + it("should use the last entry export", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -119,14 +121,14 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should support the named entry export", async () => { + it("should support the named entry export", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -151,11 +153,11 @@ describe("Module federation", () => { expect(exports).toBe("entry1"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -184,7 +186,7 @@ describe("Module federation", () => { await server.stop(); }); - it("should use the last entry export", async () => { + it("should use the last entry export", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -209,11 +211,11 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -242,7 +244,7 @@ describe("Module federation", () => { await server.stop(); }); - it("should contain hot script in remoteEntry.js", async () => { + it("should contain hot script in remoteEntry.js", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -262,14 +264,14 @@ describe("Module federation", () => { expect(remoteEntryTextContent).toMatch(/webpack\/hot\/dev-server\.js/); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should contain hot script in main.js", async () => { + it("should contain hot script in main.js", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -286,11 +288,11 @@ describe("Module federation", () => { expect(mainEntryTextContent).toMatch(/webpack\/hot\/dev-server\.js/); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 73879d5323..4de69e4296 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -11,7 +13,7 @@ const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["multi-compiler"]; describe("multi compiler", () => { - it("should work with one web target configuration and do nothing", async () => { + it("should work with one web target configuration and do nothing", async (t) => { const compiler = webpack(oneWebTargetConfiguration); const devServerOptions = { port, @@ -38,15 +40,17 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with web target configurations and do nothing", async () => { + it("should work with web target configurations and do nothing", async (t) => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -74,8 +78,10 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -84,15 +90,17 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries", async () => { + it("should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries", async (t) => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -144,8 +152,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -158,8 +168,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -169,7 +181,7 @@ describe("multi compiler", () => { } }); - it("should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries", async () => { + it("should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries", async (t) => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -221,8 +233,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -235,8 +249,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -246,7 +262,7 @@ describe("multi compiler", () => { } }); - it("should work with web target configurations when only live reload is enabled, and do live reload when changing own entries", async () => { + it("should work with web target configurations when only live reload is enabled, and do live reload when changing own entries", async (t) => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -290,8 +306,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -304,8 +322,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -315,7 +335,7 @@ describe("multi compiler", () => { } }); - it("should work with web target configurations when only live reload is enabled and do live reload when changing other entries", async () => { + it("should work with web target configurations when only live reload is enabled and do live reload when changing other entries", async (t) => { const compiler = webpack(twoWebTargetConfiguration); const devServerOptions = { port, @@ -359,8 +379,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -373,8 +395,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -384,7 +408,7 @@ describe("multi compiler", () => { } }); - it("should work with universal configuration and do nothing", async () => { + it("should work with universal configuration and do nothing", async (t) => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -426,11 +450,13 @@ describe("multi compiler", () => { await server.stop(); } - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed", async () => { + it("should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed", async (t) => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -497,8 +523,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -508,7 +536,7 @@ describe("multi compiler", () => { } }); - it("should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed", async () => { + it("should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed", async (t) => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -570,8 +598,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -580,7 +610,7 @@ describe("multi compiler", () => { } }); - it("should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries", async () => { + it("should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries", async (t) => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -639,8 +669,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -656,8 +688,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -667,7 +701,7 @@ describe("multi compiler", () => { } }); - it("should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries", async () => { + it("should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries", async (t) => { const compiler = webpack(universalConfiguration); const devServerOptions = { port, @@ -726,8 +760,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); pageErrors = []; consoleMessages = []; @@ -743,8 +779,10 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/on-listening.test.js b/test/e2e/on-listening.test.js index 1e2be08a9d..87d1d97207 100644 --- a/test/e2e/on-listening.test.js +++ b/test/e2e/on-listening.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -58,7 +60,7 @@ describe("onListening option", () => { await server.stop(); }); - it("should handle GET request to /listening/some/path route", async () => { + it("should handle GET request to /listening/some/path route", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -76,22 +78,26 @@ describe("onListening option", () => { expect(onListeningIsRunning).toBe(true); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle POST request to /listening/some/path route", async () => { + it("should handle POST request to /listening/some/path route", async (t) => { await page.setRequestInterception(true); page @@ -116,18 +122,22 @@ describe("onListening option", () => { expect(onListeningIsRunning).toBe(true); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); diff --git a/test/e2e/options-middleware.test.js b/test/e2e/options-middleware.test.js index 1bc05cd64b..064fa44032 100644 --- a/test/e2e/options-middleware.test.js +++ b/test/e2e/options-middleware.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const Express = require("express"); const webpack = require("webpack"); const Server = require("../../lib/Server"); diff --git a/test/e2e/overlay.test.js b/test/e2e/overlay.test.js index 5ccb678bdd..fc2512e069 100644 --- a/test/e2e/overlay.test.js +++ b/test/e2e/overlay.test.js @@ -1,7 +1,10 @@ "use strict"; const path = require("node:path"); +const { describe, it, mock } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); +const { fn } = require("jest-mock"); const prettier = require("prettier"); const waitForExpect = require("wait-for-expect"); const webpack = require("webpack"); @@ -70,7 +73,7 @@ const delay = (ms) => }); describe("overlay", () => { - it("should show a warning for initial compilation", async () => { + it("should show a warning for initial compilation", async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -99,23 +102,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show an error for initial compilation", async () => { + it("should show an error for initial compilation", async (t) => { const compiler = webpack(config); new ErrorPlugin().apply(compiler); @@ -144,23 +151,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show a warning and error for initial compilation", async () => { + it("should show a warning and error for initial compilation", async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -193,23 +204,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show an ansi formatted error for initial compilation", async () => { + it("should show an ansi formatted error for initial compilation", async (t) => { const compiler = webpack(config); new ErrorPlugin( @@ -240,23 +255,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show a warning and error for initial compilation and protects against xss", async () => { + it("should show a warning and error for initial compilation and protects against xss", async (t) => { const compiler = webpack(config); new WarningPlugin("strong").apply(compiler); @@ -286,23 +305,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should not show initially, then show on an error, then hide on fix", async () => { + it("should not show initially, then show on an error, then hide on fix", async (t) => { const compiler = webpack(config); const devServerOptions = { port, @@ -322,11 +345,13 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html initial"); + await t.test("page html initial", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); const pathToFile = path.resolve( __dirname, @@ -346,16 +371,20 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html with error"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html with error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); fs.writeFileSync(pathToFile, originalCode); @@ -367,18 +396,20 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html after fix error"); + await t.test("page html after fix error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should not show initially, then show on an error, then show other error, then hide on fix", async () => { + it("should not show initially, then show on an error, then show other error, then hide on fix", async (t) => { const compiler = webpack(config); const devServerOptions = { port, @@ -398,11 +429,13 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html initial"); + await t.test("page html initial", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); const pathToFile = path.resolve( __dirname, @@ -422,16 +455,20 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html with error"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html with error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); fs.writeFileSync(pathToFile, "`;a"); @@ -446,16 +483,20 @@ describe("overlay", () => { overlayFrame = await overlayHandle.contentFrame(); overlayHtml = await overlayFrame.evaluate(() => document.body.outerHTML); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html with other error"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html with other error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); fs.writeFileSync(pathToFile, originalCode); @@ -467,18 +508,20 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html after fix error"); + await t.test("page html after fix error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should not show initially, then show on an error and allow to close", async () => { + it("should not show initially, then show on an error and allow to close", async (t) => { const compiler = webpack(config); const devServerOptions = { port, @@ -498,11 +541,13 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html initial"); + await t.test("page html initial", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); const pathToFile = path.resolve( __dirname, @@ -522,16 +567,20 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html with error"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html with error", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); const frame = await page .frames() @@ -549,11 +598,13 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html after close"); + await t.test("page html after close", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); fs.writeFileSync(pathToFile, originalCode); } finally { @@ -563,8 +614,10 @@ describe("overlay", () => { }); it("should open editor when error with file info is clicked", async () => { - const mockLaunchEditorCb = jest.fn(); - jest.mock("launch-editor", () => mockLaunchEditorCb); + const mockLaunchEditorCb = fn(); + const launchEditorMock = mock.module("launch-editor", { + defaultExport: mockLaunchEditorCb, + }); const compiler = webpack(config); const devServerOptions = { @@ -607,10 +660,11 @@ describe("overlay", () => { } finally { await browser.close(); await server.stop(); + launchEditorMock.restore(); } }); - it('should not show a warning when "client.overlay" is "false"', async () => { + it('should not show a warning when "client.overlay" is "false"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -639,18 +693,20 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should not show a warning when "client.overlay.warnings" is "false"', async () => { + it('should not show a warning when "client.overlay.warnings" is "false"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -681,11 +737,13 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); @@ -734,7 +792,7 @@ describe("overlay", () => { } }); - it("should show warning when it is not filtered", async () => { + it("should show warning when it is not filtered", async (t) => { const compiler = webpack(config); new WarningPlugin("Unfiltered warning").apply(compiler); @@ -770,23 +828,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show a warning when "client.overlay" is "true"', async () => { + it('should show a warning when "client.overlay" is "true"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -818,23 +880,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show a warning when "client.overlay.warnings" is "true"', async () => { + it('should show a warning when "client.overlay.warnings" is "true"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -868,23 +934,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show a warning when "client.overlay.errors" is "true"', async () => { + it('should show a warning when "client.overlay.errors" is "true"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -918,23 +988,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should not show an error when "client.overlay" is "false"', async () => { + it('should not show an error when "client.overlay" is "false"', async (t) => { const compiler = webpack(config); new ErrorPlugin().apply(compiler); @@ -963,18 +1037,20 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should not show an error when "client.overlay.errors" is "false"', async () => { + it('should not show an error when "client.overlay.errors" is "false"', async (t) => { const compiler = webpack(config); new ErrorPlugin().apply(compiler); @@ -1005,11 +1081,13 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); @@ -1059,7 +1137,7 @@ describe("overlay", () => { } }); - it("should show error when it is not filtered", async () => { + it("should show error when it is not filtered", async (t) => { const compiler = webpack(config); new ErrorPlugin("Unfiltered error").apply(compiler); @@ -1095,23 +1173,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show an error when "client.overlay" is "true"', async () => { + it('should show an error when "client.overlay" is "true"', async (t) => { const compiler = webpack(config); new ErrorPlugin().apply(compiler); @@ -1143,23 +1225,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show overlay when Trusted Types are enabled", async () => { + it("should show overlay when Trusted Types are enabled", async (t) => { const compiler = webpack(trustedTypesConfig); new ErrorPlugin().apply(compiler); @@ -1204,23 +1290,27 @@ describe("overlay", () => { /requires 'TrustedHTML' assignment/.test(item), ), ).toHaveLength(0); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show overlay when Trusted Types are enabled and the \"require-trusted-types-for 'script'\" header was used", async () => { + it("should show overlay when Trusted Types are enabled and the \"require-trusted-types-for 'script'\" header was used", async (t) => { const compiler = webpack(trustedTypesConfig); new ErrorPlugin().apply(compiler); @@ -1275,23 +1365,27 @@ describe("overlay", () => { /requires 'TrustedHTML' assignment/.test(item), ), ).toHaveLength(0); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should not show overlay when Trusted Types are enabled, but policy is not allowed", async () => { + it("should not show overlay when Trusted Types are enabled, but policy is not allowed", async (t) => { const compiler = webpack(trustedTypesConfig); new ErrorPlugin().apply(compiler); @@ -1321,18 +1415,20 @@ describe("overlay", () => { const pageHtml = await page.evaluate(() => document.body.outerHTML); const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show an error when "client.overlay.errors" is "true"', async () => { + it('should show an error when "client.overlay.errors" is "true"', async (t) => { const compiler = webpack(config); new ErrorPlugin().apply(compiler); @@ -1366,23 +1462,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it('should show an error when "client.overlay.warnings" is "true"', async () => { + it('should show an error when "client.overlay.warnings" is "true"', async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -1416,23 +1516,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show a warning and hide them after closing connection", async () => { + it("should show a warning and hide them after closing connection", async (t) => { const compiler = webpack(config); new WarningPlugin().apply(compiler); @@ -1465,16 +1569,20 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); await server.stop(); @@ -1492,17 +1600,19 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtmlAfterClose, { - parser: "html", - }), - ).toMatchSnapshot("page html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtmlAfterClose, { + parser: "html", + }), + ), + ); } finally { await browser.close(); } }); - it("should show an error after invalidation", async () => { + it("should show an error after invalidation", async (t) => { const compiler = webpack(config); new ErrorPlugin("Error from compilation", 1).apply(compiler); @@ -1545,23 +1655,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show a warning after invalidation", async () => { + it("should show a warning after invalidation", async (t) => { const compiler = webpack(config); new WarningPlugin("Warning from compilation", 1).apply(compiler); @@ -1604,23 +1718,27 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), + ), + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); } }); - it("should show error for uncaught runtime error", async () => { + it("should show error for uncaught runtime error", async (t) => { const compiler = webpack(config); const server = new Server( @@ -1654,11 +1772,13 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); @@ -1707,7 +1827,7 @@ describe("overlay", () => { } }); - it("should show error for uncaught promise rejection", async () => { + it("should show error for uncaught promise rejection", async (t) => { const compiler = webpack(config); const server = new Server( @@ -1743,11 +1863,13 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(overlayHtml, { - parser: "html", - }), - ).toMatchSnapshot("overlay html"); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), + ), + ); } finally { await browser.close(); await server.stop(); @@ -1843,7 +1965,7 @@ describe("overlay", () => { } }); - it('should show overlay when "Content-Security-Policy" is "default-src \'self\'" was used', async () => { + it('should show overlay when "Content-Security-Policy" is "default-src \'self\'" was used', async (t) => { const compiler = webpack({ ...config, devtool: false }); new ErrorPlugin().apply(compiler); @@ -1884,22 +2006,26 @@ describe("overlay", () => { () => document.body.outerHTML, ); - expect( - await prettier.format(pageHtml, { - parser: "html", - }), - ).toMatchSnapshot("page html"); - expect( - await prettier.format( - overlayHtml.replace( - /", - ), - { + await t.test("page html", async (t) => + t.assert.snapshot( + await prettier.format(pageHtml, { parser: "html", - }, + }), ), - ).toMatchSnapshot("overlay html"); + ); + await t.test("overlay html", async (t) => + t.assert.snapshot( + await prettier.format( + overlayHtml.replace( + /", + ), + { + parser: "html", + }, + ), + ), + ); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/port.test.js b/test/e2e/port.test.js index b7824a49e9..64bb3895bb 100644 --- a/test/e2e/port.test.js +++ b/test/e2e/port.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -20,7 +22,7 @@ describe("port", () => { ]; for (const testedPort of ports) { - it(`should work using "${testedPort}" port `, async () => { + it(`should work using "${testedPort}" port `, async (t) => { const compiler = webpack(config); const devServerOptions = {}; @@ -89,10 +91,10 @@ describe("port", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/progress.test.js b/test/e2e/progress.test.js index 3f922d98c0..d5e378acb3 100644 --- a/test/e2e/progress.test.js +++ b/test/e2e/progress.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); const webpack = require("webpack"); const Server = require("../../lib/Server"); diff --git a/test/e2e/range-header.test.js b/test/e2e/range-header.test.js index a1237b583b..c33ebc8e5e 100644 --- a/test/e2e/range-header.test.js +++ b/test/e2e/range-header.test.js @@ -1,5 +1,7 @@ "use strict"; +const { after, before, describe, it } = require("node:test"); +const { expect } = require("expect"); const request = require("supertest"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -10,7 +12,7 @@ describe("'Range' header", () => { let compiler; let server; - beforeAll(async () => { + before(async () => { compiler = webpack(config); server = new Server({ port }, compiler); @@ -18,7 +20,7 @@ describe("'Range' header", () => { await server.start(); }); - afterAll(async () => { + after(async () => { await server.stop(); }); diff --git a/test/e2e/server-and-client-transport.test.js b/test/e2e/server-and-client-transport.test.js index b8dc4ad79d..a3bb071c3b 100644 --- a/test/e2e/server-and-client-transport.test.js +++ b/test/e2e/server-and-client-transport.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const WebsocketServer = require("../../lib/servers/WebsocketServer"); @@ -9,7 +11,7 @@ const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["server-and-client-transport"]; describe("server and client transport", () => { - it('should use default web socket server ("ws")', async () => { + it('should use default web socket server ("ws")', async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -36,16 +38,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it('should use "ws" web socket server when specify "ws" value', async () => { + it('should use "ws" web socket server when specify "ws" value', async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -73,16 +73,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it('should use "ws" web socket server when specify "ws" value using object', async () => { + it('should use "ws" web socket server when specify "ws" value using object', async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -112,16 +110,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it("should use custom web socket server when specify class", async () => { + it("should use custom web socket server when specify class", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -152,16 +148,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it("should use custom web socket server when specify class using object", async () => { + it("should use custom web socket server when specify class using object", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -194,16 +188,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it("should use custom web socket server when specify path to class", async () => { + it("should use custom web socket server when specify path to class", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -234,16 +226,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it("should use custom web socket server when specify path to class using object", async () => { + it("should use custom web socket server when specify path to class using object", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -276,16 +266,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it("should throw an error on wrong path", async () => { + it("should throw an error on wrong path", async (t) => { expect.assertions(1); const compiler = webpack(defaultConfig); @@ -300,13 +288,13 @@ describe("server and client transport", () => { try { await server.start(); } catch (error) { - expect(error.message).toMatchSnapshot(); + t.assert.snapshot(error.message); } finally { await server.stop(); } }); - it('should use "ws" transport, when web socket server is not specify', async () => { + it('should use "ws" transport, when web socket server is not specify', async (t) => { const compiler = webpack(wsConfig); const devServerOptions = { port, @@ -336,16 +324,14 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); } }); - it('should use "ws" transport and "ws" web socket server', async () => { + it('should use "ws" transport and "ws" web socket server', async (t) => { const compiler = webpack(wsConfig); const devServerOptions = { port, @@ -376,9 +362,7 @@ describe("server and client transport", () => { ); expect(isCorrectTransport).toBe(true); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/server.test.js b/test/e2e/server.test.js index 3a41e99bdd..32c93ff9c2 100644 --- a/test/e2e/server.test.js +++ b/test/e2e/server.test.js @@ -2,7 +2,10 @@ const https = require("node:https"); const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); +const { spyOn } = require("jest-mock"); const request = require("supertest"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -61,7 +64,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -80,15 +83,19 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -121,7 +128,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -140,15 +147,19 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -181,7 +192,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -200,15 +211,19 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); @@ -226,7 +241,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -272,7 +287,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -285,15 +300,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -309,7 +328,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -363,7 +382,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -376,15 +395,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -400,7 +423,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -452,7 +475,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -465,15 +488,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -489,7 +516,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -550,7 +577,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -563,15 +590,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -587,7 +618,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -625,7 +656,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -638,15 +669,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -662,7 +697,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -700,7 +735,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -713,15 +748,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -741,7 +780,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -814,7 +853,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -868,7 +907,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -881,15 +920,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -905,7 +948,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -964,7 +1007,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -977,15 +1020,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -1001,7 +1048,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -1048,7 +1095,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1061,15 +1108,19 @@ describe("server option", () => { waitUntil: "networkidle0", }); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -1083,7 +1134,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(https, "createServer"); + createServerSpy = spyOn(https, "createServer"); server = new Server( { @@ -1123,17 +1174,21 @@ describe("server option", () => { await server.stop(); }); - it("should pass options to the 'https.createServer' method", async () => { - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("https options"); + it("should pass options to the 'https.createServer' method", async (t) => { + await t.test("https options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { const response = await req.get("/"); - expect(response.status).toMatchSnapshot("response status"); - expect(response.text).toMatchSnapshot("response text"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status), + ); + await t.test("response text", async (t) => + t.assert.snapshot(response.text), + ); }); }); @@ -1149,7 +1204,7 @@ describe("server option", () => { beforeEach(async () => { compiler = webpack(config); - createServerSpy = jest.spyOn(customHTTP, "createServer"); + createServerSpy = spyOn(customHTTP, "createServer"); server = new Server( { @@ -1183,7 +1238,7 @@ describe("server option", () => { await server.stop(); }); - it("should handle GET request to index route (/)", async () => { + it("should handle GET request to index route (/)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1201,15 +1256,19 @@ describe("server option", () => { ); expect(HTTPVersion).toBe("http/1.1"); - expect( - normalizeOptions(createServerSpy.mock.calls[0][0]), - ).toMatchSnapshot("http options"); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("http options", async (t) => + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/setup-exit-signals.test.js b/test/e2e/setup-exit-signals.test.js index 8b8de09674..618cd3cfbf 100644 --- a/test/e2e/setup-exit-signals.test.js +++ b/test/e2e/setup-exit-signals.test.js @@ -1,5 +1,8 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); +const { spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/simple-config/webpack.config"); @@ -41,18 +44,18 @@ describe("setupExitSignals option", () => { consoleMessages = []; doExit = false; - exitSpy = jest.spyOn(process, "exit").mockImplementation(() => { + exitSpy = spyOn(process, "exit").mockImplementation(() => { doExit = true; }); - stdinResumeSpy = jest - .spyOn(process.stdin, "resume") - .mockImplementation(() => {}); + stdinResumeSpy = spyOn(process.stdin, "resume").mockImplementation( + () => {}, + ); - stopCallbackSpy = jest.spyOn(server, "stopCallback"); + stopCallbackSpy = spyOn(server, "stopCallback"); if (server.compiler.close) { - closeCallbackSpy = jest.spyOn(server.compiler, "close"); + closeCallbackSpy = spyOn(server.compiler, "close"); } }); @@ -67,52 +70,57 @@ describe("setupExitSignals option", () => { await server.stop(); }); - it.each(signals)("should close and exit on %s", async (signal) => { - page - .on("console", (message) => { - consoleMessages.push(message); - }) - .on("pageerror", (error) => { - pageErrors.push(error); + for (const signal of signals) { + // eslint-disable-next-line no-loop-func + it(`should close and exit on ${signal}`, async (t) => { + page + .on("console", (message) => { + consoleMessages.push(message); + }) + .on("pageerror", (error) => { + pageErrors.push(error); + }); + + const response = await page.goto(`http://localhost:${port}/`, { + waitUntil: "networkidle0", }); - const response = await page.goto(`http://localhost:${port}/`, { - waitUntil: "networkidle0", - }); - - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - process.emit(signal); + process.emit(signal); - await new Promise((resolve) => { - const interval = setInterval(() => { - if (doExit) { - expect(stopCallbackSpy.mock.calls).toHaveLength(1); + await new Promise((resolve) => { + const interval = setInterval(() => { + if (doExit) { + expect(stopCallbackSpy.mock.calls).toHaveLength(1); - if (server.compiler.close) { - expect(closeCallbackSpy.mock.calls).toHaveLength(1); - } + if (server.compiler.close) { + expect(closeCallbackSpy.mock.calls).toHaveLength(1); + } - clearInterval(interval); + clearInterval(interval); - resolve(); - } - }, 100); - }); + resolve(); + } + }, 100); + }); - consoleMessages = consoleMessages.filter( - (message) => - !( - message.text().includes("Trying to reconnect...") || - message.text().includes("Disconnected") - ), - ); + consoleMessages = consoleMessages.filter( + (message) => + !( + message.text().includes("Trying to reconnect...") || + message.text().includes("Disconnected") + ), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", - ); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); - }); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + }); + } }); }); diff --git a/test/e2e/setup-middlewares.test.js b/test/e2e/setup-middlewares.test.js index e33b2256bd..6b086b4e72 100644 --- a/test/e2e/setup-middlewares.test.js +++ b/test/e2e/setup-middlewares.test.js @@ -1,5 +1,7 @@ "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); + const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -82,7 +84,7 @@ describe("setupMiddlewares option", () => { await server.stop(); }); - it("should handle GET request to /setup-middleware/some/path route", async () => { + it("should handle GET request to /setup-middleware/some/path route", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -98,31 +100,43 @@ describe("setupMiddlewares option", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), ); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); const response1 = await page.goto(`http://localhost:${port}/foo/bar`, { waitUntil: "networkidle0", }); - expect(response1.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response1.headers()["content-type"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response1.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response1.text()), ); - expect(response1.status()).toMatchSnapshot("response status"); - expect(await response1.text()).toMatchSnapshot("response text"); const response2 = await page.goto(`http://localhost:${port}/foo/bar/baz`, { waitUntil: "networkidle0", }); - expect(response2.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response2.headers()["content-type"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response2.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response2.text()), ); - expect(response2.status()).toMatchSnapshot("response status"); - expect(await response2.text()).toMatchSnapshot("response text"); const response3 = await page.goto( `http://localhost:${port}/setup-middleware/unknown`, @@ -131,19 +145,23 @@ describe("setupMiddlewares option", () => { }, ); - expect(response3.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response3.headers()["content-type"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response3.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response3.text()), ); - expect(response3.status()).toMatchSnapshot("response status"); - expect(await response3.text()).toMatchSnapshot("response text"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle POST request to /setup-middleware/some/path route", async () => { + it("should handle POST request to /setup-middleware/some/path route", async (t) => { await page.setRequestInterception(true); page @@ -166,14 +184,18 @@ describe("setupMiddlewares option", () => { }, ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response headers content-type", + await t.test("response headers content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), + ); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), ); - expect(response.status()).toMatchSnapshot("response status"); - expect(await response.text()).toMatchSnapshot("response text"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); diff --git a/test/e2e/static-directory.test.js b/test/e2e/static-directory.test.js index a4f2b02002..b1c2453e6b 100644 --- a/test/e2e/static-directory.test.js +++ b/test/e2e/static-directory.test.js @@ -1,7 +1,10 @@ "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); +const { spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/static-config/webpack.config"); @@ -52,7 +55,7 @@ describe("static.directory option", () => { fs.truncateSync(nestedFile); }); - it("should handle request to index route", async () => { + it("should handle request to index route", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -65,18 +68,22 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to other file", async () => { + it("should handle request to other file", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -89,51 +96,61 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("watches folder recursively", (done) => { - // chokidar emitted a change, - // meaning it watched the file correctly - server.staticWatchers[0].on("change", (filepath) => { - expect(typeof filepath).toBe("string"); - done(); - }); + it("watches folder recursively", () => + new Promise((resolve) => { + // chokidar emitted a change, + // meaning it watched the file correctly + server.staticWatchers[0].on("change", (filepath) => { + expect(typeof filepath).toBe("string"); + resolve(); + }); - // change a file manually - setTimeout(() => { - fs.writeFileSync(nestedFile, "Heyo", "utf8"); - }, 1000); - }); + // change a file manually + setTimeout(() => { + fs.writeFileSync(nestedFile, "Heyo", "utf8"); + }, 1000); + })); - it("watches node_modules", (done) => { - const filePath = path.join(publicDirectory, "node_modules", "index.html"); + it("watches node_modules", () => + new Promise((resolve) => { + const filePath = path.join( + publicDirectory, + "node_modules", + "index.html", + ); - fs.writeFileSync(filePath, "foo", "utf8"); + fs.writeFileSync(filePath, "foo", "utf8"); - // chokidar emitted a change, - // meaning it watched the file correctly - server.staticWatchers[0].on("change", (filepath) => { - expect(typeof filepath).toBe("string"); + // chokidar emitted a change, + // meaning it watched the file correctly + server.staticWatchers[0].on("change", (filepath) => { + expect(typeof filepath).toBe("string"); - fs.unlinkSync(filePath); + fs.unlinkSync(filePath); - done(); - }); + resolve(); + }); - // change a file manually - setTimeout(() => { - fs.writeFileSync(filePath, "bar", "utf8"); - }, 1000); - }); + // change a file manually + setTimeout(() => { + fs.writeFileSync(filePath, "bar", "utf8"); + }, 1000); + })); }); describe("test listing files in folders without index.html using the option static.serveIndex: false", () => { @@ -172,7 +189,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should not list the files inside the assets folder (404)", async () => { + it("should not list the files inside the assets folder (404)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -185,18 +202,22 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -209,15 +230,19 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -257,7 +282,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should list the files inside the assets folder (200)", async () => { + it("should list the files inside the assets folder (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -272,19 +297,21 @@ describe("static.directory option", () => { const text = await response.text(); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); expect(text).toContain("example.txt"); expect(text).toContain("other.txt"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -297,15 +324,19 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -344,7 +375,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should list the files inside the assets folder (200)", async () => { + it("should list the files inside the assets folder (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -359,19 +390,21 @@ describe("static.directory option", () => { const text = await response.text(); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); expect(text).toContain("example.txt"); expect(text).toContain("other.txt"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -384,15 +417,19 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -428,7 +465,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should handle request first directory", async () => { + it("should handle request first directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -441,18 +478,22 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to second directory", async () => { + it("should handle request to second directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -465,113 +506,128 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); describe("testing single & multiple external paths", () => { let server; - afterEach((done) => { - testServer.close(() => { - done(); - }); - }); - - it("should throw exception (external url)", (done) => { - expect.assertions(1); - - server = testServer.start( - config, - { - static: "https://example.com/", - }, - (error) => { - expect(error.message).toBe( - "Using a URL as static.directory is not supported", - ); - - server.stopCallback(done); - }, - ); - }); - - it("should not throw exception (local path with lower case first character)", (done) => { - testServer.start( - config, - { - static: { - directory: - publicDirectory.charAt(0).toLowerCase() + - publicDirectory.slice(1), - watch: true, + afterEach( + () => + new Promise((resolve) => { + testServer.close(() => { + resolve(); + }); + }), + ); + + it("should throw exception (external url)", () => + new Promise((resolve) => { + expect.assertions(1); + + server = testServer.start( + config, + { + static: "https://example.com/", }, - port, - }, - (error) => { - expect(error).toBeUndefined(); - done(error); - }, - ); - }); + (error) => { + expect(error.message).toBe( + "Using a URL as static.directory is not supported", + ); - it("should not throw exception (local path with lower case first character & has '-')", (done) => { - testServer.start( - config, - { - static: { - directory: "c:\\absolute\\path\\to\\content-base", - watch: true, + server.stopCallback(resolve); }, - port, - }, - (error) => { - expect(error).toBeUndefined(); - done(error); - }, - ); - }); - - it("should not throw exception (local path with upper case first character & has '-')", (done) => { - testServer.start( - config, - { - static: { - directory: "C:\\absolute\\path\\to\\content-base", - watch: true, + ); + })); + + it("should not throw exception (local path with lower case first character)", () => + new Promise((resolve, reject) => { + testServer.start( + config, + { + static: { + directory: + publicDirectory.charAt(0).toLowerCase() + + publicDirectory.slice(1), + watch: true, + }, + port, }, - port, - }, - (error) => { - expect(error).toBeUndefined(); - done(error); - }, - ); - }); - - it("should throw exception (array with absolute url)", (done) => { - server = testServer.start( - config, - { - static: [publicDirectory, "https://example.com/"], - }, - (error) => { - expect(error.message).toBe( - "Using a URL as static.directory is not supported", - ); + (error) => { + expect(error).toBeUndefined(); + if (error) reject(error); + else resolve(); + }, + ); + })); + + it("should not throw exception (local path with lower case first character & has '-')", () => + new Promise((resolve, reject) => { + testServer.start( + config, + { + static: { + directory: "c:\\absolute\\path\\to\\content-base", + watch: true, + }, + port, + }, + (error) => { + expect(error).toBeUndefined(); + if (error) reject(error); + else resolve(); + }, + ); + })); + + it("should not throw exception (local path with upper case first character & has '-')", () => + new Promise((resolve, reject) => { + testServer.start( + config, + { + static: { + directory: "C:\\absolute\\path\\to\\content-base", + watch: true, + }, + port, + }, + (error) => { + expect(error).toBeUndefined(); + if (error) reject(error); + else resolve(); + }, + ); + })); + + it("should throw exception (array with absolute url)", () => + new Promise((resolve) => { + server = testServer.start( + config, + { + static: [publicDirectory, "https://example.com/"], + }, + (error) => { + expect(error.message).toBe( + "Using a URL as static.directory is not supported", + ); - server.stopCallback(done); - }, - ); - }); + server.stopCallback(resolve); + }, + ); + })); }); describe("defaults to PWD", () => { @@ -583,9 +639,9 @@ describe("static.directory option", () => { let consoleMessages; beforeEach(async () => { - jest - .spyOn(process, "cwd") - .mockImplementation(() => path.resolve(staticDirectory)); + spyOn(process, "cwd").mockImplementation(() => + path.resolve(staticDirectory), + ); compiler = webpack(config); server = new Server( @@ -609,7 +665,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should handle request to /index.html", async () => { + it("should handle request to /index.html", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -622,15 +678,19 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -645,7 +705,7 @@ describe("static.directory option", () => { beforeEach(async () => { // This is a somewhat weird test, but it is important that we mock // the PWD here, and test if /other.html in our "fake" PWD really is not requested. - jest.spyOn(process, "cwd").mockImplementation(() => publicDirectory); + spyOn(process, "cwd").mockImplementation(() => publicDirectory); compiler = webpack(config); @@ -670,7 +730,7 @@ describe("static.directory option", () => { await server.stop(); }); - it("should not handle request to /other.html (404)", async () => { + it("should not handle request to /other.html (404)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -683,15 +743,19 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/static-public-path.test.js b/test/e2e/static-public-path.test.js index 8af9cf0e58..19136c414d 100644 --- a/test/e2e/static-public-path.test.js +++ b/test/e2e/static-public-path.test.js @@ -1,6 +1,9 @@ "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); +const { spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/static-config/webpack.config"); @@ -50,7 +53,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to index", async () => { + it("should handle request to index", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -66,18 +69,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to other file", async () => { + it("should handle request to other file", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -93,15 +100,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -142,7 +153,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("shouldn't list the files inside the assets folder (404)", async () => { + it("shouldn't list the files inside the assets folder (404)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -158,18 +169,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -185,15 +200,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -234,7 +253,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should list the files inside the assets folder (200)", async () => { + it("should list the files inside the assets folder (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -250,18 +269,20 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); expect(await response.text()).toContain("other.txt"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -277,15 +298,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -326,7 +351,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should list the files inside the assets folder (200)", async () => { + it("should list the files inside the assets folder (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -342,18 +367,20 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); expect(await response.text()).toContain("other.txt"); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should show Heyo. because bar has index.html inside it (200)", async () => { + it("should show Heyo. because bar has index.html inside it (200)", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -369,15 +396,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -422,7 +453,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to first directory", async () => { + it("should handle request to first directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -438,18 +469,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to second directory", async () => { + it("should handle request to second directory", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -465,15 +500,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -487,9 +526,7 @@ describe("static.publicPath option", () => { let consoleMessages; beforeEach(async () => { - cwdSpy = jest - .spyOn(process, "cwd") - .mockImplementation(() => staticDirectory); + cwdSpy = spyOn(process, "cwd").mockImplementation(() => staticDirectory); compiler = webpack(config); @@ -518,7 +555,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to page", async () => { + it("should handle request to page", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -534,15 +571,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -581,7 +622,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to example.txt", async () => { + it("should handle request to example.txt", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -597,17 +638,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(response.headers()["content-type"]).toMatchSnapshot( - "response header content-type", + await t.test("response header content-type", async (t) => + t.assert.snapshot(response.headers()["content-type"]), ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -646,7 +689,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle GET request", async () => { + it("should handle GET request", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -662,16 +705,18 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle HEAD request", async () => { + it("should handle HEAD request", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -692,16 +737,18 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should not handle POST request", async () => { + it("should not handle POST request", async (t) => { await page.setRequestInterception(true); page @@ -722,16 +769,18 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should not handle PUT request", async () => { + it("should not handle PUT request", async (t) => { await page.setRequestInterception(true); page @@ -752,16 +801,18 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should not handle DELETE request", async () => { + it("should not handle DELETE request", async (t) => { await page.setRequestInterception(true); page @@ -782,16 +833,18 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should not handle PATCH request", async () => { + it("should not handle PATCH request", async (t) => { await page.setRequestInterception(true); page @@ -812,13 +865,15 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -865,7 +920,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to the index of first path", async () => { + it("should handle request to the index of first path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -881,18 +936,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to the other file of first path", async () => { + it("should handle request to the other file of first path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -908,18 +967,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to the /foo route of second path", async () => { + it("should handle request to the /foo route of second path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -935,15 +998,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); @@ -990,7 +1057,7 @@ describe("static.publicPath option", () => { await server.stop(); }); - it("should handle request to the index of first path", async () => { + it("should handle request to the index of first path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1006,18 +1073,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to the other file of first path", async () => { + it("should handle request to the other file of first path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1033,18 +1104,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to the /foo route of first path", async () => { + it("should handle request to the /foo route of first path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1060,18 +1135,22 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); - it("should handle request to the /foo route of second path", async () => { + it("should handle request to the /foo route of second path", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1087,15 +1166,19 @@ describe("static.publicPath option", () => { }, ); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(await response.text()).toMatchSnapshot("response text"); + await t.test("response text", async (t) => + t.assert.snapshot(await response.text()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); }); }); }); diff --git a/test/e2e/stats.test.js b/test/e2e/stats.test.js index 70f3017b12..fa42603a27 100644 --- a/test/e2e/stats.test.js +++ b/test/e2e/stats.test.js @@ -1,5 +1,8 @@ "use strict"; +const { describe, test } = require("node:test"); + +const { spyOn } = require("jest-mock"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -7,7 +10,7 @@ const HTMLGeneratorPlugin = require("../helpers/html-generator-plugin"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map").stats; -jest.spyOn(globalThis.console, "log").mockImplementation(); +spyOn(globalThis.console, "log").mockImplementation(); describe("stats", () => { const cases = [ @@ -108,7 +111,7 @@ describe("stats", () => { } for (const testCase of cases) { - it(testCase.title, async () => { + test(testCase.title, async (t) => { const compiler = webpack({ ...config, ...testCase.webpackOptions }); const devServerOptions = { port, @@ -130,9 +133,7 @@ describe("stats", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot(); + t.assert.snapshot(consoleMessages.map((message) => message.text())); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/target.test.js b/test/e2e/target.test.js index 32f9a5aaef..01b459f010 100644 --- a/test/e2e/target.test.js +++ b/test/e2e/target.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -30,7 +32,7 @@ describe("target", () => { ]; for (const target of targets) { - it(`should work using "${target}" target`, async () => { + it(`should work using "${target}" target`, async (t) => { const compiler = webpack({ ...config, target, @@ -62,9 +64,9 @@ describe("target", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); if ( target === "node" || @@ -82,7 +84,9 @@ describe("target", () => { expect(hasRequireOrGlobalError).toBe(true); } else { - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); } } finally { await browser.close(); @@ -91,7 +95,7 @@ describe("target", () => { }); } - it("should work using multi compiler mode with `web` and `webworker` targets", async () => { + it("should work using multi compiler mode with `web` and `webworker` targets", async (t) => { const compiler = webpack(workerConfig); const server = new Server({ port }, compiler); @@ -115,21 +119,23 @@ describe("target", () => { waitUntil: "networkidle0", }); - expect( - sortByTerm( - consoleMessages.map((message) => message.text()), - "Worker said:", + await t.test("console messages", async (t) => + t.assert.snapshot( + sortByTerm( + consoleMessages.map((message) => message.text()), + "Worker said:", + ), ), - ).toMatchSnapshot("console messages"); + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it("should work using multi compiler mode with `web` and `webworker` targets with `devServer: false`", async () => { + it("should work using multi compiler mode with `web` and `webworker` targets with `devServer: false`", async (t) => { const compiler = webpack(workerConfigDevServerFalse); const server = new Server( { @@ -164,14 +170,16 @@ describe("target", () => { waitUntil: "networkidle0", }); - expect( - sortByTerm( - consoleMessages.map((message) => message.text()), - "Worker said:", + await t.test("console messages", async (t) => + t.assert.snapshot( + sortByTerm( + consoleMessages.map((message) => message.text()), + "Worker said:", + ), ), - ).toMatchSnapshot("console messages"); + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/watch-files.test.js b/test/e2e/watch-files.test.js index e06126ef92..98a45a2944 100644 --- a/test/e2e/watch-files.test.js +++ b/test/e2e/watch-files.test.js @@ -1,6 +1,8 @@ "use strict"; const path = require("node:path"); +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); const fs = require("graceful-fs"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -48,7 +50,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -61,13 +63,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -119,7 +123,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -132,13 +136,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -190,7 +196,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -203,13 +209,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -263,7 +271,7 @@ describe("watchFiles option", () => { fs.truncateSync(other); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -276,13 +284,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -340,7 +350,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -353,13 +363,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -376,7 +388,7 @@ describe("watchFiles option", () => { }); }); - it("should not reload when a non-matching file is changed", async () => { + it("should not reload when a non-matching file is changed", async (t) => { const ignoredFile = path.join(watchDir, "assets/example.js"); page @@ -391,7 +403,9 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -455,7 +469,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -468,13 +482,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -491,7 +507,7 @@ describe("watchFiles option", () => { }); }); - it("should not reload when an ignored glob file is changed", async () => { + it("should not reload when an ignored glob file is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -504,7 +520,9 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -568,7 +586,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -581,13 +599,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -604,7 +624,7 @@ describe("watchFiles option", () => { }); }); - it("should not reload when an ignored glob file is changed", async () => { + it("should not reload when an ignored glob file is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -617,7 +637,9 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -680,7 +702,7 @@ describe("watchFiles option", () => { await server.stop(); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -693,13 +715,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); await new Promise((resolve) => { server.staticWatchers[0].on("change", async (changedPath) => { @@ -756,7 +780,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -769,13 +793,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -829,7 +855,7 @@ describe("watchFiles option", () => { fs.truncateSync(other); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -842,13 +868,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "foo", "utf8"); @@ -910,7 +938,7 @@ describe("watchFiles option", () => { fs.truncateSync(other); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -923,13 +951,15 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); // change file content fs.writeFileSync(file, "foo", "utf8"); @@ -1071,7 +1101,7 @@ describe("watchFiles option", () => { fs.truncateSync(file); }); - it("should reload when file content is changed", async () => { + it("should reload when file content is changed", async (t) => { page .on("console", (message) => { consoleMessages.push(message); @@ -1085,15 +1115,19 @@ describe("watchFiles option", () => { }); // should pass correct options to chokidar config - expect(server.staticWatchers[0].options).toMatchSnapshot(); + t.assert.snapshot(server.staticWatchers[0].options); - expect(response.status()).toMatchSnapshot("response status"); + await t.test("response status", async (t) => + t.assert.snapshot(response.status()), + ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => + t.assert.snapshot(pageErrors), + ); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); diff --git a/test/e2e/web-socket-communication.test.js b/test/e2e/web-socket-communication.test.js index d071576eff..3bddd20424 100644 --- a/test/e2e/web-socket-communication.test.js +++ b/test/e2e/web-socket-communication.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const WebSocket = require("ws"); const Server = require("../../lib/Server"); @@ -12,7 +14,7 @@ describe("web socket communication", () => { const webSocketServers = ["ws"]; for (const websocketServer of webSocketServers) { - it(`should work and close web socket client connection when web socket server closed ("${websocketServer}")`, async () => { + it(`should work and close web socket client connection when web socket server closed ("${websocketServer}")`, async (t) => { WebsocketServer.heartbeatInterval = 100; const compiler = webpack(config); @@ -55,14 +57,16 @@ describe("web socket communication", () => { }, 100); }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); } }); - it(`should work and terminate client that is not alive ("${websocketServer}")`, async () => { + it(`should work and terminate client that is not alive ("${websocketServer}")`, async (t) => { WebsocketServer.heartbeatInterval = 100; const compiler = webpack(config); @@ -101,16 +105,16 @@ describe("web socket communication", () => { }); expect(server.webSocketServer.clients).toHaveLength(0); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await server.stop(); } }); - it(`should work and reconnect when the connection is lost ("${websocketServer}")`, async () => { + it(`should work and reconnect when the connection is lost ("${websocketServer}")`, async (t) => { WebsocketServer.heartbeatInterval = 100; const compiler = webpack(config); @@ -147,10 +151,10 @@ describe("web socket communication", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/web-socket-server-url.test.js b/test/e2e/web-socket-server-url.test.js index b8fdba83cf..8b4d1729a1 100644 --- a/test/e2e/web-socket-server-url.test.js +++ b/test/e2e/web-socket-server-url.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const express = require("express"); const { createProxyMiddleware } = require("http-proxy-middleware"); const webpack = require("webpack"); @@ -15,7 +17,7 @@ describe("web socket server URL", () => { for (const webSocketServer of webSocketServers) { const websocketURLProtocol = webSocketServer; - it(`should work behind proxy, when hostnames are same and ports are different ("${webSocketServer}")`, async () => { + it(`should work behind proxy, when hostnames are same and ports are different ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = devServerHost; @@ -91,10 +93,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); await browser.close(); @@ -102,7 +104,7 @@ describe("web socket server URL", () => { } }); - it(`should work behind proxy, when hostnames are different and ports are same ("${webSocketServer}")`, async () => { + it(`should work behind proxy, when hostnames are different and ports are same ("${webSocketServer}")`, async (t) => { const devServerHost = "127.0.0.1"; const devServerPort = port1; const proxyHost = Server.findIp("v4", false); @@ -179,10 +181,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); await browser.close(); @@ -190,7 +192,7 @@ describe("web socket server URL", () => { } }); - it(`should work behind proxy, when hostnames are different and ports are different ("${webSocketServer}")`, async () => { + it(`should work behind proxy, when hostnames are different and ports are different ("${webSocketServer}")`, async (t) => { const devServerHost = "localhost"; const devServerPort = port1; const proxyHost = Server.findIp("v4", false); @@ -271,10 +273,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -283,7 +285,7 @@ describe("web socket server URL", () => { } }); - it(`should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("${webSocketServer}")`, async () => { + it(`should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("${webSocketServer}")`, async (t) => { process.env.WEBPACK_DEV_SERVER_BASE_PORT = 40000; const proxyHost = Server.findIp("v4", false); @@ -364,10 +366,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${resolvedHost}:${resolvedPort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { proxy.close(); @@ -378,7 +380,7 @@ describe("web socket server URL", () => { } }); - it(`should work with the "client.webSocketURL.protocol" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.protocol" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -434,17 +436,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.protocol" option using "auto:" value ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.protocol" option using "auto:" value ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -500,17 +502,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -566,17 +568,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.host" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.host" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -632,17 +634,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -697,17 +699,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.port" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.port" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -763,17 +765,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.port" option as string ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.port" option as string ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -829,17 +831,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("${webSocketServer}")`, async () => { + it(`should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { webSocketServer: { @@ -901,17 +903,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port2}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.port" option using "0" value ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.port" option using "0" value ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -966,17 +968,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1031,17 +1033,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with default "/ws" value of the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async () => { + it(`should work with default "/ws" value of the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { webSocketServer, @@ -1092,17 +1094,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.username" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.username" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1157,17 +1159,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://zenitsu@127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.password" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.password" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1223,17 +1225,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://foo:chuntaro@127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1290,17 +1292,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://zenitsu:chuntaro@127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the custom web socket server "path" ("${webSocketServer}")`, async () => { + it(`should work with the custom web socket server "path" ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { webSocketServer: { @@ -1356,10 +1358,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/foo/bar`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -1367,7 +1369,7 @@ describe("web socket server URL", () => { }); // Only works for "ws" server - it(`should work with the custom web socket server "path" using empty value ("${webSocketServer}")`, async () => { + it(`should work with the custom web socket server "path" using empty value ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { webSocketServer: { @@ -1423,17 +1425,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1494,17 +1496,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/foo/bar`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1565,17 +1567,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1636,10 +1638,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -1647,7 +1649,7 @@ describe("web socket server URL", () => { }); // Only works for "ws" server - it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1708,17 +1710,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL.pathname" option ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -1777,17 +1779,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work when "host" option is IPv4 ("${webSocketServer}")`, async () => { + it(`should work when "host" option is IPv4 ("${webSocketServer}")`, async (t) => { const hostname = Server.findIp("v4", false); const compiler = webpack(config); const devServerOptions = { @@ -1837,17 +1839,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work when "host" option is "local-ip" ("${webSocketServer}")`, async () => { + it(`should work when "host" option is "local-ip" ("${webSocketServer}")`, async (t) => { const hostname = Server.findIp("v4", false); const compiler = webpack(config); const devServerOptions = { @@ -1898,17 +1900,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work when "host" option is "local-ipv4" ("${webSocketServer}")`, async () => { + it(`should work when "host" option is "local-ipv4" ("${webSocketServer}")`, async (t) => { const hostname = Server.findIp("v4", false); const compiler = webpack(config); const devServerOptions = { @@ -1958,17 +1960,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with "server: 'https'" option ("${webSocketServer}")`, async () => { + it(`should work with "server: 'https'" option ("${webSocketServer}")`, async (t) => { const hostname = "localhost"; const compiler = webpack(config); const devServerOptions = { @@ -2018,17 +2020,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work when "port" option is "auto" ("${webSocketServer}")`, async () => { + it(`should work when "port" option is "auto" ("${webSocketServer}")`, async (t) => { process.env.WEBPACK_DEV_SERVER_BASE_PORT = 50000; const compiler = webpack(config); @@ -2083,10 +2085,10 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${resolvedFreePort}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); @@ -2095,7 +2097,7 @@ describe("web socket server URL", () => { } }); - it(`should work with "client.webSocketURL.*" options ("${webSocketServer}")`, async () => { + it(`should work with "client.webSocketURL.*" options ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -2154,17 +2156,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work with the "client.webSocketURL" option as "string" ("${webSocketServer}")`, async () => { + it(`should work with the "client.webSocketURL" option as "string" ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -2218,17 +2220,17 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); } }); - it(`should work and throw an error on invalid web socket URL ("${webSocketServer}")`, async () => { + it(`should work and throw an error on invalid web socket URL ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -2261,21 +2263,23 @@ describe("web socket server URL", () => { waitUntil: "networkidle0", }); - expect( - consoleMessages.map((message) => message.text()), - ).toMatchSnapshot("console messages"); - expect( - pageErrors.map((pageError) => - pageError.message.split("\n")[0].replace("SyntaxError: ", ""), + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), + ); + await t.test("page errors", async (t) => + t.assert.snapshot( + pageErrors.map((pageError) => + pageError.message.split("\n")[0].replace("SyntaxError: ", ""), + ), ), - ).toMatchSnapshot("page errors"); + ); } finally { await browser.close(); await server.stop(); } }); - it(`should not work and output disconnect wrong web socket URL ("${webSocketServer}")`, async () => { + it(`should not work and output disconnect wrong web socket URL ("${webSocketServer}")`, async (t) => { const compiler = webpack(config); const devServerOptions = { client: { @@ -2327,10 +2331,14 @@ describe("web socket server URL", () => { }, 100); }); - expect(consoleMessages).toMatchSnapshot("console messages"); - expect( - pageErrors.map((pageError) => pageError.message.split("\n")[0]), - ).toMatchSnapshot("page errors"); + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages), + ); + await t.test("page errors", async (t) => + t.assert.snapshot( + pageErrors.map((pageError) => pageError.message.split("\n")[0]), + ), + ); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/web-socket-server.test.js b/test/e2e/web-socket-server.test.js index ea50d4aa24..a8136a6cd4 100644 --- a/test/e2e/web-socket-server.test.js +++ b/test/e2e/web-socket-server.test.js @@ -1,5 +1,7 @@ "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -8,7 +10,7 @@ const sessionSubscribe = require("../helpers/session-subscribe"); const port = require("../ports-map")["web-socket-server-test"]; describe("web socket server", () => { - it("should work allow to disable", async () => { + it("should work allow to disable", async (t) => { const devServerPort = port; const compiler = webpack(config); @@ -54,10 +56,10 @@ describe("web socket server", () => { }); expect(webSocketRequests).toHaveLength(0); - expect(consoleMessages.map((message) => message.text())).toMatchSnapshot( - "console messages", + await t.test("console messages", async (t) => + t.assert.snapshot(consoleMessages.map((message) => message.text())), ); - expect(pageErrors).toMatchSnapshot("page errors"); + await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); } finally { await browser.close(); await server.stop(); From 419ba68c5d6fe4fa5d24e87f1d4dfdf70654182f Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 22:39:46 -0500 Subject: [PATCH 05/22] refactor(tests): migrate tests to use node:test and improve snapshot organization - Updated test files to utilize the `node:test` module for better compatibility and performance. - Replaced `jest.fn()` with `jest-mock` functions for mocking in various test cases. - Enhanced snapshot descriptions for clarity and consistency across tests. - Introduced a new `jsdom-setup.js` helper to streamline JSDOM configuration for tests. - Adjusted test cases to use `t.assert.snapshot()` for snapshot assertions. - Cleaned up mock implementations and reset logic in tests for improved reliability. --- package.json | 2 +- test/client/ReactErrorBoundary.test.js | 55 +++++------ .../__snapshots__/index.test.js.snap.webpack5 | 78 +++++++++++----- .../socket-helper.test.js.snap.webpack5 | 22 ++--- test/client/bundle.test.js | 6 +- test/client/clients/WebsocketClient.test.js | 17 ++-- .../WebsocketClient.test.js.snap.webpack5 | 4 +- test/client/index.test.js | 92 ++++++++++--------- test/client/socket-helper.test.js | 40 ++++---- ...tCurrentScriptSource.test.js.snap.webpack5 | 14 ++- .../__snapshots__/log.test.js.snap.webpack5 | 4 +- .../sendMessage.test.js.snap.webpack5 | 4 +- test/client/utils/createSocketURL.test.js | 15 ++- .../utils/getCurrentScriptSource.test.js | 21 +++-- test/client/utils/log.test.js | 28 ++++-- test/client/utils/sendMessage.test.js | 19 ++-- test/helpers/jsdom-setup.js | 78 ++++++++++++++++ 17 files changed, 314 insertions(+), 185 deletions(-) create mode 100644 test/helpers/jsdom-setup.js diff --git a/package.json b/package.json index 9a3f75c4d9..1da3d61d13 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "test:only": "node --experimental-vm-modules node_modules/jest/bin/jest.js", "test:coverage": "npm run test:only -- --coverage", "test:watch": "npm run test:coverage --watch", - "test:node": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000", + "test:node": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", "test": "npm run test:coverage", "pretest": "npm run lint", "prepare": "husky && npm run build", diff --git a/test/client/ReactErrorBoundary.test.js b/test/client/ReactErrorBoundary.test.js index 8932de9a2c..304a15c051 100644 --- a/test/client/ReactErrorBoundary.test.js +++ b/test/client/ReactErrorBoundary.test.js @@ -1,9 +1,10 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +require("../helpers/jsdom-setup"); + +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { expect } = require("expect"); +const { fn, spyOn } = require("jest-mock"); const { createOverlay } = require("../../client-src/overlay"); describe("createOverlay", () => { @@ -12,40 +13,40 @@ describe("createOverlay", () => { beforeEach(() => { globalThis.document = { - createElement: jest.fn(() => ({ + createElement: fn(() => ({ style: {}, - appendChild: jest.fn(), - addEventListener: jest.fn(), + appendChild: fn(), + addEventListener: fn(), contentDocument: { - createElement: jest.fn(() => ({ style: {}, appendChild: jest.fn() })), - body: { appendChild: jest.fn() }, + createElement: fn(() => ({ style: {}, appendChild: fn() })), + body: { appendChild: fn() }, }, })), - body: { appendChild: jest.fn(), removeChild: jest.fn() }, + body: { appendChild: fn(), removeChild: fn() }, }; globalThis.window = { // Keep addEventListener mocked for other potential uses - addEventListener: jest.fn(), - removeEventListener: jest.fn(), + addEventListener: fn(), + removeEventListener: fn(), // Mock trustedTypes trustedTypes: null, // Mock dispatchEvent - dispatchEvent: jest.fn(), + dispatchEvent: fn(), }; - jest.useFakeTimers(); + mock.timers.enable(); }); afterEach(() => { globalThis.document = originalDocument; globalThis.window = originalWindow; - jest.useRealTimers(); - jest.clearAllMocks(); + mock.timers.reset(); + mock.reset(); }); it("should not show overlay for errors caught by React error boundaries", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const reactError = new Error( "Error inside React render\n" + @@ -75,7 +76,7 @@ describe("createOverlay", () => { it("should show overlay for normal uncaught errors", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const regularError = new Error( "Error inside React render\n" + @@ -107,7 +108,7 @@ describe("createOverlay", () => { it("should show overlay for normal uncaught errors (when null is thrown)", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const errorEvent = new ErrorEvent("error", { error: null, @@ -133,7 +134,7 @@ describe("createOverlay", () => { catchRuntimeError: () => true, }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const regularError = new Error("Regular test error"); const errorEvent = new ErrorEvent("error", { @@ -160,7 +161,7 @@ describe("createOverlay", () => { catchRuntimeError: () => false, }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const regularError = new Error("Regular test error"); const errorEvent = new ErrorEvent("error", { @@ -176,7 +177,7 @@ describe("createOverlay", () => { it("should not show the overlay for errors with stack containing 'invokeGuardedCallbackDev'", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const reactInternalError = new Error("React internal error"); reactInternalError.stack = "invokeGuardedCallbackDev\n at somefile.js"; @@ -193,7 +194,7 @@ describe("createOverlay", () => { it("should show overlay for unhandled rejections", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const rejectionReason = new Error("Promise rejection reason"); const rejectionEvent = new Event("unhandledrejection"); @@ -216,7 +217,7 @@ describe("createOverlay", () => { it("should show overlay for unhandled rejections with string reason", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const rejectionEvent = new Event("unhandledrejection"); rejectionEvent.reason = "some reason"; globalThis.dispatchEvent(rejectionEvent); @@ -237,7 +238,7 @@ describe("createOverlay", () => { it("should dismiss overlay when ESC key is pressed", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const escEvent = new KeyboardEvent("keydown", { key: "Escape" }); globalThis.window.dispatchEvent(escEvent); @@ -249,7 +250,7 @@ describe("createOverlay", () => { it("should dismiss overlay when 'Esc' key is pressed (older browsers)", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const escEvent = new KeyboardEvent("keydown", { key: "Esc" }); globalThis.window.dispatchEvent(escEvent); @@ -261,7 +262,7 @@ describe("createOverlay", () => { it("should not dismiss overlay for other keys", () => { const options = { trustedTypesPolicyName: null, catchRuntimeError: true }; const overlay = createOverlay(options); - const showOverlayMock = jest.spyOn(overlay, "send"); + const showOverlayMock = spyOn(overlay, "send"); const otherKeyEvent = new KeyboardEvent("keydown", { key: "Enter" }); globalThis.window.dispatchEvent(otherKeyEvent); diff --git a/test/client/__snapshots__/index.test.js.snap.webpack5 b/test/client/__snapshots__/index.test.js.snap.webpack5 index 7b3d6672fe..3e010cc5f4 100644 --- a/test/client/__snapshots__/index.test.js.snap.webpack5 +++ b/test/client/__snapshots__/index.test.js.snap.webpack5 @@ -1,34 +1,60 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`index should run onSocketMessage.close (hot enabled) 1`] = `"Disconnected!"`; +exports[`index > should run onSocketMessage.close (hot enabled) 1`] = ` +"Disconnected!" +`; -exports[`index should run onSocketMessage.close (hot enabled) 2`] = `"Close"`; +exports[`index > should run onSocketMessage.close (hot enabled) 2`] = ` +"Close" +`; -exports[`index should run onSocketMessage.close (liveReload enabled) 1`] = `"Disconnected!"`; +exports[`index > should run onSocketMessage.close (liveReload enabled) 1`] = ` +"Disconnected!" +`; -exports[`index should run onSocketMessage.close (liveReload enabled) 2`] = `"Close"`; +exports[`index > should run onSocketMessage.close (liveReload enabled) 2`] = ` +"Close" +`; -exports[`index should run onSocketMessage.close 1`] = `"Disconnected!"`; +exports[`index > should run onSocketMessage.close 1`] = ` +"Disconnected!" +`; -exports[`index should run onSocketMessage.close 2`] = `"Close"`; +exports[`index > should run onSocketMessage.close 2`] = ` +"Close" +`; -exports[`index should run onSocketMessage.error 1`] = `"error!!"`; +exports[`index > should run onSocketMessage.error 1`] = ` +"error!!" +`; -exports[`index should run onSocketMessage.ok 1`] = `"Ok"`; +exports[`index > should run onSocketMessage.ok 1`] = ` +"Ok" +`; -exports[`index should run onSocketMessage.progress and onSocketMessage['progress-update'] 1`] = `"Progress"`; +exports[`index > should run onSocketMessage.progress and onSocketMessage['progress-update'] 1`] = ` +"Progress" +`; -exports[`index should run onSocketMessage.progress and onSocketMessage['progress-update'] 2`] = `"12% - mock-msg."`; +exports[`index > should run onSocketMessage.progress and onSocketMessage['progress-update'] 2`] = ` +"12% - mock-msg." +`; -exports[`index should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name 1`] = `"Progress"`; +exports[`index > should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name 1`] = ` +"Progress" +`; -exports[`index should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name 2`] = `"[mock-plugin] 12% - mock-msg."`; +exports[`index > should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name 2`] = ` +"[mock-plugin] 12% - mock-msg." +`; -exports[`index should run onSocketMessage.warnings 1`] = `"Warnings while compiling."`; +exports[`index > should run onSocketMessage.warnings 1`] = ` +"Warnings while compiling." +`; -exports[`index should run onSocketMessage.warnings 2`] = `"Warnings"`; +exports[`index > should run onSocketMessage.warnings 2`] = ` +"Warnings" +`; -exports[`index should run onSocketMessage.warnings 3`] = ` +exports[`index > should run onSocketMessage.warnings 3`] = ` [ [ "HEADER warning @@ -45,15 +71,23 @@ BODY: warning", ] `; -exports[`index should run onSocketMessage['static-changed'] 1`] = `"Content from static directory was changed. Reloading..."`; +exports[`index > should run onSocketMessage['static-changed'] 1`] = ` +"Content from static directory was changed. Reloading..." +`; -exports[`index should run onSocketMessage['static-changed'](file) 1`] = `""/static/assets/index.html" from static directory was changed. Reloading..."`; +exports[`index > should run onSocketMessage['static-changed'](file) 1`] = ` +""/static/assets/index.html" from static directory was changed. Reloading..." +`; -exports[`index should run onSocketMessage['still-ok'] 1`] = `"Nothing changed."`; +exports[`index > should run onSocketMessage['still-ok'] 1`] = ` +"Nothing changed." +`; -exports[`index should run onSocketMessage['still-ok'] 2`] = `"StillOk"`; +exports[`index > should run onSocketMessage['still-ok'] 2`] = ` +"StillOk" +`; -exports[`index should set arguments into socket function 1`] = ` +exports[`index > should set arguments into socket function 1`] = ` [ "ws://localhost/ws", { diff --git a/test/client/__snapshots__/socket-helper.test.js.snap.webpack5 b/test/client/__snapshots__/socket-helper.test.js.snap.webpack5 index 6db58361bb..dc319ec27d 100644 --- a/test/client/__snapshots__/socket-helper.test.js.snap.webpack5 +++ b/test/client/__snapshots__/socket-helper.test.js.snap.webpack5 @@ -1,12 +1,10 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`socket should default to WebsocketClient when no __webpack_dev_server_client__ set 1`] = ` +exports[`socket > should default to WebsocketClient when no __webpack_dev_server_client__ set 1`] = ` [ "my.url", ] `; -exports[`socket should default to WebsocketClient when no __webpack_dev_server_client__ set 2`] = ` +exports[`socket > should default to WebsocketClient when no __webpack_dev_server_client__ set 2`] = ` [ [ [Function], @@ -14,7 +12,7 @@ exports[`socket should default to WebsocketClient when no __webpack_dev_server_c ] `; -exports[`socket should default to WebsocketClient when no __webpack_dev_server_client__ set 3`] = ` +exports[`socket > should default to WebsocketClient when no __webpack_dev_server_client__ set 3`] = ` [ [ [Function], @@ -22,7 +20,7 @@ exports[`socket should default to WebsocketClient when no __webpack_dev_server_c ] `; -exports[`socket should default to WebsocketClient when no __webpack_dev_server_client__ set 4`] = ` +exports[`socket > should default to WebsocketClient when no __webpack_dev_server_client__ set 4`] = ` [ [ [Function], @@ -30,7 +28,7 @@ exports[`socket should default to WebsocketClient when no __webpack_dev_server_c ] `; -exports[`socket should default to WebsocketClient when no __webpack_dev_server_client__ set 5`] = ` +exports[`socket > should default to WebsocketClient when no __webpack_dev_server_client__ set 5`] = ` [ [ "hello world", @@ -41,13 +39,13 @@ exports[`socket should default to WebsocketClient when no __webpack_dev_server_c ] `; -exports[`socket should use __webpack_dev_server_client__ when set 1`] = ` +exports[`socket > should use __webpack_dev_server_client__ when set 1`] = ` [ "my.url", ] `; -exports[`socket should use __webpack_dev_server_client__ when set 2`] = ` +exports[`socket > should use __webpack_dev_server_client__ when set 2`] = ` [ [ [Function], @@ -55,7 +53,7 @@ exports[`socket should use __webpack_dev_server_client__ when set 2`] = ` ] `; -exports[`socket should use __webpack_dev_server_client__ when set 3`] = ` +exports[`socket > should use __webpack_dev_server_client__ when set 3`] = ` [ [ [Function], @@ -63,7 +61,7 @@ exports[`socket should use __webpack_dev_server_client__ when set 3`] = ` ] `; -exports[`socket should use __webpack_dev_server_client__ when set 4`] = ` +exports[`socket > should use __webpack_dev_server_client__ when set 4`] = ` [ [ [Function], @@ -71,7 +69,7 @@ exports[`socket should use __webpack_dev_server_client__ when set 4`] = ` ] `; -exports[`socket should use __webpack_dev_server_client__ when set 5`] = ` +exports[`socket > should use __webpack_dev_server_client__ when set 5`] = ` [ [ "hello world", diff --git a/test/client/bundle.test.js b/test/client/bundle.test.js index c392196be9..0df082287a 100644 --- a/test/client/bundle.test.js +++ b/test/client/bundle.test.js @@ -1,6 +1,8 @@ "use strict"; +const { after, before, describe, it } = require("node:test"); const acorn = require("acorn"); +const { expect } = require("expect"); const request = require("supertest"); const webpack = require("webpack"); const Server = require("../../lib/Server"); @@ -12,7 +14,7 @@ describe("bundle", () => { let server; let req; - beforeAll(async () => { + before(async () => { const compiler = webpack({ ...config, target: ["es5", "web"], @@ -25,7 +27,7 @@ describe("bundle", () => { req = request(server.app); }); - afterAll(async () => { + after(async () => { await server.stop(); }); diff --git a/test/client/clients/WebsocketClient.test.js b/test/client/clients/WebsocketClient.test.js index de113abb2c..16db28072d 100644 --- a/test/client/clients/WebsocketClient.test.js +++ b/test/client/clients/WebsocketClient.test.js @@ -1,18 +1,23 @@ +"use strict"; + /** * @jest-environment jsdom * @jest-environment-options { "customExportConditions": ["main"] } */ -"use strict"; +require("../../helpers/jsdom-setup"); const http = require("node:http"); +const { after, before, describe, it } = require("node:test"); +const { expect } = require("expect"); const express = require("express"); +const { fn } = require("jest-mock"); const ws = require("ws"); const port = require("../../ports-map")["web-socket-client"]; jest.setMock("../../../client-src/utils/log", { log: { - error: jest.fn(), + error: fn(), }, }); @@ -24,7 +29,7 @@ describe("WebsocketClient", () => { let socketServer; let server; - beforeAll((done) => { + before((done) => { // eslint-disable-next-line new-cap const app = new express(); @@ -68,15 +73,15 @@ describe("WebsocketClient", () => { expect(log.error.mock.calls).toHaveLength(1); expect(log.error.mock.calls[0]).toEqual([testError]); - setTimeout(() => { - expect(data).toMatchSnapshot(); + setTimeout((t) => { + t.assert.snapshot(data); done(); }, 3000); }); }); - afterAll((done) => { + after((done) => { server.close(() => { done(); }); diff --git a/test/client/clients/__snapshots__/WebsocketClient.test.js.snap.webpack5 b/test/client/clients/__snapshots__/WebsocketClient.test.js.snap.webpack5 index b27fa29f63..9a0c138a65 100644 --- a/test/client/clients/__snapshots__/WebsocketClient.test.js.snap.webpack5 +++ b/test/client/clients/__snapshots__/WebsocketClient.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`WebsocketClient client should open, receive message, and close 1`] = ` +exports[`WebsocketClient > client > should open, receive message, and close 1`] = ` [ "open", "hello world", diff --git a/test/client/index.test.js b/test/client/index.test.js index aaa1c9f0f5..82bda0d2c8 100644 --- a/test/client/index.test.js +++ b/test/client/index.test.js @@ -1,9 +1,11 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); +const { fn } = require("jest-mock"); + +require("../helpers/jsdom-setup"); + describe("index", () => { let log; let socket; @@ -20,21 +22,21 @@ describe("index", () => { // log jest.setMock("../../client-src/utils/log.js", { log: { - info: jest.fn(), - warn: jest.fn(), - error: jest.fn(), + info: fn(), + warn: fn(), + error: fn(), }, - logEnabledFeatures: jest.fn(), - setLogLevel: jest.fn(), + logEnabledFeatures: fn(), + setLogLevel: fn(), }); log = require("../../client-src/utils/log"); // socket - jest.setMock("../../client-src/socket.js", jest.fn()); + jest.setMock("../../client-src/socket.js", fn()); socket = require("../../client-src/socket"); - const send = jest.fn(); + const send = fn(); // overlay jest.setMock("../../client-src/overlay.js", { @@ -52,13 +54,13 @@ describe("index", () => { overlay = createOverlay(); // sendMessage - jest.setMock("../../client-src/utils/sendMessage.js", jest.fn()); + jest.setMock("../../client-src/utils/sendMessage.js", fn()); sendMessage = require("../../client-src/utils/sendMessage"); // issue: https://github.com/jsdom/jsdom/issues/2112 delete globalThis.location; - globalThis.location = { ...locationValue, reload: jest.fn() }; + globalThis.location = { ...locationValue, reload: fn() }; require("../../client-src"); [[, onSocketMessage]] = socket.mock.calls; @@ -71,15 +73,15 @@ describe("index", () => { jest.resetModules(); }); - it("should set arguments into socket function", () => { - expect(socket.mock.calls[0]).toMatchSnapshot(); + it("should set arguments into socket function", (t) => { + t.assert.snapshot(socket.mock.calls[0]); }); - it("should run onSocketMessage['still-ok']", () => { + it("should run onSocketMessage['still-ok']", (t) => { onSocketMessage["still-ok"](); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); + t.assert.snapshot(sendMessage.mock.calls[0][0]); expect(overlay.send).not.toHaveBeenCalledWith({ type: "DISMISS" }); // change flags @@ -89,14 +91,14 @@ describe("index", () => { expect(overlay.send).toHaveBeenCalledWith({ type: "DISMISS" }); }); - it("should run onSocketMessage.progress and onSocketMessage['progress-update']", () => { + it("should run onSocketMessage.progress and onSocketMessage['progress-update']", (t) => { onSocketMessage.progress(false); onSocketMessage["progress-update"]({ msg: "mock-msg", percent: "12", }); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(sendMessage.mock.calls[0][0]); onSocketMessage.progress(true); onSocketMessage["progress-update"]({ @@ -104,10 +106,10 @@ describe("index", () => { percent: "12", }); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); }); - it("should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name", () => { + it("should run onSocketMessage.progress and onSocketMessage['progress-update'] and log plugin name", (t) => { onSocketMessage.progress(false); onSocketMessage["progress-update"]({ msg: "mock-msg", @@ -115,7 +117,7 @@ describe("index", () => { pluginName: "mock-plugin", }); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(sendMessage.mock.calls[0][0]); onSocketMessage.progress(true); onSocketMessage["progress-update"]({ @@ -124,13 +126,13 @@ describe("index", () => { pluginName: "mock-plugin", }); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); }); - it("should run onSocketMessage.ok", () => { + it("should run onSocketMessage.ok", (t) => { onSocketMessage.ok(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(sendMessage.mock.calls[0][0]); onSocketMessage.errors([]); onSocketMessage.hash("mock-hash"); @@ -140,26 +142,26 @@ describe("index", () => { expect(res).toBeUndefined(); }); - it("should run onSocketMessage['static-changed']", () => { + it("should run onSocketMessage['static-changed']", (t) => { onSocketMessage["static-changed"](); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); expect(self.location.reload).toHaveBeenCalled(); }); - it("should run onSocketMessage['static-changed'](file)", () => { + it("should run onSocketMessage['static-changed'](file)", (t) => { onSocketMessage["static-changed"]("/static/assets/index.html"); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); expect(self.location.reload).toHaveBeenCalled(); }); - it("should run onSocketMessage.warnings", () => { + it("should run onSocketMessage.warnings", (t) => { onSocketMessage.warnings(["warn1", "\u001B[4mwarn2\u001B[0m", "warn3"]); - expect(log.log.warn.mock.calls[0][0]).toMatchSnapshot(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); - expect(log.log.warn.mock.calls.splice(1)).toMatchSnapshot(); + t.assert.snapshot(log.log.warn.mock.calls[0][0]); + t.assert.snapshot(sendMessage.mock.calls[0][0]); + t.assert.snapshot(log.log.warn.mock.calls.splice(1)); // change flags onSocketMessage.overlay({ warnings: true }); @@ -244,34 +246,34 @@ describe("index", () => { }); }); - it("should run onSocketMessage.error", () => { + it("should run onSocketMessage.error", (t) => { onSocketMessage.error("error!!"); - expect(log.log.error.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.error.mock.calls[0][0]); }); - it("should run onSocketMessage.close", () => { + it("should run onSocketMessage.close", (t) => { onSocketMessage.close(); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); + t.assert.snapshot(sendMessage.mock.calls[0][0]); }); - it("should run onSocketMessage.close (hot enabled)", () => { + it("should run onSocketMessage.close (hot enabled)", (t) => { // enabling hot onSocketMessage.hot(); onSocketMessage.close(); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); + t.assert.snapshot(sendMessage.mock.calls[0][0]); }); - it("should run onSocketMessage.close (liveReload enabled)", () => { + it("should run onSocketMessage.close (liveReload enabled)", (t) => { // enabling liveReload onSocketMessage.liveReload(); onSocketMessage.close(); - expect(log.log.info.mock.calls[1][0]).toMatchSnapshot(); - expect(sendMessage.mock.calls[0][0]).toMatchSnapshot(); + t.assert.snapshot(log.log.info.mock.calls[1][0]); + t.assert.snapshot(sendMessage.mock.calls[0][0]); }); }); diff --git a/test/client/socket-helper.test.js b/test/client/socket-helper.test.js index 2ebcf25c98..62d6ae9669 100644 --- a/test/client/socket-helper.test.js +++ b/test/client/socket-helper.test.js @@ -1,23 +1,25 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +const { beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); +const { fn } = require("jest-mock"); + +require("../helpers/jsdom-setup"); + describe("socket", () => { beforeEach(() => { jest.resetAllMocks(); jest.resetModules(); }); - it("should default to WebsocketClient when no __webpack_dev_server_client__ set", () => { + it("should default to WebsocketClient when no __webpack_dev_server_client__ set", (t) => { jest.mock("../../client/clients/WebSocketClient"); const socket = require("../../client/socket").default; const WebsocketClient = require("../../client/clients/WebSocketClient").default; - const mockHandler = jest.fn(); + const mockHandler = fn(); socket("my.url", { example: mockHandler, @@ -35,14 +37,14 @@ describe("socket", () => { }), ); - expect(WebsocketClient.mock.calls[0]).toMatchSnapshot(); - expect(mockClientInstance.onOpen.mock.calls).toMatchSnapshot(); - expect(mockClientInstance.onClose.mock.calls).toMatchSnapshot(); - expect(mockClientInstance.onMessage.mock.calls).toMatchSnapshot(); - expect(mockHandler.mock.calls).toMatchSnapshot(); + t.assert.snapshot(WebsocketClient.mock.calls[0]); + t.assert.snapshot(mockClientInstance.onOpen.mock.calls); + t.assert.snapshot(mockClientInstance.onClose.mock.calls); + t.assert.snapshot(mockClientInstance.onMessage.mock.calls); + t.assert.snapshot(mockHandler.mock.calls); }); - it("should use __webpack_dev_server_client__ when set", () => { + it("should use __webpack_dev_server_client__ when set", (t) => { jest.mock("../../client/clients/WebSocketClient"); const socket = require("../../client/socket").default; @@ -50,7 +52,7 @@ describe("socket", () => { globalThis.__webpack_dev_server_client__ = require("../../client/clients/WebSocketClient").default; - const mockHandler = jest.fn(); + const mockHandler = fn(); socket("my.url", { example: mockHandler, @@ -69,13 +71,11 @@ describe("socket", () => { }), ); - expect( - globalThis.__webpack_dev_server_client__.mock.calls[0], - ).toMatchSnapshot(); - expect(mockClientInstance.onOpen.mock.calls).toMatchSnapshot(); - expect(mockClientInstance.onClose.mock.calls).toMatchSnapshot(); - expect(mockClientInstance.onMessage.mock.calls).toMatchSnapshot(); - expect(mockHandler.mock.calls).toMatchSnapshot(); + t.assert.snapshot(globalThis.__webpack_dev_server_client__.mock.calls[0]); + t.assert.snapshot(mockClientInstance.onOpen.mock.calls); + t.assert.snapshot(mockClientInstance.onClose.mock.calls); + t.assert.snapshot(mockClientInstance.onMessage.mock.calls); + t.assert.snapshot(mockHandler.mock.calls); }); it("should export initialized client", () => { diff --git a/test/client/utils/__snapshots__/getCurrentScriptSource.test.js.snap.webpack5 b/test/client/utils/__snapshots__/getCurrentScriptSource.test.js.snap.webpack5 index 76ff325ffa..7a5d695376 100644 --- a/test/client/utils/__snapshots__/getCurrentScriptSource.test.js.snap.webpack5 +++ b/test/client/utils/__snapshots__/getCurrentScriptSource.test.js.snap.webpack5 @@ -1,7 +1,11 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing +exports[`'getCurrentScriptSource' function > should fail when 'document.currentScript' doesn't exist and no 'script' tags 1`] = ` +[Error: [webpack-dev-server] Failed to get current script source.] +`; -exports[`'getCurrentScriptSource' function should fail when 'document.currentScript' doesn't exist and no 'script' tags 1`] = `[Error: [webpack-dev-server] Failed to get current script source.]`; +exports[`'getCurrentScriptSource' function > should fail when 'document.scripts' doesn't exist and no scripts 1`] = ` +[Error: [webpack-dev-server] Failed to get current script source.] +`; -exports[`'getCurrentScriptSource' function should fail when 'document.scripts' doesn't exist and no scripts 1`] = `[Error: [webpack-dev-server] Failed to get current script source.]`; - -exports[`'getCurrentScriptSource' function should fail when no scripts with the 'scr' attribute 1`] = `[Error: [webpack-dev-server] Failed to get current script source.]`; +exports[`'getCurrentScriptSource' function > should fail when no scripts with the 'scr' attribute 1`] = ` +[Error: [webpack-dev-server] Failed to get current script source.] +`; diff --git a/test/client/utils/__snapshots__/log.test.js.snap.webpack5 b/test/client/utils/__snapshots__/log.test.js.snap.webpack5 index b02da380e8..29e0eba274 100644 --- a/test/client/utils/__snapshots__/log.test.js.snap.webpack5 +++ b/test/client/utils/__snapshots__/log.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`'log' function should set log level via setLogLevel 1`] = ` +exports[`'log' function > should set log level via setLogLevel 1`] = ` [ [ { diff --git a/test/client/utils/__snapshots__/sendMessage.test.js.snap.webpack5 b/test/client/utils/__snapshots__/sendMessage.test.js.snap.webpack5 index e99efa7e7f..ee89e94a8c 100644 --- a/test/client/utils/__snapshots__/sendMessage.test.js.snap.webpack5 +++ b/test/client/utils/__snapshots__/sendMessage.test.js.snap.webpack5 @@ -1,6 +1,4 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`'sendMessage' function should run self.postMessage 1`] = ` +exports[`'sendMessage' function > should run self.postMessage 1`] = ` [ { "data": "bar", diff --git a/test/client/utils/createSocketURL.test.js b/test/client/utils/createSocketURL.test.js index 3170d8fa62..1a62730912 100644 --- a/test/client/utils/createSocketURL.test.js +++ b/test/client/utils/createSocketURL.test.js @@ -1,9 +1,10 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +const { describe, it } = require("node:test"); +const { expect } = require("expect"); + +require("../../helpers/jsdom-setup"); + describe("'createSocketURL' function", () => { globalThis.__webpack_hash__ = "hash"; @@ -138,6 +139,10 @@ describe("'createSocketURL' function", () => { expect(createSocketURL(parsedURL)).toBe(expected); }); - jest.resetModules(); + // jest.resetModules() removed during migration to node:test. + // Replaced by clearing require cache for client-src modules. + for (const key of Object.keys(require.cache)) { + if (key.includes("/client-src/")) delete require.cache[key]; + } } }); diff --git a/test/client/utils/getCurrentScriptSource.test.js b/test/client/utils/getCurrentScriptSource.test.js index 8eca65c0bd..bd1f94420b 100644 --- a/test/client/utils/getCurrentScriptSource.test.js +++ b/test/client/utils/getCurrentScriptSource.test.js @@ -1,9 +1,10 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +const { afterEach, beforeEach, describe, it } = require("node:test"); +const { expect } = require("expect"); + +require("../../helpers/jsdom-setup"); + describe("'getCurrentScriptSource' function", () => { let getCurrentScriptSource; @@ -26,11 +27,11 @@ describe("'getCurrentScriptSource' function", () => { }); }); - it("should fail when 'document.currentScript' doesn't exist and no 'script' tags", () => { + it("should fail when 'document.currentScript' doesn't exist and no 'script' tags", (t) => { try { getCurrentScriptSource(); } catch (error) { - expect(error).toMatchSnapshot(); + t.assert.snapshot(error); } }); @@ -46,7 +47,7 @@ describe("'getCurrentScriptSource' function", () => { expect(getCurrentScriptSource()).toBe("foo"); }); - it("should fail when 'document.scripts' doesn't exist and no scripts", () => { + it("should fail when 'document.scripts' doesn't exist and no scripts", (t) => { Object.defineProperty(document, "scripts", { value: undefined, writable: true, @@ -55,7 +56,7 @@ describe("'getCurrentScriptSource' function", () => { try { getCurrentScriptSource(); } catch (error) { - expect(error).toMatchSnapshot(); + t.assert.snapshot(error); } }); @@ -75,7 +76,7 @@ describe("'getCurrentScriptSource' function", () => { expect(getCurrentScriptSource()).toBe("bar"); }); - it("should fail when no scripts with the 'scr' attribute", () => { + it("should fail when no scripts with the 'scr' attribute", (t) => { const elements = ["foo", "bar"].map(() => document.createElement("script")); Object.defineProperty(document, "scripts", { @@ -85,7 +86,7 @@ describe("'getCurrentScriptSource' function", () => { try { getCurrentScriptSource(); } catch (error) { - expect(error).toMatchSnapshot(); + t.assert.snapshot(error); } }); }); diff --git a/test/client/utils/log.test.js b/test/client/utils/log.test.js index 53c0fb64a5..0160d6a07f 100644 --- a/test/client/utils/log.test.js +++ b/test/client/utils/log.test.js @@ -1,19 +1,25 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +require("../../helpers/jsdom-setup"); + +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { expect } = require("expect"); +const { fn } = require("jest-mock"); + describe("'log' function", () => { let logMock; let setLogLevel; + let runtimeMock; beforeEach(() => { - jest.setMock("webpack/lib/logging/runtime", { - getLogger: jest.fn(), - configureDefaultLogger: jest.fn(), + logMock = { + getLogger: fn(), + configureDefaultLogger: fn(), + }; + runtimeMock = mock.module("webpack/lib/logging/runtime.js", { + defaultExport: logMock, + namedExports: logMock, }); - logMock = require("webpack/lib/logging/runtime"); setLogLevel = require("../../../client-src/utils/log").setLogLevel; }); @@ -21,6 +27,8 @@ describe("'log' function", () => { afterEach(() => { logMock.getLogger.mockClear(); logMock.configureDefaultLogger.mockClear(); + runtimeMock.restore(); + delete require.cache[require.resolve("../../../client-src/utils/log")]; }); it("should set info as the default level and create logger", () => { @@ -36,11 +44,11 @@ describe("'log' function", () => { expect(getLogger.mock.calls[0][0]).toBe("webpack-dev-server"); }); - it("should set log level via setLogLevel", () => { + it("should set log level via setLogLevel", (t) => { for (const level of ["none", "error", "warn", "info", "log", "verbose"]) { setLogLevel(level); } - expect(logMock.configureDefaultLogger.mock.calls).toMatchSnapshot(); + t.assert.snapshot(logMock.configureDefaultLogger.mock.calls); }); }); diff --git a/test/client/utils/sendMessage.test.js b/test/client/utils/sendMessage.test.js index 3bfdb588d5..8b3d59b337 100644 --- a/test/client/utils/sendMessage.test.js +++ b/test/client/utils/sendMessage.test.js @@ -1,22 +1,19 @@ -/** - * @jest-environment jsdom - */ - "use strict"; +require("../../helpers/jsdom-setup"); + +const { describe, it } = require("node:test"); +const { expect } = require("expect"); +const { spyOn } = require("jest-mock"); const sendMessage = require("../../../client-src/utils/sendMessage").default; describe("'sendMessage' function", () => { - afterEach(() => { - jest.resetAllMocks(); - }); - - it("should run self.postMessage", () => { - jest.spyOn(globalThis, "postMessage").mockImplementation(); + it("should run self.postMessage", (t) => { + spyOn(globalThis, "postMessage").mockImplementation(); sendMessage("foo", "bar"); expect(self.postMessage).toHaveBeenCalled(); - expect(self.postMessage.mock.calls[0]).toMatchSnapshot(); + t.assert.snapshot(self.postMessage.mock.calls[0]); }); }); diff --git a/test/helpers/jsdom-setup.js b/test/helpers/jsdom-setup.js new file mode 100644 index 0000000000..c653402d86 --- /dev/null +++ b/test/helpers/jsdom-setup.js @@ -0,0 +1,78 @@ +"use strict"; + +const { JSDOM } = require("jsdom"); + +const dom = new JSDOM("", { + url: "http://localhost/", + pretendToBeVisual: true, +}); + +const props = [ + "window", + "document", + "navigator", + "location", + "history", + "HTMLElement", + "Element", + "Node", + "Event", + "CustomEvent", + "EventTarget", + "MouseEvent", + "KeyboardEvent", + "MessageEvent", + "MutationObserver", + "IntersectionObserver", + "ResizeObserver", + "DOMParser", + "XMLSerializer", + "FormData", + "Blob", + "File", + "FileReader", + "URL", + "URLSearchParams", + "WebSocket", + "Worker", + "requestAnimationFrame", + "cancelAnimationFrame", + "getComputedStyle", + "self", + "postMessage", + "addEventListener", + "removeEventListener", + "dispatchEvent", + "innerWidth", + "innerHeight", + "screen", + "alert", + "confirm", + "prompt", + "fetch", + "Headers", + "Request", + "Response", +]; + +for (const prop of props) { + if (dom.window[prop] === undefined) continue; + // Bind functions to dom.window so jsdom internals get the right `this` + // (e.g. addEventListener requires this to be an EventTarget). + const value = + typeof dom.window[prop] === "function" + ? dom.window[prop].bind(dom.window) + : dom.window[prop]; + Object.defineProperty(globalThis, prop, { + configurable: true, + enumerable: true, + writable: true, + value, + }); +} + +// Match Jest's jsdom-environment behavior: window === self === globalThis. +// (Jest's environment installs everything on the same object; jsdom's +// dom.window is normally separate from Node's globalThis.) +globalThis.window = globalThis; +globalThis.self = globalThis; From 806c0efd263cc8479a94985b89969e5d05faa852 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sat, 9 May 2026 23:19:17 -0500 Subject: [PATCH 06/22] refactor: migrate tests from Jest to Node's test module - Updated package.json to remove Jest dependencies and adjust test scripts for Node's test module. - Deleted globalSetupTest.js and setupTest.js as they are no longer needed. - Refactored ReactErrorBoundary.test.js to utilize real jsdom window/document. - Updated WebsocketClient.test.js to use async/await and improved test structure. - Skipped index.test.js due to dependency on Jest's mocking capabilities. - Refactored socket-helper.test.js to create a mock WebSocketClient class. - Updated log.test.js to simplify logger tests and remove unnecessary mocks. - Enhanced jsdom-setup.js to replace jsdom's WebSocket with Node's ws library for better testing of WebSocket connections. --- .github/workflows/nodejs.yml | 2 +- client-src/socket.js | 16 +- client-src/utils/log.js | 8 +- eslint.config.mjs | 18 + jest.config.js | 30 - package-lock.json | 17869 +++++++----------- package.json | 13 +- scripts/globalSetupTest.js | 41 - scripts/setupTest.js | 7 - test/client/ReactErrorBoundary.test.js | 33 +- test/client/clients/WebsocketClient.test.js | 81 +- test/client/index.test.js | 215 +- test/client/socket-helper.test.js | 77 +- test/client/utils/log.test.js | 48 +- test/e2e/host.test.js | 4 +- test/helpers/jsdom-setup.js | 15 + 16 files changed, 6784 insertions(+), 11693 deletions(-) delete mode 100644 jest.config.js delete mode 100644 scripts/globalSetupTest.js delete mode 100644 scripts/setupTest.js diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 8dd6eac59b..ed15e14c8e 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -106,7 +106,7 @@ jobs: cp -R tmp-client client - name: Run tests for webpack version ${{ matrix.webpack-version }} - run: npm run test:coverage -- --ci --shard=${{ matrix.shard }} + run: npm run test:coverage -- --test-shard=${{ matrix.shard }} - name: Submit coverage data to codecov uses: codecov/codecov-action@v5 diff --git a/client-src/socket.js b/client-src/socket.js index c44e633a3e..7b7049d65b 100644 --- a/client-src/socket.js +++ b/client-src/socket.js @@ -6,10 +6,13 @@ import { log } from "./utils/log.js"; /** @typedef {import("./index.js").EXPECTED_ANY} EXPECTED_ANY */ /** @typedef {WebSocketClient} */ -// this WebsocketClient is here as a default fallback, in case the client is not injected -/** @type {CommunicationClientConstructor} */ -const Client = - typeof __webpack_dev_server_client__ !== "undefined" +/** + * Resolves the client constructor at call time so callers (and tests) can + * override the global without relying on module-load ordering. + * @returns {CommunicationClientConstructor} client constructor + */ +function resolveClient() { + return typeof __webpack_dev_server_client__ !== "undefined" ? typeof ( /** @type {{ default: CommunicationClientConstructor }} */ (__webpack_dev_server_client__).default @@ -20,6 +23,7 @@ const Client = __webpack_dev_server_client__ ) : WebSocketClient; +} let retries = 0; let maxRetries = 10; @@ -37,8 +41,10 @@ let timeout; * @param {string} url url * @param {{ [handler: string]: (data?: EXPECTED_ANY, params?: EXPECTED_ANY) => EXPECTED_ANY }} handlers handlers * @param {number=} reconnect count of reconnections + * @param {CommunicationClientConstructor} Client internal-only override + * or tests; defaults to the runtime-resolved client constructor */ -function socket(url, handlers, reconnect) { +function socket(url, handlers, reconnect, Client = resolveClient()) { client = new Client(url); client.onOpen(() => { diff --git a/client-src/utils/log.js b/client-src/utils/log.js index 3823fe2e1d..27ff60d17e 100644 --- a/client-src/utils/log.js +++ b/client-src/utils/log.js @@ -1,4 +1,4 @@ -import logger from "../modules/logger/index.js"; +import defaultLogger from "../modules/logger/index.js"; const name = "webpack-dev-server"; // default level is set on the client side, so it does not need @@ -8,14 +8,16 @@ const defaultLevel = "info"; // options new options, merge with old options /** * @param {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level level + * @param {object} logger internal-only override for tests; defaults to the + * real webpack runtime logger * @returns {void} */ -function setLogLevel(level) { +function setLogLevel(level, logger = defaultLogger) { logger.configureDefaultLogger({ level }); } setLogLevel(defaultLevel); -const log = logger.getLogger(name); +const log = defaultLogger.getLogger(name); export { log, setLogLevel }; diff --git a/eslint.config.mjs b/eslint.config.mjs index 52ac3be3ee..28737e9fc1 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -21,5 +21,23 @@ export default defineConfig([ { files: ["test/**/*"], extends: [configs["universal-recommended"]], + rules: { + // Tests use experimental node:test APIs intentionally + // (mock.module, mock.timers, snapshot.*). The package's engines field + // is wider than where these are stable, so silence the linter here. + "n/no-unsupported-features/node-builtins": "off", + // Test callbacks (it/test/subtest arrow functions) don't need JSDoc. + "jsdoc/require-jsdoc": "off", + // Tests legitimately log diagnostics (retry attempts, etc.). + "no-console": "off", + // Closure params in reduce/map (`(p, server) => ...`) are conventional. + "id-length": "off", + }, + }, + { + files: ["scripts/node-test-setup.mjs"], + rules: { + "n/no-unsupported-features/node-builtins": "off", + }, }, ]); diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 7bd7b0bb03..0000000000 --- a/jest.config.js +++ /dev/null @@ -1,30 +0,0 @@ -"use strict"; - -module.exports = { - testEnvironmentOptions: { - url: "http://localhost/", - }, - collectCoverage: false, - coveragePathIgnorePatterns: [ - "/node_modules/", - "/test/", - "/client/", - ], - testPathIgnorePatterns: ["/bin/this/process-arguments.js"], - snapshotResolver: "/test/helpers/snapshotResolver.js", - setupFilesAfterEnv: ["/scripts/setupTest.js"], - globalSetup: "/scripts/globalSetupTest.js", - moduleNameMapper: { - // This forces Jest/jest-environment-jsdom to use a Node+CommonJS version of uuid, not a Browser+ESM one - // See https://github.com/uuidjs/uuid/pull/616 - // - // WARNING: if your dependency tree has multiple paths leading to uuid, this will force all of them to resolve to - // whichever one happens to be hoisted to your root node_modules folder. This makes it much more dangerous - // to consume future uuid upgrades. Consider using a custom resolver instead of moduleNameMapper. - // - // More: - // https://jestjs.io/docs/upgrading-to-jest28#packagejson-exports - // https://github.com/microsoft/accessibility-insights-web/pull/5421#issuecomment-1109168149 - // - }, -}; diff --git a/package-lock.json b/package-lock.json index cd5b66f78f..c924427ab5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -57,7 +57,6 @@ "@types/picomatch": "^4.0.2", "@types/trusted-types": "^2.0.7", "acorn": "^8.14.0", - "babel-jest": "^30.0.4", "babel-loader": "^10.0.0", "connect": "^3.7.0", "core-js": "^3.38.1", @@ -67,7 +66,6 @@ "eslint-config-prettier": "^10.1.5", "eslint-config-webpack": "^4.4.0", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jsdoc": "^51.3.4", "eslint-plugin-n": "^17.21.0", "execa": "^5.1.1", @@ -76,8 +74,6 @@ "html-webpack-plugin": "^5.6.3", "http-proxy": "^1.18.1", "husky": "^9.1.6", - "jest": "^30.0.4", - "jest-environment-jsdom": "^29.7.0", "jest-mock": "^30.4.1", "jsdom": "^29.1.1", "klona": "^2.0.4", @@ -96,7 +92,6 @@ "standard-version": "^9.3.0", "style-loader": "^4.0.0", "supertest": "^7.2.2", - "tcp-port-used": "^1.0.2", "typescript": "^5.7.2", "typescript-eslint": "^8.36.0", "wait-for-expect": "^3.0.2", @@ -753,61 +748,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", @@ -840,174 +780,6 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", - "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", - "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", @@ -2076,13 +1848,6 @@ "node": ">=6.9.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, "node_modules/@bramus/specificity": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", @@ -3110,40 +2875,6 @@ "node": ">=14.17.0" } }, - "node_modules/@emnapi/core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz", - "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.1.0", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", - "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/@es-joy/jsdoccomment": { "version": "0.52.0", "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz", @@ -3594,6819 +3325,2479 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@jest/get-type": { + "version": "30.1.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", + "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "devOptional": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "devOptional": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "devOptional": true, "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/console": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz", - "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0" + "node_modules/@jsonjoy.com/buffers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", + "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/@jsonjoy.com/codegen": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", + "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", + "license": "Apache-2.0", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-core": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.1.tgz", + "integrity": "sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "thingies": "^2.5.0" }, "engines": { - "node": ">=8" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-fsa": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.1.tgz", + "integrity": "sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "thingies": "^2.5.0" }, "engines": { - "node": ">=10" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.1.tgz", + "integrity": "sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@jsonjoy.com/fs-core": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/fs-print": "4.57.1", + "@jsonjoy.com/fs-snapshot": "4.57.1", + "glob-to-regex.js": "^1.0.0", + "thingies": "^2.5.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node-builtins": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.1.tgz", + "integrity": "sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz", - "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node-to-fsa": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.1.tgz", + "integrity": "sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==", + "license": "Apache-2.0", "dependencies": { - "@jest/console": "30.2.0", - "@jest/pattern": "30.0.1", - "@jest/reporters": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-changed-files": "30.2.0", - "jest-config": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-resolve-dependencies": "30.2.0", - "jest-runner": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "jest-watcher": "30.2.0", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0" + "@jsonjoy.com/fs-fsa": "4.57.1", + "@jsonjoy.com/fs-node-builtins": "4.57.1", + "@jsonjoy.com/fs-node-utils": "4.57.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-node-utils": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.1.tgz", + "integrity": "sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@jsonjoy.com/fs-node-builtins": "4.57.1" }, "engines": { - "node": ">=8" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-print": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.1.tgz", + "integrity": "sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@jsonjoy.com/fs-node-utils": "4.57.1", + "tree-dump": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.1.tgz", + "integrity": "sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@jsonjoy.com/buffers": "^17.65.0", + "@jsonjoy.com/fs-node-utils": "4.57.1", + "@jsonjoy.com/json-pack": "^17.65.0", + "@jsonjoy.com/util": "^17.65.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", + "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": ">=10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/core/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", + "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/diff-sequences": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", - "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", + "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", + "license": "Apache-2.0", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/environment": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz", - "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", + "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", + "license": "Apache-2.0", "dependencies": { - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0" + "@jsonjoy.com/base64": "17.67.0", + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0", + "@jsonjoy.com/json-pointer": "17.67.0", + "@jsonjoy.com/util": "17.67.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0", + "tree-dump": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/environment/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", + "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" + "@jsonjoy.com/util": "17.67.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { + "version": "17.67.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", + "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", + "license": "Apache-2.0", "dependencies": { - "expect": "30.2.0", - "jest-snapshot": "30.2.0" + "@jsonjoy.com/buffers": "17.67.0", + "@jsonjoy.com/codegen": "17.67.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/expect-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz", - "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", + "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==", + "license": "Apache-2.0", "dependencies": { - "@jest/get-type": "30.1.0" + "@jsonjoy.com/base64": "^1.1.2", + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/json-pointer": "^1.0.1", + "@jsonjoy.com/util": "^1.9.0", + "hyperdyperid": "^1.2.0", + "thingies": "^2.5.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/json-pointer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", + "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", + "license": "Apache-2.0", "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "@jsonjoy.com/codegen": "^1.0.0", + "@jsonjoy.com/util": "^1.9.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/expect/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, - "license": "MIT", + "node_modules/@jsonjoy.com/util": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", + "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", + "license": "Apache-2.0", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" + "@jsonjoy.com/buffers": "^1.0.0", + "@jsonjoy.com/codegen": "^1.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@jest/fake-timers": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz", - "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@sinonjs/fake-timers": "^13.0.0", - "@types/node": "*", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "optional": true }, - "node_modules/@jest/fake-timers/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "eslint-scope": "5.1.1" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@jest/globals": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz", - "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==", + "node_modules/@paralleldrive/cuid2": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", + "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/types": "30.2.0", - "jest-mock": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@noble/hashes": "^1.1.5" } }, - "node_modules/@jest/globals/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", - "dev": true, + "node_modules/@peculiar/asn1-cms": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz", + "integrity": "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/reporters": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz", - "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==", - "dev": true, + "node_modules/@peculiar/asn1-csr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz", + "integrity": "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==", "license": "MIT", "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "@types/node": "*", - "chalk": "^4.1.2", - "collect-v8-coverage": "^1.0.2", - "exit-x": "^0.2.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^5.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "slash": "^3.0.0", - "string-length": "^4.0.2", - "v8-to-istanbul": "^9.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz", + "integrity": "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, + "node_modules/@peculiar/asn1-pfx": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.0.tgz", + "integrity": "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@peculiar/asn1-pkcs8": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz", + "integrity": "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@peculiar/asn1-pkcs9": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz", + "integrity": "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-pfx": "^2.6.0", + "@peculiar/asn1-pkcs8": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "@peculiar/asn1-x509-attr": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", + "node_modules/@peculiar/asn1-rsa": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz", + "integrity": "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", + "node_modules/@peculiar/asn1-schema": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", + "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/reporters/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "node_modules/@peculiar/asn1-x509": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz", + "integrity": "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@peculiar/asn1-schema": "^2.6.0", + "asn1js": "^3.0.6", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", - "dev": true, + "node_modules/@peculiar/asn1-x509-attr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz", + "integrity": "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "asn1js": "^3.0.6", + "tslib": "^2.8.1" } }, - "node_modules/@jest/snapshot-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz", - "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==", - "dev": true, + "node_modules/@peculiar/x509": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.2.tgz", + "integrity": "sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==", "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "natural-compare": "^1.4.0" + "@peculiar/asn1-cms": "^2.6.0", + "@peculiar/asn1-csr": "^2.6.0", + "@peculiar/asn1-ecc": "^2.6.0", + "@peculiar/asn1-pkcs9": "^2.6.0", + "@peculiar/asn1-rsa": "^2.6.0", + "@peculiar/asn1-schema": "^2.6.0", + "@peculiar/asn1-x509": "^2.6.0", + "pvtsutils": "^1.3.6", + "reflect-metadata": "^0.2.2", + "tslib": "^2.8.1", + "tsyringe": "^4.10.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=22.0.0" } }, - "node_modules/@jest/snapshot-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "optional": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14" } }, - "node_modules/@jest/snapshot-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@pkgr/core": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", + "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/pkgr" } }, - "node_modules/@jest/snapshot-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@puppeteer/browsers": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", + "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "debug": "^4.4.3", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.3", + "tar-fs": "^3.1.1", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" } }, - "node_modules/@jest/snapshot-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/source-map": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz", - "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "callsites": "^3.1.0", - "graceful-fs": "^4.2.11" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-result": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz", - "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/console": "30.2.0", - "@jest/types": "30.2.0", - "@types/istanbul-lib-coverage": "^2.0.6", - "collect-v8-coverage": "^1.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/@jest/test-sequencer": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz", - "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==", + "node_modules/@puppeteer/browsers/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/test-result": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "slash": "^3.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/@jest/test-sequencer/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@stylistic/eslint-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.3.1.tgz", + "integrity": "sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/types": "^8.41.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "eslint": ">=9.0.0" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "url": "https://opencollective.com/eslint" } }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", "dev": true, "license": "MIT" }, - "node_modules/@jest/transform/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@types/node": "*" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@types/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@types/express": "*", + "@types/node": "*" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/node": "*" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@types/express-serve-static-core": "*", + "@types/node": "*" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "devOptional": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "@types/node": "*" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" + "@types/ms": "*" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "devOptional": true, "license": "MIT", - "engines": { - "node": ">=6.0.0" + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "devOptional": true, "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@types/eslint": "*", + "@types/estree": "*" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "devOptional": true, "license": "MIT" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/buffers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-1.0.0.tgz", - "integrity": "sha512-NDigYR3PHqCnQLXYyoLbnEdzMMvzeiCWo1KOut7Q0CoIqg9tUAPKJ1iq/2nFhc5kZtexzutNY0LFjdwWL3Dw3Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-1.0.0.tgz", - "integrity": "sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-core": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.1.tgz", - "integrity": "sha512-YrEi/ZPmgc+GfdO0esBF04qv8boK9Dg9WpRQw/+vM8Qt3nnVIJWIa8HwZ/LXVZ0DB11XUROM8El/7yYTJX+WtA==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "thingies": "^2.5.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.1.tgz", - "integrity": "sha512-ooEPvSW/HQDivPDPZMibHGKZf/QS4WRir1czGZmXmp3MsQqLECZEpN0JobrD8iV9BzsuwdIv+PxtWX9WpPLsIA==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-core": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "thingies": "^2.5.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-node": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.1.tgz", - "integrity": "sha512-3YaKhP8gXEKN+2O49GLNfNb5l2gbnCFHyAaybbA2JkkbQP3dpdef7WcUaHAulg/c5Dg4VncHsA3NWAUSZMR5KQ==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-core": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "@jsonjoy.com/fs-print": "4.57.1", - "@jsonjoy.com/fs-snapshot": "4.57.1", - "glob-to-regex.js": "^1.0.0", - "thingies": "^2.5.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.1.tgz", - "integrity": "sha512-XHkFKQ5GSH3uxm8c3ZYXVrexGdscpWKIcMWKFQpMpMJc8gA3AwOMBJXJlgpdJqmrhPyQXxaY9nbkNeYpacC0Og==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.1.tgz", - "integrity": "sha512-pqGHyWWzNck4jRfaGV39hkqpY5QjRUQ/nRbNT7FYbBa0xf4bDG+TE1Gt2KWZrSkrkZZDE3qZUjYMbjwSliX6pg==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-fsa": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.1.tgz", - "integrity": "sha512-vp+7ZzIB8v43G+GLXTS4oDUSQmhAsRz532QmmWBbdYA20s465JvwhkSFvX9cVTqRRAQg+vZ7zWDaIEh0lFe2gw==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.57.1" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-print": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.1.tgz", - "integrity": "sha512-Ynct7ZJmfk6qoXDOKfpovNA36ITUx8rChLmRQtW08J73VOiuNsU8PB6d/Xs7fxJC2ohWR3a5AqyjmLojfrw5yw==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.57.1", - "tree-dump": "^1.1.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.1.tgz", - "integrity": "sha512-/oG8xBNFMbDXTq9J7vepSA1kerS5vpgd3p5QZSPd+nX59uwodGJftI51gDYyHRpP57P3WCQf7LHtBYPqwUg2Bg==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "@jsonjoy.com/json-pack": "^17.65.0", - "@jsonjoy.com/util": "^17.65.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-17.67.0.tgz", - "integrity": "sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/buffers": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/buffers/-/buffers-17.67.0.tgz", - "integrity": "sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/codegen/-/codegen-17.67.0.tgz", - "integrity": "sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-17.67.0.tgz", - "integrity": "sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/base64": "17.67.0", - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0", - "@jsonjoy.com/json-pointer": "17.67.0", - "@jsonjoy.com/util": "17.67.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-17.67.0.tgz", - "integrity": "sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/util": "17.67.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { - "version": "17.67.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-17.67.0.tgz", - "integrity": "sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.11.0.tgz", - "integrity": "sha512-nLqSTAYwpk+5ZQIoVp7pfd/oSKNWlEdvTq2LzVA4r2wtWZg6v+5u0VgBOaDJuUfNOuw/4Ysq6glN5QKSrOCgrA==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.1", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pointer/-/json-pointer-1.0.2.tgz", - "integrity": "sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@jsonjoy.com/util": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.9.0.tgz", - "integrity": "sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==", - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" - }, - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "license": "MIT" - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" - } - }, - "node_modules/@nicolo-ribaudo/chokidar-2": { - "version": "2.1.8-no-fsevents.3", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", - "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { - "version": "5.1.1-v1", - "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", - "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-scope": "5.1.1" - } - }, - "node_modules/@noble/hashes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", - "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "^14.21.3 || >=16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.3.1.tgz", - "integrity": "sha512-XO7cAxhnTZl0Yggq6jOgjiOHhbgcO4NqFqwSmQpjK3b6TEE6Uj/jfSk6wzYyemh3+I0sHirKSetjQwn5cZktFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@noble/hashes": "^1.1.5" - } - }, - "node_modules/@peculiar/asn1-cms": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.6.0.tgz", - "integrity": "sha512-2uZqP+ggSncESeUF/9Su8rWqGclEfEiz1SyU02WX5fUONFfkjzS2Z/F1Li0ofSmf4JqYXIOdCAZqIXAIBAT1OA==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "@peculiar/asn1-x509-attr": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-csr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.6.0.tgz", - "integrity": "sha512-BeWIu5VpTIhfRysfEp73SGbwjjoLL/JWXhJ/9mo4vXnz3tRGm+NGm3KNcRzQ9VMVqwYS2RHlolz21svzRXIHPQ==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-ecc": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.6.0.tgz", - "integrity": "sha512-FF3LMGq6SfAOwUG2sKpPXblibn6XnEIKa+SryvUl5Pik+WR9rmRA3OCiwz8R3lVXnYnyRkSZsSLdml8H3UiOcw==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pfx": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.6.0.tgz", - "integrity": "sha512-rtUvtf+tyKGgokHHmZzeUojRZJYPxoD/jaN1+VAB4kKR7tXrnDCA/RAWXAIhMJJC+7W27IIRGe9djvxKgsldCQ==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-pkcs8": "^2.6.0", - "@peculiar/asn1-rsa": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pkcs8": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.6.0.tgz", - "integrity": "sha512-KyQ4D8G/NrS7Fw3XCJrngxmjwO/3htnA0lL9gDICvEQ+GJ+EPFqldcJQTwPIdvx98Tua+WjkdKHSC0/Km7T+lA==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-pkcs9": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.6.0.tgz", - "integrity": "sha512-b78OQ6OciW0aqZxdzliXGYHASeCvvw5caqidbpQRYW2mBtXIX2WhofNXTEe7NyxTb0P6J62kAAWLwn0HuMF1Fw==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-pfx": "^2.6.0", - "@peculiar/asn1-pkcs8": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "@peculiar/asn1-x509-attr": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-rsa": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.6.0.tgz", - "integrity": "sha512-Nu4C19tsrTsCp9fDrH+sdcOKoVfdfoQQ7S3VqjJU6vedR7tY3RLkQ5oguOIB3zFW33USDUuYZnPEQYySlgha4w==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-schema": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.6.0.tgz", - "integrity": "sha512-xNLYLBFTBKkCzEZIw842BxytQQATQv+lDTCEMZ8C196iJcJJMBUZxrhSTxLaohMyKK8QlzRNTRkUmanucnDSqg==", - "license": "MIT", - "dependencies": { - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-x509": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.6.0.tgz", - "integrity": "sha512-uzYbPEpoQiBoTq0/+jZtpM6Gq6zADBx+JNFP3yqRgziWBxQ/Dt/HcuvRfm9zJTPdRcBqPNdaRHTVwpyiq6iNMA==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "asn1js": "^3.0.6", - "pvtsutils": "^1.3.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/asn1-x509-attr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.6.0.tgz", - "integrity": "sha512-MuIAXFX3/dc8gmoZBkwJWxUWOSvG4MMDntXhrOZpJVMkYX+MYc/rUAU2uJOved9iJEoiUx7//3D8oG83a78UJA==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "asn1js": "^3.0.6", - "tslib": "^2.8.1" - } - }, - "node_modules/@peculiar/x509": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/@peculiar/x509/-/x509-1.14.2.tgz", - "integrity": "sha512-r2w1Hg6pODDs0zfAKHkSS5HLkOLSeburtcgwvlLLWWCixw+MmW3U6kD5ddyvc2Y2YdbGuVwCF2S2ASoU1cFAag==", - "license": "MIT", - "dependencies": { - "@peculiar/asn1-cms": "^2.6.0", - "@peculiar/asn1-csr": "^2.6.0", - "@peculiar/asn1-ecc": "^2.6.0", - "@peculiar/asn1-pkcs9": "^2.6.0", - "@peculiar/asn1-rsa": "^2.6.0", - "@peculiar/asn1-schema": "^2.6.0", - "@peculiar/asn1-x509": "^2.6.0", - "pvtsutils": "^1.3.6", - "reflect-metadata": "^0.2.2", - "tslib": "^2.8.1", - "tsyringe": "^4.10.0" - }, - "engines": { - "node": ">=22.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@pkgr/core": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz", - "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/pkgr" - } - }, - "node_modules/@puppeteer/browsers": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.11.1.tgz", - "integrity": "sha512-YmhAxs7XPuxN0j7LJloHpfD1ylhDuFmmwMvfy/+6nBSrETT2ycL53LrhgPtR+f+GcPSybQVuQ5inWWu5MrWCpA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.4.3", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.5.0", - "semver": "^7.7.3", - "tar-fs": "^3.1.1", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@stylistic/eslint-plugin": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.3.1.tgz", - "integrity": "sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/types": "^8.41.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": ">=9.0.0" - } - }, - "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.1.tgz", - "integrity": "sha512-HqmEUIGRJ5fSXchkVgR5F7qn48bDBzv0kWj/Kfu5e6uci4UlEeng4331LnBkWffb++Ei3FOVLxo8JJWMFBDMeQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", - "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.28.2" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.6", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", - "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-kCFuWS0ebDbmxs0AXYn6e2r2nrGAb5KwQhknjSPSPgJcGd8+HVSILlUyFhGqML2gk39HcG7D1ydW9/qpYkN00Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/express": "*", - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", - "license": "MIT", - "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" - } - }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "devOptional": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@types/express": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", - "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^5.0.0", - "@types/serve-static": "^2" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", - "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/graceful-fs": { - "version": "4.1.9", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", - "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", - "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", - "license": "MIT" - }, - "node_modules/@types/http-proxy": { - "version": "1.17.16", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", - "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", - "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-coverage": "*" - } - }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", - "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/istanbul-lib-report": "*" - } - }, - "node_modules/@types/jsdom": { - "version": "20.0.1", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", - "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/tough-cookie": "*", - "parse5": "^7.0.0" - } - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "node_modules/@types/node-forge": { - "version": "1.3.14", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", - "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", - "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", - "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*" - } - }, - "node_modules/@types/stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz", - "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/type-utils": "8.48.0", - "@typescript-eslint/utils": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.48.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz", - "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz", - "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.48.0", - "@typescript-eslint/types": "^8.48.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz", - "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz", - "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz", - "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0", - "@typescript-eslint/utils": "8.48.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz", - "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz", - "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.48.0", - "@typescript-eslint/tsconfig-utils": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/visitor-keys": "8.48.0", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz", - "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.48.0", - "@typescript-eslint/types": "8.48.0", - "@typescript-eslint/typescript-estree": "8.48.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.48.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz", - "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.48.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", - "dev": true, - "license": "ISC" - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", - "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", - "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", - "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", - "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", - "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", - "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", - "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", - "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", - "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", - "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", - "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", - "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", - "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", - "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", - "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", - "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", - "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", - "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", - "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", - "devOptional": true, - "license": "Apache-2.0", - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", - "devOptional": true, - "license": "MIT", - "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "devOptional": true, - "license": "BSD-3-Clause" - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "devOptional": true, - "license": "Apache-2.0" - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "devOptional": true, - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", - "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "acorn": "^8.14.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", - "license": "MIT", - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", - "engines": [ - "node >= 0.8.0" - ], - "license": "Apache-2.0", - "bin": { - "ansi-html": "bin/ansi-html" - } - }, - "node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-timsort": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", - "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "license": "MIT" - }, - "node_modules/asn1js": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", - "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", - "license": "BSD-3-Clause", - "dependencies": { - "pvtsutils": "^1.3.6", - "pvutils": "^1.1.3", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/b4a": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", - "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } - } - }, - "node_modules/babel-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz", - "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/transform": "30.2.0", - "@types/babel__core": "^7.20.5", - "babel-plugin-istanbul": "^7.0.1", - "babel-preset-jest": "30.2.0", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "slash": "^3.0.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-0" - } - }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/babel-jest/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-loader": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", - "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": "^18.20.0 || ^20.10.0 || >=22.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5.61.0" - } - }, - "node_modules/babel-loader/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/babel-loader/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/babel-plugin-istanbul": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", - "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", - "dev": true, - "license": "BSD-3-Clause", - "workspaces": [ - "test/babel-8" - ], - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-instrument": "^6.0.2", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/babel-plugin-jest-hoist": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", - "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/babel__core": "^7.20.5" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", - "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.27.7", - "@babel/helper-define-polyfill-provider": "^0.6.5", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", - "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz", - "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-import-attributes": "^7.24.7", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5" - }, - "peerDependencies": { - "@babel/core": "^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/babel-preset-jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz", - "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0 || ^8.0.0-beta.1" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true, - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", - "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", - "dev": true, - "license": "Apache-2.0", - "peerDependencies": { - "bare-abort-controller": "*" - }, - "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - } - } - }, - "node_modules/bare-fs": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", - "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", - "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", - "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/bare-url": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", - "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-path": "^3.0.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.16", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.16.tgz", - "integrity": "sha512-KeUZdBuxngy825i8xvzaK1Ncnkx0tBmb3k8DkEuqjKRkmtvNTjey2ZsNeh8Dw4lfKvbCOu9oeNx2TKm2vHqcRw==", - "devOptional": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/basic-ftp": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", - "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "license": "MIT" - }, - "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "require-from-string": "^2.0.2" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/body-parser": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", - "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", - "license": "MIT", - "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/bonjour-service": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", - "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true, - "license": "ISC" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/builtin-modules": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", - "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bytestreamjs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", - "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001766", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", - "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", - "devOptional": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.2.tgz", - "integrity": "sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", - "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/chromium-bidi": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", - "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "mitt": "^3.0.1", - "zod": "^3.24.1" - }, - "peerDependencies": { - "devtools-protocol": "*" - } - }, - "node_modules/ci-info": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", - "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cjs-module-lexer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.1.1.tgz", - "integrity": "sha512-+CmxIZ/L2vNcEfvNtLdU0ZQ6mbq3FZnwAP2PPTiKP+1QOoKwlKlPgb8UKV0Dds7QVaMnHm+FwSft2VB0s/SLjQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/clean-css": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", - "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map": "~0.6.0" - }, - "engines": { - "node": ">= 10.0" - } - }, - "node_modules/clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/clean-regexp/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/clear-module": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", - "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^2.0.0", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" - } - }, - "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-json": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", - "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-timsort": "^1.0.3", - "core-util-is": "^1.0.3", - "esprima": "^4.0.1", - "has-own-prop": "^2.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", - "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.1.0", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect-history-api-fallback": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", - "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/content-disposition": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", - "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", - "dev": true, - "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", - "dev": true, - "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-config-spec": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", - "dev": true, - "license": "MIT", - "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/conventional-changelog-core/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-core/node_modules/meow/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" } }, - "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/conventional-changelog-core/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*" } }, - "node_modules/conventional-changelog-core/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/conventional-changelog-core/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/conventional-changelog-core/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/conventional-changelog-core/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" } }, - "node_modules/conventional-changelog-core/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } + "license": "MIT" }, - "node_modules/conventional-changelog-core/node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10" + "dependencies": { + "@types/unist": "*" } }, - "node_modules/conventional-changelog-core/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" }, - "node_modules/conventional-changelog-core/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/conventional-changelog-core/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", - "dev": true, - "license": "ISC", + "node_modules/@types/node": { + "version": "24.10.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", + "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "license": "MIT", + "peer": true, "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "undici-types": "~7.16.0" } }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "node_modules/@types/node-forge": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.14.tgz", + "integrity": "sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "@types/node": "*" } }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true, - "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "node_modules/@types/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-qHHxQ+P9PysNEGbALT8f8YOSHW0KJu6l2xU8DYY0fu/EmGxXdVnuTLvFUvBgPJMSqXq29SYHveejeAha+4AYgA==", "dev": true, - "license": "ISC", - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } + "license": "MIT" + }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "dev": true, - "license": "ISC", + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "license": "MIT", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/express": "*" } }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dev": true, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", "license": "MIT", "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" + "@types/http-errors": "*", + "@types/node": "*" } }, - "node_modules/conventional-changelog-writer/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@types/node": "*" } }, - "node_modules/conventional-changelog-writer/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@types/yargs-parser": "*" } }, - "node_modules/conventional-changelog-writer/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true, - "license": "ISC", + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "license": "MIT", + "optional": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@types/node": "*" } }, - "node_modules/conventional-changelog-writer/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.48.0.tgz", + "integrity": "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/type-utils": "8.48.0", + "@typescript-eslint/utils": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@typescript-eslint/parser": "^8.48.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 4" } }, - "node_modules/conventional-changelog-writer/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@typescript-eslint/parser": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.48.0.tgz", + "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/conventional-changelog-writer/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-writer/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.48.0.tgz", + "integrity": "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw==", "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "@typescript-eslint/tsconfig-utils": "^8.48.0", + "@typescript-eslint/types": "^8.48.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.48.0.tgz", + "integrity": "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ==", "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.48.0.tgz", + "integrity": "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.48.0.tgz", + "integrity": "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0", + "@typescript-eslint/utils": "8.48.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-changelog-writer/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/@typescript-eslint/types": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.48.0.tgz", + "integrity": "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/conventional-changelog-writer/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.48.0.tgz", + "integrity": "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ==", "dev": true, - "license": "ISC", + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.48.0", + "@typescript-eslint/tsconfig-utils": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/visitor-keys": "8.48.0", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.1.0" + }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-changelog/node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "balanced-match": "^1.0.0" } }, - "node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "node_modules/@typescript-eslint/utils": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.48.0.tgz", + "integrity": "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ==", "dev": true, "license": "MIT", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.48.0", + "@typescript-eslint/types": "8.48.0", + "@typescript-eslint/typescript-estree": "8.48.0" }, "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "bin": { - "conventional-recommended-bump": "cli.js" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.48.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.48.0.tgz", + "integrity": "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg==", "dev": true, "license": "MIT", "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" + "@typescript-eslint/types": "8.48.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/conventional-recommended-bump/node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/conventional-recommended-bump/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, - "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", - "dev": true, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "devOptional": true, "license": "MIT", "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" } }, - "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "devOptional": true, + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, - "node_modules/conventional-recommended-bump/node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", - "dev": true, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "devOptional": true, "license": "MIT", "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@xtuc/ieee754": "^1.2.0" } }, - "node_modules/conventional-recommended-bump/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, - "node_modules/conventional-recommended-bump/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/conventional-recommended-bump/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "devOptional": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, - "node_modules/conventional-recommended-bump/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "devOptional": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, - "node_modules/conventional-recommended-bump/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "devOptional": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "devOptional": true, + "license": "Apache-2.0" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "event-target-shim": "^5.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.5" } }, - "node_modules/conventional-recommended-bump/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/conventional-recommended-bump/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, + "node_modules/acorn": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "peer": true, + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, + "node_modules/acorn-import-phases": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", + "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", + "devOptional": true, "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, "engines": { - "node": ">=8" + "node": ">=10.13.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "acorn": "^8.14.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "peer": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/conventional-recommended-bump/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ajv": "^8.0.0" }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/conventional-recommended-bump/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "ajv": "^8.0.0" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/conventional-recommended-bump/node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "license": "ISC", + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "license": "MIT", "dependencies": { - "readable-stream": "^3.0.0" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/conventional-recommended-bump/node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10" + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "engines": [ + "node >= 0.8.0" + ], + "license": "Apache-2.0", + "bin": { + "ansi-html": "bin/ansi-html" } }, - "node_modules/conventional-recommended-bump/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, - "license": "(MIT OR CC0-1.0)", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/conventional-recommended-bump/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "license": "ISC", + "optional": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "license": "MIT", + "optional": true, "engines": { - "node": ">= 0.6" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/cookie-signature": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", - "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6.6.0" + "node": ">=14" } }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", - "dev": true, - "license": "MIT" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { - "is-what": "^3.14.1" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/core-js": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", - "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } + "license": "MIT" }, - "node_modules/core-js-compat": { - "version": "3.45.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz", - "integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==", + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.25.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/core-util-is": { + "node_modules/array-timsort": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "dev": true, "license": "MIT" }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, - "peerDependencies": { - "typescript": ">=4.9.5" + "engines": { + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", "dependencies": { - "jiti": "^2.4.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=v18" + "node": ">= 0.4" }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=9", - "typescript": ">=5" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cosmiconfig/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.7.tgz", + "integrity": "sha512-uLvq6KJu04qoQM6gvBfKFjlh6Gl0vOKQuR5cJMDHQkmwfMOQeN3F3SHCv9SNYSL+CRoHvOGFfllDlVz03GQjvQ==", + "license": "BSD-3-Clause", "dependencies": { - "argparse": "^2.0.1" + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=12.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "tslib": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/cspell": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.19.4.tgz", - "integrity": "sha512-toaLrLj3usWY0Bvdi661zMmpKW2DVLAG3tcwkAv4JBTisdIRn15kN/qZDrhSieUEhVgJgZJDH4UKRiq29mIFxA==", + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", - "dependencies": { - "@cspell/cspell-json-reporter": "8.19.4", - "@cspell/cspell-pipe": "8.19.4", - "@cspell/cspell-types": "8.19.4", - "@cspell/dynamic-import": "8.19.4", - "@cspell/url": "8.19.4", - "chalk": "^5.4.1", - "chalk-template": "^1.1.0", - "commander": "^13.1.0", - "cspell-dictionary": "8.19.4", - "cspell-gitignore": "8.19.4", - "cspell-glob": "8.19.4", - "cspell-io": "8.19.4", - "cspell-lib": "8.19.4", - "fast-json-stable-stringify": "^2.1.0", - "file-entry-cache": "^9.1.0", - "semver": "^7.7.1", - "tinyglobby": "^0.2.13" - }, - "bin": { - "cspell": "bin.mjs", - "cspell-esm": "bin.mjs" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/cspell-config-lib": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.19.4.tgz", - "integrity": "sha512-LtFNZEWVrnpjiTNgEDsVN05UqhhJ1iA0HnTv4jsascPehlaUYVoyucgNbFeRs6UMaClJnqR0qT9lnPX+KO1OLg==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-types": "8.19.4", - "comment-json": "^4.2.5", - "yaml": "^2.7.1" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=18" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cspell-dictionary": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.19.4.tgz", - "integrity": "sha512-lr8uIm7Wub8ToRXO9f6f7in429P1Egm3I+Ps3ZGfWpwLTCUBnHvJdNF/kQqF7PL0Lw6acXcjVWFYT7l2Wdst2g==", + "node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", "dev": true, - "license": "MIT", - "dependencies": { - "@cspell/cspell-pipe": "8.19.4", - "@cspell/cspell-types": "8.19.4", - "cspell-trie-lib": "8.19.4", - "fast-equals": "^5.2.2" + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" }, - "engines": { - "node": ">=18" + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } } }, - "node_modules/cspell-gitignore": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.19.4.tgz", - "integrity": "sha512-KrViypPilNUHWZkMV0SM8P9EQVIyH8HvUqFscI7+cyzWnlglvzqDdV4N5f+Ax5mK+IqR6rTEX8JZbCwIWWV7og==", + "node_modules/babel-loader": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-10.0.0.tgz", + "integrity": "sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.19.4", - "cspell-glob": "8.19.4", - "cspell-io": "8.19.4" - }, - "bin": { - "cspell-gitignore": "bin.mjs" + "find-up": "^5.0.0" }, "engines": { - "node": ">=18" + "node": "^18.20.0 || ^20.10.0 || >=22.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5.61.0" } }, - "node_modules/cspell-glob": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.19.4.tgz", - "integrity": "sha512-042uDU+RjAz882w+DXKuYxI2rrgVPfRQDYvIQvUrY1hexH4sHbne78+OMlFjjzOCEAgyjnm1ktWUCCmh08pQUw==", + "node_modules/babel-loader/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/url": "8.19.4", - "picomatch": "^4.0.2" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cspell-grammar": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.19.4.tgz", - "integrity": "sha512-lzWgZYTu/L7DNOHjxuKf8H7DCXvraHMKxtFObf8bAzgT+aBmey5fW2LviXUkZ2Lb2R0qQY+TJ5VIGoEjNf55ow==", + "node_modules/babel-loader/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.19.4", - "@cspell/cspell-types": "8.19.4" - }, - "bin": { - "cspell-grammar": "bin.mjs" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cspell-io": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.19.4.tgz", - "integrity": "sha512-W48egJqZ2saEhPWf5ftyighvm4mztxEOi45ILsKgFikXcWFs0H0/hLwqVFeDurgELSzprr12b6dXsr67dV8amg==", + "node_modules/babel-loader/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-service-bus": "8.19.4", - "@cspell/url": "8.19.4" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cspell-lib": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.19.4.tgz", - "integrity": "sha512-NwfdCCYtIBNQuZcoMlMmL3HSv2olXNErMi/aOTI9BBAjvCHjhgX5hbHySMZ0NFNynnN+Mlbu5kooJ5asZeB3KA==", + "node_modules/babel-loader/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "dependencies": { - "@cspell/cspell-bundled-dicts": "8.19.4", - "@cspell/cspell-pipe": "8.19.4", - "@cspell/cspell-resolver": "8.19.4", - "@cspell/cspell-types": "8.19.4", - "@cspell/dynamic-import": "8.19.4", - "@cspell/filetypes": "8.19.4", - "@cspell/strong-weak-map": "8.19.4", - "@cspell/url": "8.19.4", - "clear-module": "^4.1.2", - "comment-json": "^4.2.5", - "cspell-config-lib": "8.19.4", - "cspell-dictionary": "8.19.4", - "cspell-glob": "8.19.4", - "cspell-grammar": "8.19.4", - "cspell-io": "8.19.4", - "cspell-trie-lib": "8.19.4", - "env-paths": "^3.0.0", - "fast-equals": "^5.2.2", - "gensequence": "^7.0.0", - "import-fresh": "^3.3.1", - "resolve-from": "^5.0.0", - "vscode-languageserver-textdocument": "^1.0.12", - "vscode-uri": "^3.1.0", - "xdg-basedir": "^5.1.0" - }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/cspell-lib/node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", + "semver": "^6.3.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/cspell-trie-lib": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.19.4.tgz", - "integrity": "sha512-yIPlmGSP3tT3j8Nmu+7CNpkPh/gBO2ovdnqNmZV+LNtQmVxqFd2fH7XvR1TKjQyctSH1ip0P5uIdJmzY1uhaYg==", + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", "dev": true, "license": "MIT", "dependencies": { - "@cspell/cspell-pipe": "8.19.4", - "@cspell/cspell-types": "8.19.4", - "gensequence": "^7.0.0" + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" }, - "engines": { - "node": ">=18" + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/cspell/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/cspell/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "dev": true, + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } } }, - "node_modules/css-loader": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", - "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", + "node_modules/bare-fs": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.2.tgz", + "integrity": "sha512-veTnRzkb6aPHOvSKIOy60KzURfBdUflr5VReI+NSaPL6xf+XLdONQgZgpYvUuZLVQ8dCqxpBAudaOM1+KpAUxw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4", + "bare-url": "^2.2.2", + "fast-fifo": "^1.3.2" }, "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "bare": ">=1.16.0" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" + "bare-buffer": "*" }, "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { + "bare-buffer": { "optional": true } } }, - "node_modules/css-loader/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/bare-os": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.2.tgz", + "integrity": "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "Apache-2.0", + "optional": true, "engines": { - "node": ">=10" + "bare": ">=1.14.0" } }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", "dev": true, - "license": "BSD-2-Clause", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "bare-os": "^3.0.1" } }, - "node_modules/css-tree": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", - "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "node_modules/bare-stream": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.7.0.tgz", + "integrity": "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "mdn-data": "2.27.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" + "streamx": "^2.21.0" }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" }, - "engines": { - "node": ">=4" + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/bare-url": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.3.2.tgz", + "integrity": "sha512-ZMq4gd9ngV5aTMa5p9+UfY0b3skwhHELaDkhEHetMdX0LRkW9kzaym4oo/Eh+Ghm0CCDuMTsRIGM/ytUc1ZYmw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" + "bare-path": "^3.0.0" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/baseline-browser-mapping": { + "version": "2.9.16", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.16.tgz", + "integrity": "sha512-KeUZdBuxngy825i8xvzaK1Ncnkx0tBmb3k8DkEuqjKRkmtvNTjey2ZsNeh8Dw4lfKvbCOu9oeNx2TKm2vHqcRw==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" } }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "node_modules/basic-ftp": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.1.0.tgz", + "integrity": "sha512-RkaJzeJKDbaDWTIPiJwubyljaEPwpVWkm9Rt5h9Nd6h7tEXTJ3VB4qxdZBioV7JO5yLUaOKwz7vDOzlncUsegw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=10.0.0" } }, - "node_modules/data-urls": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", - "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^16.0.0" - }, - "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" - } + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "license": "MIT" }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "require-from-string": "^2.0.2" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, + "optional": true, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/inspect-js" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "node_modules/bonjour-service": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "license": "MIT", "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "license": "MIT", "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" + "fill-range": "^7.1.1" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "peer": true, + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/decimal.js": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", - "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", - "dev": true, - "license": "MIT" - }, - "node_modules/decode-named-character-reference": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", - "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/dedent": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.0.tgz", - "integrity": "sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "license": "MIT", - "peerDependencies": { - "babel-plugin-macros": "^3.1.0" - }, - "peerDependenciesMeta": { - "babel-plugin-macros": { - "optional": true - } + "engines": { + "node": "*" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "devOptional": true, "license": "MIT" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "node_modules/builtin-modules": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-5.0.0.tgz", + "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "license": "MIT", "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" + "run-applescript": "^7.0.0" }, "engines": { "node": ">=18" @@ -10415,28 +5806,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "node_modules/bytestreamjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bytestreamjs/-/bytestreamjs-2.0.1.tgz", + "integrity": "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -10445,28 +5843,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.4" } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -10475,1047 +5872,1062 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, "engines": { - "node": ">= 14" + "node": ">=6" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.4.0" + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=6" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/detect-indent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", - "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", + "node_modules/caniuse-lite": { + "version": "1.0.30001766", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001766.tgz", + "integrity": "sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==", + "devOptional": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "node_modules/chalk-template": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.2.tgz", + "integrity": "sha512-2bxTP2yUH7AJj/VAXfcA+4IcWGdQ87HwBANLt5XxGTeomo8yG0y95N1um9i5StvhT/Bl0/2cARA5v1PpPXUxUA==", "dev": true, "license": "MIT", "dependencies": { - "dequal": "^2.0.0" + "chalk": "^5.2.0" + }, + "engines": { + "node": ">=14.16" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/devtools-protocol": { - "version": "0.0.1534754", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", - "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "MIT" }, - "node_modules/dezalgo": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", - "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", "dev": true, - "license": "ISC", - "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" + "node": ">= 14.16.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/dom-converter": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", - "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", - "dev": true, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "devOptional": true, "license": "MIT", - "dependencies": { - "utila": "~0.4" + "engines": { + "node": ">=6.0" } }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "node_modules/chromium-bidi": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-12.0.1.tgz", + "integrity": "sha512-fGg+6jr0xjQhzpy5N4ErZxQ4wF7KLEvhGZXD6EgvZKDhu7iOhZXnZhcDxPJDcwTcrD48NPzOCo84RP2lv3Z+Cg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" + "mitt": "^3.0.1", + "zod": "^3.24.1" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/ci-info": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", "dev": true, "funding": [ { "type": "github", - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "BSD-2-Clause" + "license": "MIT", + "engines": { + "node": ">=8" + } }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, "license": "MIT", "dependencies": { - "webidl-conversions": "^7.0.0" + "source-map": "~0.6.0" }, "engines": { - "node": ">=12" + "node": ">= 10.0" } }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "node_modules/clean-regexp/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.2.0" - }, + "license": "MIT", "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "node": ">=0.8.0" } }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "node_modules/clear-module": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/clear-module/-/clear-module-4.1.2.tgz", + "integrity": "sha512-LWAxzHqdHsAZlPlEyJ2Poz6AIs384mPeqLVCru2p0BrP9G/kVGuhNyZYClLO6cXlnuJjzC8xtsJIuMjKqLXoAw==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" + "parent-module": "^2.0.0", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "license": "MIT", "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "license": "MIT", "dependencies": { - "is-obj": "^2.0.0" + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotgitignore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", - "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "license": "ISC", "dependencies": { - "find-up": "^3.0.0", - "minimatch": "^3.0.4" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/dotgitignore/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/dotgitignore/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/dotgitignore/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/dotgitignore/node_modules/p-locate": { + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/dotgitignore/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, - "license": "MIT" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.283", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", - "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", - "devOptional": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } }, - "node_modules/emittery": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", - "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/emoji-regex": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", - "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true, "license": "MIT" }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, "engines": { "node": ">= 0.8" } }, - "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, "license": "MIT", - "dependencies": { - "once": "^1.4.0" + "engines": { + "node": ">= 6" } }, - "node_modules/enhanced-resolve": { - "version": "5.20.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", - "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", - "devOptional": true, + "node_modules/comment-json": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.5.tgz", + "integrity": "sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1", + "has-own-prop": "^2.0.0", + "repeat-string": "^1.6.1" }, "engines": { - "node": ">=10.13.0" + "node": ">= 6" } }, - "node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">= 12.0.0" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/envinfo": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", - "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", "dev": true, "license": "MIT", - "bin": { - "envinfo": "dist/cli.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "license": "MIT", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, + "node_modules/compression": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.1.0", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "optional": true, "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" + "ms": "2.0.0" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, + "engines": [ + "node >= 6.0" + ], "license": "MIT", "dependencies": { - "is-arrayish": "^0.2.1" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.10.0" } }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=0.8" } }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/es-module-lexer": { + "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", - "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", - "devOptional": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, "license": "MIT" }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" + "engines": { + "node": ">=18" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">= 0.6" } }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "node_modules/conventional-changelog": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", + "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "hasown": "^2.0.2" + "compare-func": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "q": "^1.5.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "devOptional": true, - "license": "MIT", + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "q": "^1.5.1" + }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true, "license": "MIT" }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=10" } }, - "node_modules/eslint": { - "version": "9.39.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", - "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", + "node_modules/conventional-changelog-core/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.1", - "@eslint/config-helpers": "^0.4.2", - "@eslint/core": "^0.17.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.1", - "@eslint/plugin-kit": "^0.4.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "bin": { - "eslint": "bin/eslint.js" + "conventional-commits-parser": "cli.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } + "node": ">=10" } }, - "node_modules/eslint-compat-utils": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", - "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", + "node_modules/conventional-changelog-core/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.4" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, + "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, - "peerDependencies": { - "eslint": ">=6.0.0" + "bin": { + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/eslint-compat-utils/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "lru-cache": "^6.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/eslint-config-prettier": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", - "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", + "node_modules/conventional-changelog-core/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "license": "MIT", - "peer": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "funding": { - "url": "https://opencollective.com/eslint-config-prettier" + "dependencies": { + "text-extensions": "^1.0.0" }, - "peerDependencies": { - "eslint": ">=7.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint-config-webpack": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/eslint-config-webpack/-/eslint-config-webpack-4.6.3.tgz", - "integrity": "sha512-nKUWDmJ1SYwibd/zI5ntk6alKQ26e5ly0d5EQpDDRWtBJuBqvCyJtvphBtS0m58EsLLkQgCrSaWJVU4yGjSneg==", + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "detect-indent": "^7.0.1", - "jsonc-eslint-parser": "^2.4.0", - "semver": "^7.7.2", - "sort-package-json": "^3.4.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 20.9.0" - }, - "peerDependencies": { - "@eslint/js": ">= 9.28.0", - "@eslint/markdown": ">= 7.1.0", - "@stylistic/eslint-plugin": ">= 4.4.1", - "eslint": ">= 9.28.0", - "eslint-config-prettier": "^10.1.8", - "eslint-plugin-import": ">= 2.31.0", - "eslint-plugin-jest": ">= 28.12.0", - "eslint-plugin-jsdoc": ">= 50.7.1", - "eslint-plugin-n": ">= 17.19.0", - "eslint-plugin-prettier": ">= 5.5.3", - "eslint-plugin-react": ">= 7.37.5", - "eslint-plugin-unicorn": ">= 60.0.0", - "globals": ">= 16.2.0", - "prettier": ">= 3.5.3", - "typescript": ">= 5.0.0", - "typescript-eslint": ">= 8.34.0" - }, - "peerDependenciesMeta": { - "@eslint/markdown": { - "optional": true - }, - "eslint-plugin-jest": { - "optional": true - }, - "eslint-plugin-jsdoc": { - "optional": true - }, - "eslint-plugin-n": { - "optional": true - }, - "eslint-plugin-react": { - "optional": true - }, - "typescript": { - "optional": true - }, - "typescript-eslint": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-config-webpack/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/conventional-changelog-core/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "yallist": "^4.0.0" }, "engines": { "node": ">=10" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/conventional-changelog-core/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/conventional-changelog-core/node_modules/meow/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/eslint-plugin-es-x": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", - "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "funding": [ - "https://github.com/sponsors/ota-meshi", - "https://opencollective.com/eslint" - ], - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.11.0", - "eslint-compat-utils": "^0.5.1" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": ">=8" + "node": ">=10" } }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-jest": { - "version": "29.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.2.1.tgz", - "integrity": "sha512-0WLIezrIxitUGbjMIGwznVzSIp0uFJV0PZ2fiSvpyVcxe+QMXKUt7MRhUpzdbctnnLwiOTOFkACplgB0wAglFw==", + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/utils": "^8.0.0" - }, "engines": { - "node": "^20.12.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "jest": "*" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } + "node": ">=8" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "51.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.4.1.tgz", - "integrity": "sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==", + "node_modules/conventional-changelog-core/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, - "license": "BSD-3-Clause", - "peer": true, + "license": "MIT", "dependencies": { - "@es-joy/jsdoccomment": "~0.52.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.4.1", - "escape-string-regexp": "^4.0.0", - "espree": "^10.4.0", - "esquery": "^1.6.0", - "parse-imports-exports": "^0.2.4", - "semver": "^7.7.2", - "spdx-expression-parse": "^4.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=20.11.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + "node": ">= 6" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "node_modules/conventional-changelog-core/node_modules/semver": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", @@ -11528,378 +6940,393 @@ "node": ">=10" } }, - "node_modules/eslint-plugin-n": { - "version": "17.23.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", - "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", + "node_modules/conventional-changelog-core/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", "dev": true, - "license": "MIT", - "peer": true, + "license": "ISC", "dependencies": { - "@eslint-community/eslint-utils": "^4.5.0", - "enhanced-resolve": "^5.17.1", - "eslint-plugin-es-x": "^7.8.0", - "get-tsconfig": "^4.8.1", - "globals": "^15.11.0", - "globrex": "^0.1.2", - "ignore": "^5.3.2", - "semver": "^7.6.3", - "ts-declaration-location": "^1.0.6" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": ">=8.23.0" + "readable-stream": "^3.0.0" } }, - "node_modules/eslint-plugin-n/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "node_modules/conventional-changelog-core/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=0.10" + } + }, + "node_modules/conventional-changelog-core/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/conventional-changelog-core/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-changelog-core/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, "engines": { "node": ">=10" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", - "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", "dev": true, - "license": "MIT", - "peer": true, + "license": "ISC", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.11.7" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/eslint-plugin-unicorn": { - "version": "61.0.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-61.0.2.tgz", - "integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==", + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "@eslint-community/eslint-utils": "^4.7.0", - "@eslint/plugin-kit": "^0.3.3", - "change-case": "^5.4.4", - "ci-info": "^4.3.0", - "clean-regexp": "^1.0.0", - "core-js-compat": "^3.44.0", - "esquery": "^1.6.0", - "find-up-simple": "^1.0.1", - "globals": "^16.3.0", - "indent-string": "^5.0.0", - "is-builtin-module": "^5.0.0", - "jsesc": "^3.1.0", - "pluralize": "^8.0.0", - "regexp-tree": "^0.1.27", - "regjsparser": "^0.12.0", - "semver": "^7.7.2", - "strip-indent": "^4.0.0" + "q": "^1.5.1" }, "engines": { - "node": "^20.10.0 || >=21.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" - }, - "peerDependencies": { - "eslint": ">=9.29.0" + "node": ">=10" } }, - "node_modules/eslint-plugin-unicorn/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "q": "^1.5.1" }, "engines": { "node": ">=10" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", + "dev": true, + "license": "ISC", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "q": "^1.5.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=10" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", + "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, "engines": { - "node": ">=4.0" + "node": ">=10" } }, - "node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { "node": ">=10" } }, - "node_modules/eslint/node_modules/@eslint/core": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", - "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.15" + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10" } }, - "node_modules/eslint/node_modules/@eslint/plugin-kit": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", - "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "node_modules/conventional-changelog-writer/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "@eslint/core": "^0.17.0", - "levn": "^0.4.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "lru-cache": "^6.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=10" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "p-locate": "^4.1.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=10" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/conventional-changelog-writer/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8" } }, - "node_modules/eslint/node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^4.0.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">=16.0.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "p-locate": "^5.0.0" - }, + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -11907,1046 +7334,1171 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/path-exists": { + "node_modules/conventional-changelog-writer/node_modules/yallist": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/conventional-changelog-writer/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "node_modules/conventional-changelog/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" + "compare-func": "^2.0.0", + "q": "^1.5.1" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=10" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "node_modules/conventional-changelog/node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=10" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "license": "MIT", + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "estraverse": "^5.1.0" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=0.10" + "node": ">=16" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "devOptional": true, - "license": "BSD-2-Clause", + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", + "dev": true, + "license": "MIT", "dependencies": { - "estraverse": "^5.2.0" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "devOptional": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node": ">=10" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/conventional-recommended-bump/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "node_modules/conventional-recommended-bump/node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "node_modules/conventional-recommended-bump/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "devOptional": true, + "node_modules/conventional-recommended-bump/node_modules/git-raw-commits": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", + "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "dev": true, "license": "MIT", + "dependencies": { + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.js" + }, "engines": { - "node": ">=0.8.x" + "node": ">=10" } }, - "node_modules/events-universal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", - "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "node_modules/conventional-recommended-bump/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { - "bare-events": "^2.7.0" + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/conventional-recommended-bump/node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "text-extensions": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/exit-x": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz", - "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==", + "node_modules/conventional-recommended-bump/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=8" } }, - "node_modules/expect": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", - "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", + "node_modules/conventional-recommended-bump/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/expect-utils": "30.4.1", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.4.1", - "jest-message-util": "30.4.1", - "jest-mock": "30.4.1", - "jest-util": "30.4.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/expect/node_modules/@jest/diff-sequences": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", - "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", + "node_modules/conventional-recommended-bump/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expect/node_modules/@jest/expect-utils": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", - "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", + "node_modules/conventional-recommended-bump/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@jest/get-type": "30.1.0" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/expect/node_modules/@jest/pattern": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", - "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", + "node_modules/conventional-recommended-bump/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.4.0" + "p-try": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expect/node_modules/@jest/schemas": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", - "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "node_modules/conventional-recommended-bump/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/expect/node_modules/@jest/types": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", - "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", + "node_modules/conventional-recommended-bump/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.4.0", - "@jest/schemas": "30.4.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/conventional-recommended-bump/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expect/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/conventional-recommended-bump/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/expect/node_modules/jest-diff": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", - "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@jest/diff-sequences": "30.4.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.4.1" - }, + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/conventional-recommended-bump/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/expect/node_modules/jest-matcher-utils": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", - "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", + "node_modules/conventional-recommended-bump/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.4.1", - "pretty-format": "30.4.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 6" } }, - "node_modules/expect/node_modules/jest-message-util": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", - "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", + "node_modules/conventional-recommended-bump/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.4.1", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-util": "30.4.1", - "picomatch": "^4.0.3", - "pretty-format": "30.4.1", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/expect/node_modules/jest-regex-util": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", - "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", + "node_modules/conventional-recommended-bump/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/conventional-recommended-bump/node_modules/text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10" } }, - "node_modules/expect/node_modules/jest-util": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", - "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", + "node_modules/conventional-recommended-bump/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-recommended-bump/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/conventional-recommended-bump/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/expect/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", "license": "MIT", - "dependencies": { - "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", - "cookie": "^0.7.1", - "cookie-signature": "^1.2.1", - "debug": "^4.4.0", - "depd": "^2.0.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "etag": "^1.8.1", - "finalhandler": "^2.1.0", - "fresh": "^2.0.0", - "http-errors": "^2.0.0", - "merge-descriptors": "^2.0.0", - "mime-types": "^3.0.0", - "on-finished": "^2.4.1", - "once": "^1.4.0", - "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", - "range-parser": "^1.2.1", - "router": "^2.2.0", - "send": "^1.1.0", - "serve-static": "^2.2.0", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, "engines": { - "node": ">= 18" + "node": ">=6.6.0" + } + }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-what": "^3.14.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/express/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "node_modules/core-js": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.47.0.tgz", + "integrity": "sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==", + "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" - }, - "engines": { - "node": ">= 0.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", - "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "node_modules/core-js-compat": { + "version": "3.45.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.45.1.tgz", + "integrity": "sha512-tqTt5T4PzsMIZ430XGviK4vzYSoeNJ6CXODi6c/voxOT6IZqBht5/EKaSNnYiEjjRYxjVz7DQIsOsY0XNi8PIA==", + "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.4.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1" - }, - "engines": { - "node": ">= 18.0.0" + "browserslist": "^4.25.3" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://opencollective.com/core-js" } }, - "node_modules/express/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "mime-db": "^1.54.0" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": ">=18" + "node": ">=14" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/express/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "dev": true, "license": "MIT", + "dependencies": { + "jiti": "^2.4.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" } }, - "node_modules/extract-zip": { + "node_modules/cosmiconfig/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "Python-2.0" + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "argparse": "^2.0.1" }, "bin": { - "extract-zip": "cli.js" + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "node": ">= 8" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/cspell": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.19.4.tgz", + "integrity": "sha512-toaLrLj3usWY0Bvdi661zMmpKW2DVLAG3tcwkAv4JBTisdIRn15kN/qZDrhSieUEhVgJgZJDH4UKRiq29mIFxA==", "dev": true, "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "@cspell/cspell-json-reporter": "8.19.4", + "@cspell/cspell-pipe": "8.19.4", + "@cspell/cspell-types": "8.19.4", + "@cspell/dynamic-import": "8.19.4", + "@cspell/url": "8.19.4", + "chalk": "^5.4.1", + "chalk-template": "^1.1.0", + "commander": "^13.1.0", + "cspell-dictionary": "8.19.4", + "cspell-gitignore": "8.19.4", + "cspell-glob": "8.19.4", + "cspell-io": "8.19.4", + "cspell-lib": "8.19.4", + "fast-json-stable-stringify": "^2.1.0", + "file-entry-cache": "^9.1.0", + "semver": "^7.7.1", + "tinyglobby": "^0.2.13" + }, + "bin": { + "cspell": "bin.mjs", + "cspell-esm": "bin.mjs" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/streetsidesoftware/cspell?sponsor=1" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-equals": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", - "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "node_modules/cspell-config-lib": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.19.4.tgz", + "integrity": "sha512-LtFNZEWVrnpjiTNgEDsVN05UqhhJ1iA0HnTv4jsascPehlaUYVoyucgNbFeRs6UMaClJnqR0qT9lnPX+KO1OLg==", "dev": true, "license": "MIT", + "dependencies": { + "@cspell/cspell-types": "8.19.4", + "comment-json": "^4.2.5", + "yaml": "^2.7.1" + }, "engines": { - "node": ">=6.0.0" + "node": ">=18" } }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/cspell-dictionary": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.19.4.tgz", + "integrity": "sha512-lr8uIm7Wub8ToRXO9f6f7in429P1Egm3I+Ps3ZGfWpwLTCUBnHvJdNF/kQqF7PL0Lw6acXcjVWFYT7l2Wdst2g==", "dev": true, "license": "MIT", + "dependencies": { + "@cspell/cspell-pipe": "8.19.4", + "@cspell/cspell-types": "8.19.4", + "cspell-trie-lib": "8.19.4", + "fast-equals": "^5.2.2" + }, "engines": { - "node": ">= 4.9.1" + "node": ">=18" } }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "node_modules/cspell-gitignore": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.19.4.tgz", + "integrity": "sha512-KrViypPilNUHWZkMV0SM8P9EQVIyH8HvUqFscI7+cyzWnlglvzqDdV4N5f+Ax5mK+IqR6rTEX8JZbCwIWWV7og==", "dev": true, "license": "MIT", "dependencies": { - "format": "^0.2.0" + "@cspell/url": "8.19.4", + "cspell-glob": "8.19.4", + "cspell-io": "8.19.4" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "bin": { + "cspell-gitignore": "bin.mjs" + }, + "engines": { + "node": ">=18" } }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "node_modules/cspell-glob": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.19.4.tgz", + "integrity": "sha512-042uDU+RjAz882w+DXKuYxI2rrgVPfRQDYvIQvUrY1hexH4sHbne78+OMlFjjzOCEAgyjnm1ktWUCCmh08pQUw==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "bser": "2.1.1" + "@cspell/url": "8.19.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=18" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/cspell-grammar": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.19.4.tgz", + "integrity": "sha512-lzWgZYTu/L7DNOHjxuKf8H7DCXvraHMKxtFObf8bAzgT+aBmey5fW2LviXUkZ2Lb2R0qQY+TJ5VIGoEjNf55ow==", "dev": true, "license": "MIT", "dependencies": { - "pend": "~1.2.0" + "@cspell/cspell-pipe": "8.19.4", + "@cspell/cspell-types": "8.19.4" + }, + "bin": { + "cspell-grammar": "bin.mjs" + }, + "engines": { + "node": ">=18" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "node_modules/cspell-io": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.19.4.tgz", + "integrity": "sha512-W48egJqZ2saEhPWf5ftyighvm4mztxEOi45ILsKgFikXcWFs0H0/hLwqVFeDurgELSzprr12b6dXsr67dV8amg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" + "dependencies": { + "@cspell/cspell-service-bus": "8.19.4", + "@cspell/url": "8.19.4" }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } + "engines": { + "node": ">=18" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/cspell-lib": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.19.4.tgz", + "integrity": "sha512-NwfdCCYtIBNQuZcoMlMmL3HSv2olXNErMi/aOTI9BBAjvCHjhgX5hbHySMZ0NFNynnN+Mlbu5kooJ5asZeB3KA==", "dev": true, "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" + "@cspell/cspell-bundled-dicts": "8.19.4", + "@cspell/cspell-pipe": "8.19.4", + "@cspell/cspell-resolver": "8.19.4", + "@cspell/cspell-types": "8.19.4", + "@cspell/dynamic-import": "8.19.4", + "@cspell/filetypes": "8.19.4", + "@cspell/strong-weak-map": "8.19.4", + "@cspell/url": "8.19.4", + "clear-module": "^4.1.2", + "comment-json": "^4.2.5", + "cspell-config-lib": "8.19.4", + "cspell-dictionary": "8.19.4", + "cspell-glob": "8.19.4", + "cspell-grammar": "8.19.4", + "cspell-io": "8.19.4", + "cspell-trie-lib": "8.19.4", + "env-paths": "^3.0.0", + "fast-equals": "^5.2.2", + "gensequence": "^7.0.0", + "import-fresh": "^3.3.1", + "resolve-from": "^5.0.0", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-uri": "^3.1.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/cspell-lib/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", - "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", + "node_modules/cspell-trie-lib": { + "version": "8.19.4", + "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.19.4.tgz", + "integrity": "sha512-yIPlmGSP3tT3j8Nmu+7CNpkPh/gBO2ovdnqNmZV+LNtQmVxqFd2fH7XvR1TKjQyctSH1ip0P5uIdJmzY1uhaYg==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^5.0.0" + "@cspell/cspell-pipe": "8.19.4", + "@cspell/cspell-types": "8.19.4", + "gensequence": "^7.0.0" }, "engines": { "node": ">=18" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/cspell/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/cspell/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/css-loader": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-7.1.2.tgz", + "integrity": "sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==", "dev": true, "license": "MIT", "dependencies": { - "ms": "2.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.1.0", + "postcss-modules-local-by-default": "^4.0.5", + "postcss-modules-scope": "^3.2.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.27.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/finalhandler/node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/css-loader/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">= 0.8" + "node": ">=10" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/css-tree": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "dev": true, "license": "MIT", "dependencies": { - "ee-first": "1.1.1" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": ">= 0.8" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/css-what": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", + "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.6" + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/find-up-simple": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", - "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "license": "MIT", + "engines": { + "node": ">= 14" } }, - "node_modules/flat-cache": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", - "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", + "node_modules/data-urls": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", "dev": true, "license": "MIT", "dependencies": { - "flatted": "^3.3.1", - "keyv": "^4.5.4" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" }, "engines": { - "node": ">=18" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { - "is-callable": "^1.2.7" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" + "ms": "^2.1.3" }, "engines": { - "node": ">= 6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.4.x" + "node": ">=0.10.0" } }, - "node_modules/formidable": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", - "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", + "node_modules/decamelize-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, "license": "MIT", "dependencies": { - "@paralleldrive/cuid2": "^2.2.2", - "dezalgo": "^1.0.4", - "once": "^1.4.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=0.10.0" }, "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", - "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/fs-readdir-recursive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", - "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", "dev": true, "license": "MIT" }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "node_modules/decode-named-character-reference": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", "license": "MIT", + "engines": { + "node": ">=18" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -12955,2109 +8507,2260 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gensequence": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz", - "integrity": "sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==", + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, "license": "MIT", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, "engines": { - "node": ">=18" + "node": ">= 14" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=6.9.0" + "node": ">=0.4.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.8" } }, - "node_modules/get-east-asian-width": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", - "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/detect-indent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", + "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12.20" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", "dev": true, "license": "MIT", "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" + "dequal": "^2.0.0" }, - "engines": { - "node": ">=6.9.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/get-pkg-repo/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/devtools-protocol": { + "version": "0.0.1534754", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", + "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "license": "MIT", + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "esutils": "^2.0.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/get-pkg-repo/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "utila": "~0.4" } }, - "node_modules/get-pkg-repo/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/get-pkg-repo/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "MIT" + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } }, - "node_modules/get-pkg-repo/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "MIT" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" }, - "node_modules/get-pkg-repo/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "lru-cache": "^6.0.0" + "domelementtype": "^2.2.0" }, "engines": { - "node": ">=10" - } - }, - "node_modules/get-pkg-repo/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/get-pkg-repo/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/get-pkg-repo/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "ISC", + "license": "BSD-2-Clause", "dependencies": { - "yallist": "^4.0.0" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/get-pkg-repo/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dev": true, "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/get-pkg-repo/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true, - "license": "MIT" - }, - "node_modules/get-pkg-repo/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/get-pkg-repo/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "find-up": "^3.0.0", + "minimatch": "^3.0.4" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-pkg-repo/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "p-limit": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/get-pkg-repo/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/dotgitignore/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "license": "ISC", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/get-proto": { + "node_modules/dunder-proto": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "license": "MIT" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.283", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.283.tgz", + "integrity": "sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==", + "devOptional": true, + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.5.0.tgz", + "integrity": "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "license": "MIT" }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/get-tsconfig": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", - "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "node_modules/end-of-stream": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", + "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", "dev": true, "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "once": "^1.4.0" } }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", - "dev": true, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "devOptional": true, "license": "MIT", "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/git-hooks-list": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.1.1.tgz", - "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/fisker/git-hooks-list?sponsor=1" + "node": ">=10.13.0" } }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "license": "MIT", - "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.mjs" - }, "engines": { - "node": ">=16" + "node": ">=6" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "node_modules/envinfo": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.14.0.tgz", + "integrity": "sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==", "dev": true, "license": "MIT", - "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "bin": { + "envinfo": "dist/cli.js" }, "engines": { "node": ">=4" } }, - "node_modules/git-remote-origin-url/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" + "prr": "~1.0.1" }, "bin": { - "git-semver-tags": "cli.js" - }, - "engines": { - "node": ">=10" + "errno": "cli.js" } }, - "node_modules/git-semver-tags/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "is-arrayish": "^0.2.1" } }, - "node_modules/git-semver-tags/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "lru-cache": "^6.0.0" + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/git-semver-tags/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, + "node_modules/es-module-lexer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/normalize-package-data/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/git-semver-tags/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/git-semver-tags/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "devOptional": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/git-semver-tags/node_modules/path-exists": { + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-semver-tags/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/git-semver-tags/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/eslint": { + "version": "9.39.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz", + "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.39.1", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/eslint-compat-utils": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.5.1.tgz", + "integrity": "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { - "semver": "bin/semver" - } - }, - "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "license": "(MIT OR CC0-1.0)", + "semver": "bin/semver.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/git-semver-tags/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/eslint-config-prettier": { + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "license": "MIT", + "peer": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint-config-prettier" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/git-semver-tags/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/eslint-config-webpack": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/eslint-config-webpack/-/eslint-config-webpack-4.6.3.tgz", + "integrity": "sha512-nKUWDmJ1SYwibd/zI5ntk6alKQ26e5ly0d5EQpDDRWtBJuBqvCyJtvphBtS0m58EsLLkQgCrSaWJVU4yGjSneg==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "detect-indent": "^7.0.1", + "jsonc-eslint-parser": "^2.4.0", + "semver": "^7.7.2", + "sort-package-json": "^3.4.0" + }, + "engines": { + "node": ">= 20.9.0" + }, + "peerDependencies": { + "@eslint/js": ">= 9.28.0", + "@eslint/markdown": ">= 7.1.0", + "@stylistic/eslint-plugin": ">= 4.4.1", + "eslint": ">= 9.28.0", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-import": ">= 2.31.0", + "eslint-plugin-jest": ">= 28.12.0", + "eslint-plugin-jsdoc": ">= 50.7.1", + "eslint-plugin-n": ">= 17.19.0", + "eslint-plugin-prettier": ">= 5.5.3", + "eslint-plugin-react": ">= 7.37.5", + "eslint-plugin-unicorn": ">= 60.0.0", + "globals": ">= 16.2.0", + "prettier": ">= 3.5.3", + "typescript": ">= 5.0.0", + "typescript-eslint": ">= 8.34.0" + }, + "peerDependenciesMeta": { + "@eslint/markdown": { + "optional": true + }, + "eslint-plugin-jest": { + "optional": true + }, + "eslint-plugin-jsdoc": { + "optional": true + }, + "eslint-plugin-n": { + "optional": true + }, + "eslint-plugin-react": { + "optional": true + }, + "typescript": { + "optional": true + }, + "typescript-eslint": { + "optional": true + } + } }, - "node_modules/git-semver-tags/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/eslint-config-webpack/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "license": "BSD", + "license": "MIT", "dependencies": { - "ini": "^1.3.2" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/gitconfiglocal/node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true, - "license": "ISC" - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "debug": "^3.2.7" }, "engines": { - "node": "*" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-es-x": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.8.0.tgz", + "integrity": "sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/ota-meshi", + "https://opencollective.com/eslint" + ], + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.11.0", + "eslint-compat-utils": "^0.5.1" }, "engines": { - "node": ">=10.13.0" + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": ">=8" } }, - "node_modules/glob-to-regex.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz", - "integrity": "sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=4" }, "peerDependencies": { - "tslib": "2" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "devOptional": true, - "license": "BSD-2-Clause" - }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { - "ini": "4.1.1" + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "51.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.4.1.tgz", + "integrity": "sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@es-joy/jsdoccomment": "~0.52.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.1", + "escape-string-regexp": "^4.0.0", + "espree": "^10.4.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.11.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/globals": { - "version": "16.4.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", - "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=10" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/eslint-plugin-n": { + "version": "17.23.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-17.23.1.tgz", + "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "@eslint-community/eslint-utils": "^4.5.0", + "enhanced-resolve": "^5.17.1", + "eslint-plugin-es-x": "^7.8.0", + "get-tsconfig": "^4.8.1", + "globals": "^15.11.0", + "globrex": "^0.1.2", + "ignore": "^5.3.2", + "semver": "^7.6.3", + "ts-declaration-location": "^1.0.6" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": ">=8.23.0" } }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "node_modules/eslint-plugin-n/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, - "license": "MIT" - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "node_modules/eslint-plugin-n/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, + "license": "ISC", "bin": { - "handlebars": "bin/handlebars" + "semver": "bin/semver.js" }, "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "node": ">=10" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/eslint-plugin-prettier": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz", + "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.11.7" + }, "engines": { - "node": ">=6" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "node_modules/eslint-plugin-unicorn": { + "version": "61.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-61.0.2.tgz", + "integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "@eslint-community/eslint-utils": "^4.7.0", + "@eslint/plugin-kit": "^0.3.3", + "change-case": "^5.4.4", + "ci-info": "^4.3.0", + "clean-regexp": "^1.0.0", + "core-js-compat": "^3.44.0", + "esquery": "^1.6.0", + "find-up-simple": "^1.0.1", + "globals": "^16.3.0", + "indent-string": "^5.0.0", + "is-builtin-module": "^5.0.0", + "jsesc": "^3.1.0", + "pluralize": "^8.0.0", + "regexp-tree": "^0.1.27", + "regjsparser": "^0.12.0", + "semver": "^7.7.2", + "strip-indent": "^4.0.0" + }, "engines": { - "node": ">= 0.4" + "node": "^20.10.0 || >=21.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=8" + "url": "https://github.com/sindresorhus/eslint-plugin-unicorn?sponsor=1" + }, + "peerDependencies": { + "eslint": ">=9.29.0" } }, - "node_modules/has-own-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", - "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", + "node_modules/eslint-plugin-unicorn/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "devOptional": true, + "license": "BSD-2-Clause", "dependencies": { - "es-define-property": "^1.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.0.0" } }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "devOptional": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4.0" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/eslint/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "has-symbols": "^1.0.3" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", + "node_modules/eslint/node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "function-bind": "^1.1.2" + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" }, "engines": { - "node": ">= 0.4" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", - "bin": { - "he": "bin/he" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/hono": { - "version": "4.12.9", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", - "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=16.9.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, - "node_modules/html-encoding-sniffer": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", - "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "license": "MIT", "dependencies": { - "@exodus/bytes": "^1.6.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/html-minifier-terser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", - "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "camel-case": "^4.1.2", - "clean-css": "^5.2.2", - "commander": "^8.3.0", - "he": "^1.2.0", - "param-case": "^3.0.4", - "relateurl": "^0.2.7", - "terser": "^5.10.0" - }, - "bin": { - "html-minifier-terser": "cli.js" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/html-minifier-terser/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12" - } + "license": "MIT" }, - "node_modules/html-webpack-plugin": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", - "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "@types/html-minifier-terser": "^6.0.0", - "html-minifier-terser": "^6.0.2", - "lodash": "^4.17.21", - "pretty-error": "^4.0.0", - "tapable": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10.13.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/html-webpack-plugin" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.20.0" + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "node_modules/eslint/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], "license": "MIT", "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "node_modules/eslint/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.4" }, "engines": { - "node": ">=8.0.0" + "node": ">=16" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-middleware": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", - "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" + "p-limit": "^3.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/http-proxy-middleware/node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/eslint/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "agent-base": "6", - "debug": "4" + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" }, "engines": { - "node": ">= 6" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10.17.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", - "license": "MIT", "engines": { - "node": ">=10.18" + "node": ">=4" } }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", - "license": "MIT", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=0.10" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^10 || ^12 || >= 14" + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "devOptional": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "engines": { + "node": ">=4.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "devOptional": true, + "license": "BSD-2-Clause", "engines": { - "node": ">= 4" + "node": ">=4.0" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/import-fresh/node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "dev": true, "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, "engines": { "node": ">=6" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=0.8.x" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", "dev": true, - "license": "MIT", - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" } }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/expect": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.4.1.tgz", + "integrity": "sha512-PMARsyh/JtqC20HoGqlFcIlQAyqUtW4PlI1rup1uhYJtKuwAjbvWi3GQMAn+STdHum/dk8xrKfUM1+5SAwpolA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.4.1", + "@jest/get-type": "30.1.0", + "jest-matcher-utils": "30.4.1", + "jest-message-util": "30.4.1", + "jest-mock": "30.4.1", + "jest-util": "30.4.1" + }, "engines": { - "node": ">=0.8.19" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "node_modules/expect/node_modules/@jest/diff-sequences": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.4.0.tgz", + "integrity": "sha512-zOpzlfUs45l6u7jm39qr87JCHUDsaeCtvL+kQe/Vn9jSnRB4/5IPXISm0h9I1vZW/o00Kn4UTJ2MOlhnUGwv3g==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/expect/node_modules/@jest/expect-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.4.1.tgz", + "integrity": "sha512-ZBn5CglH8fBsQsvs4VWNzD4aWfUYks+IdOOQU3MEK71ol/BcVm+P+rtb1KpiFBpSWSCE27uOahyyf1vfqOVbcQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "license": "ISC", + "@jest/get-type": "30.1.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "node_modules/expect/node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "dev": true, "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "@types/node": "*", + "jest-regex-util": "30.4.0" }, "engines": { - "node": ">= 0.4" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "node_modules/expect/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, "engines": { - "node": ">=10.13.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "node_modules/expect/node_modules/@jest/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, "engines": { - "node": ">= 12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/ip-regex": { + "node_modules/expect/node_modules/ansi-styles": { "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "node_modules/expect/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "node_modules/expect/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "node_modules/expect/node_modules/jest-diff": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.4.1.tgz", + "integrity": "sha512-CRpFK0RtLriVDGcPPAnR6HMVI8bSR2jnUIgralhauzYQZIb4RH9AtEInTuQr65LmmGggGcRT6HIASxwqsVsmlA==", "dev": true, "license": "MIT", "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "@jest/diff-sequences": "30.4.0", + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "node_modules/expect/node_modules/jest-matcher-utils": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.4.1.tgz", + "integrity": "sha512-zvYfX5CaeEkFrrLS9suWe9rvJrm9J1Iv3ua8kIBv9GEPzcnsfBf0bob37la7s67fs0nlBC3EuvkOLnXQKxtx4A==", "dev": true, "license": "MIT", "dependencies": { - "has-bigints": "^1.0.2" + "@jest/get-type": "30.1.0", + "chalk": "^4.1.2", + "jest-diff": "30.4.1", + "pretty-format": "30.4.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/expect/node_modules/jest-message-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.4.1.tgz", + "integrity": "sha512-kwCKIvq0MCW1HzLoGola9Te6JUdzgV0loyKJ3Qghrkz9i5/RRIHsL95BMQc2HBBhlBKC4j22K9p11TGHH8RBpQ==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "binary-extensions": "^2.0.0" + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.4.1", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "jest-util": "30.4.1", + "picomatch": "^4.0.3", + "pretty-format": "30.4.1", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { - "node": ">=8" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + }, + "node_modules/expect/node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-builtin-module": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", - "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", + "node_modules/expect/node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", "dependencies": { - "builtin-modules": "^5.0.0" + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=18.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/expect/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "dev": true, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" }, "engines": { - "node": ">= 0.4" + "node": ">= 18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, + "node_modules/express/node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, + "node_modules/express/node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">= 18.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/express/node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", "license": "MIT", - "bin": { - "is-docker": "cli.js" + "dependencies": { + "mime-db": "^1.54.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/express/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "call-bound": "^1.0.3" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">= 0.4" + "node": ">= 10.17.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-equals": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz", + "integrity": "sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 4.9.1" } }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "node_modules/fault": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", + "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" + "format": "^0.2.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "pend": "~1.2.0" } }, - "node_modules/is-in-ssh": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", - "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", "engines": { - "node": ">=20" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, "license": "MIT", "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=14.16" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.8.0" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/file-entry-cache": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-9.1.0.tgz", + "integrity": "sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-network-error": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", - "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", - "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "flat-cache": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=18" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "license": "MIT" - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "ms": "2.0.0" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/finalhandler/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "ee-first": "1.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/finalhandler/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + }, + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "node_modules/find-up-simple": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.1.tgz", + "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "MIT", - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" } }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "node_modules/flat-cache": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-5.0.0.tgz", + "integrity": "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==", "dev": true, "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.16" + "flatted": "^3.3.1", + "keyv": "^4.5.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=18" } }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=4.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3" + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -15066,289 +10769,264 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT" - }, - "node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, + "license": "ISC", "engines": { - "node": ">=16" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is2": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", - "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "node_modules/form-data": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { - "deep-is": "^0.1.3", - "ip-regex": "^4.1.0", - "is-url": "^1.2.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=v0.10.0" + "node": ">= 6" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "node_modules/format": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", + "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", "dev": true, - "license": "ISC" + "engines": { + "node": ">=0.4.x" + } }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/formidable": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-3.5.4.tgz", + "integrity": "sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==", "dev": true, "license": "MIT", + "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", + "dezalgo": "^1.0.4", + "once": "^1.4.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT" + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/gensequence": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-7.0.0.tgz", + "integrity": "sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6.9.0" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, + "license": "ISC", "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" + "license": "MIT", + "engines": { + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz", - "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", - "peer": true, "dependencies": { - "@jest/core": "30.2.0", - "@jest/types": "30.2.0", - "import-local": "^3.2.0", - "jest-cli": "30.2.0" - }, - "bin": { - "jest": "bin/jest.js" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz", - "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.1.1", - "jest-util": "30.2.0", - "p-limit": "^3.1.0" + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=6.9.0" } }, - "node_modules/jest-circus": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz", - "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==", + "node_modules/get-pkg-repo/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/expect": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "co": "^4.6.0", - "dedent": "^1.6.0", - "is-generator-fn": "^2.1.0", - "jest-each": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-runtime": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "p-limit": "^3.1.0", - "pretty-format": "30.2.0", - "pure-rand": "^7.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/ansi-styles": { + "node_modules/get-pkg-repo/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -15364,24 +11042,19 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-pkg-repo/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/jest-circus/node_modules/color-convert": { + "node_modules/get-pkg-repo/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -15394,2166 +11067,2038 @@ "node": ">=7.0.0" } }, - "node_modules/jest-circus/node_modules/color-name": { + "node_modules/get-pkg-repo/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/jest-circus/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/get-pkg-repo/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "MIT" }, - "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/get-pkg-repo/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-circus/node_modules/slash": { + "node_modules/get-pkg-repo/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-cli": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz", - "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==", + "node_modules/get-pkg-repo/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/core": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "exit-x": "^0.2.2", - "import-local": "^3.2.0", - "jest-config": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "yargs": "^17.7.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/jest-cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/get-pkg-repo/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-pkg-repo/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/jest-cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/get-pkg-repo/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "license": "MIT" + }, + "node_modules/get-pkg-repo/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/jest-cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz", - "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==", + "node_modules/get-pkg-repo/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/get-type": "30.1.0", - "@jest/pattern": "30.0.1", - "@jest/test-sequencer": "30.2.0", - "@jest/types": "30.2.0", - "babel-jest": "30.2.0", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "deepmerge": "^4.3.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-circus": "30.2.0", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-runner": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "micromatch": "^4.0.8", - "parse-json": "^5.2.0", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "esbuild-register": ">=3.4.0", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "esbuild-register": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/get-pkg-repo/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-config/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-pkg-repo/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/get-pkg-repo/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "node_modules/get-pkg-repo/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">= 0.4" } }, - "node_modules/jest-config/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/jest-config/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/get-uri": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", + "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", "dev": true, "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/jest-diff": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz", - "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==", + "node_modules/git-hooks-list": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-4.1.1.tgz", + "integrity": "sha512-cmP497iLq54AZnv4YRAEMnEyQ1eIn4tGKbmswqwmFV4GBnAqE8NLtWxxdXa++AalfgL5EBH4IxTPyquEuGY/jA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/diff-sequences": "30.0.1", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://github.com/fisker/git-hooks-list?sponsor=1" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" }, - "engines": { - "node": ">=8" + "bin": { + "git-raw-commits": "cli.mjs" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=16" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/git-remote-origin-url/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-diff/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "meow": "^8.0.0", + "semver": "^6.0.0" + }, + "bin": { + "git-semver-tags": "cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-diff/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/git-semver-tags/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/jest-docblock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz", - "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==", + "node_modules/git-semver-tags/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "detect-newline": "^3.1.0" + "lru-cache": "^6.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-each": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz", - "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==", + "node_modules/git-semver-tags/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "chalk": "^4.1.2", - "jest-util": "30.2.0", - "pretty-format": "30.2.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/git-semver-tags/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "color-convert": "^2.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=10" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/git-semver-tags/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/git-semver-tags/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "MIT", + "license": "BSD-2-Clause", "dependencies": { - "color-name": "~1.1.4" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-each/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/git-semver-tags/node_modules/normalize-package-data/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/git-semver-tags/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "node_modules/git-semver-tags/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/environment": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "node_modules/git-semver-tags/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "node_modules/git-semver-tags/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/git-semver-tags/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/git-semver-tags/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/jest-environment-jsdom/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-3-Clause", + "license": "BSD-2-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/jest-environment-jsdom/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/git-semver-tags/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-environment-jsdom/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/git-semver-tags/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/git-semver-tags/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "license": "ISC" + }, + "node_modules/git-semver-tags/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-environment-jsdom/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", "dev": true, - "license": "MIT", + "license": "BSD", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "ini": "^1.3.2" } }, - "node_modules/jest-environment-jsdom/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/gitconfiglocal/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/jest-environment-jsdom/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", "dev": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-environment-jsdom/node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "whatwg-encoding": "^2.0.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=12" + "node": ">=10.13.0" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, + "node_modules/glob-to-regex.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/glob-to-regex.js/-/glob-to-regex.js-1.0.1.tgz", + "integrity": "sha512-CG/iEvgQqfzoVsMUbxSJcwbG2JwyZ3naEqPkeltwl0BSS8Bp83k3xlGms+0QdWFUAwV+uvo80wNswKF6FWEkKg==", + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "devOptional": true, + "license": "BSD-2-Clause" + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "ini": "4.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/globals": { + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "peer": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", "dev": true, + "license": "MIT" + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/jest-environment-jsdom/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "devOptional": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "node_modules/has-own-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-own-prop/-/has-own-prop-2.0.0.tgz", + "integrity": "sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/jest-environment-jsdom/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { - "punycode": "^2.1.1" + "es-define-property": "^1.0.0" }, - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { - "xml-name-validator": "^4.0.0" + "dunder-proto": "^1.0.0" }, "engines": { - "node": ">=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", - "dev": true, - "license": "BSD-2-Clause", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/jest-environment-jsdom/node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12" + "license": "MIT", + "bin": { + "he": "bin/he" } }, - "node_modules/jest-environment-node": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz", - "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==", + "node_modules/hono": { + "version": "4.12.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", + "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-mock": "30.2.0", - "jest-util": "30.2.0", - "jest-validate": "30.2.0" - }, + "peer": true, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=16.9.0" } }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "license": "ISC" }, - "node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/html-encoding-sniffer": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-6.0.0.tgz", + "integrity": "sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "@exodus/bytes": "^1.6.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, - "node_modules/jest-leak-detector": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz", - "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==", + "node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "pretty-format": "30.2.0" + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12" } }, - "node_modules/jest-leak-detector/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 12" } }, - "node_modules/jest-leak-detector/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/html-webpack-plugin": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.5.tgz", + "integrity": "sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/jest-matcher-utils": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz", - "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==", + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.2.0", - "pretty-format": "30.2.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/http-proxy-middleware": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.5.tgz", + "integrity": "sha512-GLZZm1X38BPY4lkXA01jhwxvDoOkkXqjgVyUzVxiEK4iuRu03PZoYHhHRwxnfhQMDuaxi3vVri0YgSro/1oWqg==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=7.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" + "node_modules/http-proxy-middleware/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.17.0" } }, - "node_modules/jest-matcher-utils/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, "license": "MIT", + "bin": { + "husky": "bin.js" + }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/jest-message-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz", - "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==", - "dev": true, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.2.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "micromatch": "^4.0.8", - "pretty-format": "30.2.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.18" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/jest-message-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 4" } }, - "node_modules/jest-message-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/import-fresh/node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-mock": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", - "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "jest-util": "30.4.1" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=4" } }, - "node_modules/jest-mock/node_modules/@jest/pattern": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", - "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.4.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-mock/node_modules/@jest/schemas": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", - "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", + "node_modules/import-meta-resolve": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", + "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.34.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", - "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/pattern": "30.4.0", - "@jest/schemas": "30.4.1", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-mock/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-mock/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/jest-mock/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-mock/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-mock/node_modules/jest-regex-util": { - "version": "30.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", - "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10.13.0" } }, - "node_modules/jest-mock/node_modules/jest-util": { - "version": "30.4.1", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", - "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.4.1", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 12" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", - "dev": true, + "node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", "license": "MIT", "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": ">= 10" } }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz", - "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-pnp-resolver": "^1.2.3", - "jest-util": "30.2.0", - "jest-validate": "30.2.0", - "slash": "^3.0.0", - "unrs-resolver": "^1.7.11" + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve-dependencies": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz", - "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==", + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { - "jest-regex-util": "30.0.1", - "jest-snapshot": "30.2.0" + "has-bigints": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", + "optional": true, "dependencies": { - "color-convert": "^2.0.1" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-builtin-module": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-5.0.0.tgz", + "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "builtin-modules": "^5.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz", - "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==", + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "30.2.0", - "@jest/environment": "30.2.0", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "exit-x": "^0.2.2", - "graceful-fs": "^4.2.11", - "jest-docblock": "30.2.0", - "jest-environment-node": "30.2.0", - "jest-haste-map": "30.2.0", - "jest-leak-detector": "30.2.0", - "jest-message-util": "30.2.0", - "jest-resolve": "30.2.0", - "jest-runtime": "30.2.0", - "jest-util": "30.2.0", - "jest-watcher": "30.2.0", - "jest-worker": "30.2.0", - "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "hasown": "^2.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runner/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=7.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-runtime": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz", - "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==", - "dev": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "license": "MIT", - "dependencies": { - "@jest/environment": "30.2.0", - "@jest/fake-timers": "30.2.0", - "@jest/globals": "30.2.0", - "@jest/source-map": "30.0.1", - "@jest/test-result": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "cjs-module-lexer": "^2.1.0", - "collect-v8-coverage": "^1.0.2", - "glob": "^10.3.10", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-resolve": "30.2.0", - "jest-snapshot": "30.2.0", - "jest-util": "30.2.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/jest-runtime/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "is-docker": "^3.0.0" }, "bin": { - "glob": "dist/esm/bin.mjs" + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, + "node_modules/is-network-error": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.1.tgz", + "integrity": "sha512-6QCxa49rQbmUWLfk0nuGqzql9U8uaV2H6279bRErPBHe/109hCzsLUBUHfbEtvLIHBd6hyXbgedBSHevm43Edw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz", - "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", - "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.2.0", - "@jest/get-type": "30.1.0", - "@jest/snapshot-utils": "30.2.0", - "@jest/transform": "30.2.0", - "@jest/types": "30.2.0", - "babel-preset-current-node-syntax": "^1.2.0", - "chalk": "^4.1.2", - "expect": "30.2.0", - "graceful-fs": "^4.2.11", - "jest-diff": "30.2.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-util": "30.2.0", - "pretty-format": "30.2.0", - "semver": "^7.7.2", - "synckit": "^0.11.8" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "isobject": "^3.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", "dev": true, "license": "MIT" }, - "node_modules/jest-snapshot/node_modules/expect": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz", - "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==", + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.2.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.2.0", - "jest-message-util": "30.2.0", - "jest-mock": "30.2.0", - "jest-util": "30.2.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/jest-mock": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz", - "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "jest-util": "30.2.0" - }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "call-bound": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "text-extensions": "^2.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "which-typed-array": "^1.1.16" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-util/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz", - "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==", + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "@jest/types": "30.2.0", - "camelcase": "^6.3.0", - "chalk": "^4.1.2", - "leven": "^3.1.0", - "pretty-format": "30.2.0" + "call-bound": "^1.0.3" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true, + "license": "MIT" + }, + "node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jest-validate/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/jest-mock": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.4.1.tgz", + "integrity": "sha512-/i8SVb8/NSB7RfNi8gfqu8gxLV23KaL5EpAttyb9iz8qWRIqXRLflycz/32wXsYkOnaUlx8NAKnJYtpsmXUmfw==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "~1.1.4" + "@jest/types": "30.4.1", + "@types/node": "*", + "jest-util": "30.4.1" }, "engines": { - "node": ">=7.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-validate/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-validate/node_modules/pretty-format": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz", - "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==", + "node_modules/jest-mock/node_modules/@jest/pattern": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.4.0.tgz", + "integrity": "sha512-RAWn3+f9u8BsHijKJ71uHcFp6vmyEt6VvoWXkl6hKF3qVIuWNmudVjg12DlBPGup/frIl5UcUlH5HfEuvHpEXg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "@types/node": "*", + "jest-regex-util": "30.4.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/jest-mock/node_modules/@jest/schemas": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.4.1.tgz", + "integrity": "sha512-i6b4qw5qnP8c5FEeBJg/uZQ4ddrkN6Ca8qISJh0pr7a5hfn3h3v5x60BEbOC7OYAGZNMs1LfFLwnW2CuK8F57Q==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@sinclair/typebox": "^0.34.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz", - "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==", + "node_modules/jest-mock/node_modules/@jest/types": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.4.1.tgz", + "integrity": "sha512-f1x/vJXIfjOlEmejYpbkbgw1gOqpPECwMvMEtBqe47j7H2Hg8h8w3o3ikhSXq3MI15kg+oQ0exWO0uCtTNJLoQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "30.2.0", - "@jest/types": "30.2.0", + "@jest/pattern": "30.4.0", + "@jest/schemas": "30.4.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", "@types/node": "*", - "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", - "emittery": "^0.13.1", - "jest-util": "30.2.0", - "string-length": "^4.0.2" + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { + "node_modules/jest-mock/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -17569,7 +13114,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/chalk": { + "node_modules/jest-mock/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -17586,7 +13131,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { + "node_modules/jest-mock/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -17599,44 +13144,39 @@ "node": ">=7.0.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { + "node_modules/jest-mock/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, "license": "MIT" }, - "node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/jest-mock/node_modules/jest-regex-util": { + "version": "30.4.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.4.0.tgz", + "integrity": "sha512-mWlvLviKIgIQ8VCuM1xRdD0TWp3zlzionlmDBjuXVBs+VkmXq6FgW9T4Emr7oGz/Rk6feDCGyiugolcQEyp3mg==", "dev": true, "license": "MIT", - "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" - }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/jest-mock/node_modules/jest-util": { + "version": "30.4.1", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.4.1.tgz", + "integrity": "sha512-vjQb1sACEiv13DKJMDToJpzVW0joCsIQrmbg0fi7CyOOt+g9jTuQl2A216pWRBYhOVt53XbL/2LbMKg1BECWOw==", "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@jest/types": "30.4.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.3" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, "node_modules/jiti": { @@ -17656,20 +13196,6 @@ "dev": true, "license": "MIT" }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/jsdoc-type-pratt-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", @@ -18004,19 +13530,9 @@ "@rspack/core": { "optional": true }, - "webpack": { - "optional": true - } - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" + "webpack": { + "optional": true + } } }, "node_modules/levn": { @@ -18561,16 +14077,6 @@ "semver": "bin/semver" } }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "tmpl": "1.0.5" - } - }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -19781,22 +15287,6 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/napi-postinstall": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", - "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -19880,13 +15370,6 @@ "tslib": "^2.0.3" } }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", - "dev": true, - "license": "MIT" - }, "node_modules/node-releases": { "version": "2.0.27", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", @@ -19923,6 +15406,7 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } @@ -20113,13 +15597,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", - "dev": true, - "license": "MIT" - }, "node_modules/object-inspect": { "version": "1.13.4", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", @@ -20553,19 +16030,6 @@ "dev": true, "license": "MIT" }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -20728,16 +16192,6 @@ "node": ">=6" } }, - "node_modules/pirates": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", - "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -21217,19 +16671,6 @@ "license": "MIT", "optional": true }, - "node_modules/psl": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", - "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "funding": { - "url": "https://github.com/sponsors/lupomontero" - } - }, "node_modules/pump": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.3.tgz", @@ -21292,23 +16733,6 @@ "node": ">=18" } }, - "node_modules/pure-rand": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz", - "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/dubzzz" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - ], - "license": "MIT" - }, "node_modules/pvtsutils": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", @@ -21354,13 +16778,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -21395,13 +16812,6 @@ "node": ">= 0.10" } }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/react-is-18": { "name": "react-is", "version": "18.3.1", @@ -22648,17 +18058,6 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", @@ -22729,13 +18128,6 @@ "node": ">= 10.x" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stack-utils": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", @@ -23138,43 +18530,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/string-length/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-length/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -23375,16 +18730,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -23577,42 +18922,6 @@ "streamx": "^2.15.0" } }, - "node_modules/tcp-port-used": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", - "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4.3.1", - "is2": "^2.0.6" - } - }, - "node_modules/tcp-port-used/node_modules/debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/tcp-port-used/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true, - "license": "MIT" - }, "node_modules/terser": { "version": "5.44.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", @@ -23715,21 +19024,6 @@ "source-map": "^0.6.0" } }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/text-decoder": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", @@ -23850,13 +19144,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -24040,29 +19327,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/type-is": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", @@ -24390,16 +19654,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -24409,41 +19663,6 @@ "node": ">= 0.8" } }, - "node_modules/unrs-resolver": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", - "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.3.0" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.11.1", - "@unrs/resolver-binding-android-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-arm64": "1.11.1", - "@unrs/resolver-binding-darwin-x64": "1.11.1", - "@unrs/resolver-binding-freebsd-x64": "1.11.1", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", - "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", - "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", - "@unrs/resolver-binding-linux-x64-musl": "1.11.1", - "@unrs/resolver-binding-wasm32-wasi": "1.11.1", - "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", - "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", - "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" - } - }, "node_modules/update-browserslist-db": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", @@ -24485,17 +19704,6 @@ "punycode": "^2.1.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -24520,21 +19728,6 @@ "node": ">= 0.4.0" } }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -24600,16 +19793,6 @@ "dev": true, "license": "MIT" }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/watchpack": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", @@ -24811,33 +19994,6 @@ "node": ">=10.13.0" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", @@ -25139,33 +20295,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, - "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ws": { "version": "8.20.0", "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", diff --git a/package.json b/package.json index 1da3d61d13..ea6014d8a8 100644 --- a/package.json +++ b/package.json @@ -35,11 +35,9 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node --experimental-vm-modules node_modules/jest/bin/jest.js", - "test:coverage": "npm run test:only -- --coverage", - "test:watch": "npm run test:coverage --watch", - "test:node": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", - "test": "npm run test:coverage", + "test": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", + "test:coverage": "npm run test -- --experimental-test-coverage", + "test:watch": "npm run test -- --watch", "pretest": "npm run lint", "prepare": "husky && npm run build", "release": "standard-version" @@ -90,7 +88,6 @@ "@types/picomatch": "^4.0.2", "@types/trusted-types": "^2.0.7", "acorn": "^8.14.0", - "babel-jest": "^30.0.4", "babel-loader": "^10.0.0", "connect": "^3.7.0", "core-js": "^3.38.1", @@ -100,7 +97,6 @@ "eslint-config-prettier": "^10.1.5", "eslint-config-webpack": "^4.4.0", "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jest": "^29.0.1", "eslint-plugin-jsdoc": "^51.3.4", "eslint-plugin-n": "^17.21.0", "execa": "^5.1.1", @@ -109,8 +105,6 @@ "html-webpack-plugin": "^5.6.3", "http-proxy": "^1.18.1", "husky": "^9.1.6", - "jest": "^30.0.4", - "jest-environment-jsdom": "^29.7.0", "jest-mock": "^30.4.1", "jsdom": "^29.1.1", "klona": "^2.0.4", @@ -129,7 +123,6 @@ "standard-version": "^9.3.0", "style-loader": "^4.0.0", "supertest": "^7.2.2", - "tcp-port-used": "^1.0.2", "typescript": "^5.7.2", "typescript-eslint": "^8.36.0", "wait-for-expect": "^3.0.2", diff --git a/scripts/globalSetupTest.js b/scripts/globalSetupTest.js deleted file mode 100644 index e8ee1c86b3..0000000000 --- a/scripts/globalSetupTest.js +++ /dev/null @@ -1,41 +0,0 @@ -"use strict"; - -const tcpPortUsed = require("tcp-port-used"); -const { version } = require("webpack"); -const ports = require("../test/ports-map"); - -// eslint-disable-next-line no-console -console.log(`\n Running tests for webpack @${version} \n`); - -/** - * @returns {Promise} - */ -async function validatePorts() { - const samples = []; - - for (const key of Object.keys(ports)) { - const value = ports[key]; - const arr = Array.isArray(value) ? value : [value]; - - for (const port of arr) { - const check = tcpPortUsed.check(port, "localhost").then((inUse) => { - if (inUse) { - throw new Error(`${port} has already used. [${key}]`); - } - }); - - samples.push(check); - } - } - - try { - await Promise.all(samples); - } catch (err) { - // eslint-disable-next-line no-console - console.error(err); - // eslint-disable-next-line n/no-process-exit - process.exit(1); - } -} - -module.exports = validatePorts; diff --git a/scripts/setupTest.js b/scripts/setupTest.js deleted file mode 100644 index 5e0aaeb46d..0000000000 --- a/scripts/setupTest.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -/* global jest */ - -process.env.CHOKIDAR_USEPOLLING = true; - -jest.setTimeout(400000); diff --git a/test/client/ReactErrorBoundary.test.js b/test/client/ReactErrorBoundary.test.js index 304a15c051..b6966e5e83 100644 --- a/test/client/ReactErrorBoundary.test.js +++ b/test/client/ReactErrorBoundary.test.js @@ -4,41 +4,20 @@ require("../helpers/jsdom-setup"); const { afterEach, beforeEach, describe, it, mock } = require("node:test"); const { expect } = require("expect"); -const { fn, spyOn } = require("jest-mock"); +const { spyOn } = require("jest-mock"); const { createOverlay } = require("../../client-src/overlay"); describe("createOverlay", () => { - const originalDocument = globalThis.document; - const originalWindow = globalThis.window; - + // Use the real jsdom window/document (set up via test/helpers/jsdom-setup). + // The previous Jest version installed fake document/window stubs because + // jsdom's jest environment behaved differently; with the helper here, + // real EventTarget semantics let the source's window.addEventListener + + // globalThis.dispatchEvent path work directly. beforeEach(() => { - globalThis.document = { - createElement: fn(() => ({ - style: {}, - appendChild: fn(), - addEventListener: fn(), - contentDocument: { - createElement: fn(() => ({ style: {}, appendChild: fn() })), - body: { appendChild: fn() }, - }, - })), - body: { appendChild: fn(), removeChild: fn() }, - }; - globalThis.window = { - // Keep addEventListener mocked for other potential uses - addEventListener: fn(), - removeEventListener: fn(), - // Mock trustedTypes - trustedTypes: null, - // Mock dispatchEvent - dispatchEvent: fn(), - }; mock.timers.enable(); }); afterEach(() => { - globalThis.document = originalDocument; - globalThis.window = originalWindow; mock.timers.reset(); mock.reset(); }); diff --git a/test/client/clients/WebsocketClient.test.js b/test/client/clients/WebsocketClient.test.js index 16db28072d..ba989e6b8e 100644 --- a/test/client/clients/WebsocketClient.test.js +++ b/test/client/clients/WebsocketClient.test.js @@ -1,50 +1,55 @@ "use strict"; -/** - * @jest-environment jsdom - * @jest-environment-options { "customExportConditions": ["main"] } - */ - require("../../helpers/jsdom-setup"); const http = require("node:http"); const { after, before, describe, it } = require("node:test"); const { expect } = require("expect"); const express = require("express"); -const { fn } = require("jest-mock"); +const { spyOn } = require("jest-mock"); const ws = require("ws"); -const port = require("../../ports-map")["web-socket-client"]; -jest.setMock("../../../client-src/utils/log", { - log: { - error: fn(), - }, -}); +const WebSocketClient = + require("../../../client-src/clients/WebSocketClient").default; +const { log } = require("../../../client-src/utils/log"); +const port = require("../../ports-map")["web-socket-client"]; describe("WebsocketClient", () => { - const WebSocketClient = - require("../../../client-src/clients/WebSocketClient").default; - const { log } = require("../../../client-src/utils/log"); - let socketServer; let server; - - before((done) => { - // eslint-disable-next-line new-cap - const app = new express(); - - server = http.createServer(app); - server.listen(port, "localhost", () => { - socketServer = new ws.Server({ - server, - path: "/ws-server", - }); - done(); - }); - }); + let logErrorSpy; + + before( + () => + new Promise((resolve) => { + // eslint-disable-next-line new-cap + const app = new express(); + + server = http.createServer(app); + server.listen(port, "localhost", () => { + socketServer = new ws.Server({ + server, + path: "/ws-server", + }); + resolve(); + }); + }), + ); + + after( + () => + new Promise((resolve) => { + logErrorSpy.mockRestore(); + server.close(() => { + resolve(); + }); + }), + ); describe("client", () => { - it("should open, receive message, and close", (done) => { + it("should open, receive message, and close", async (t) => { + logErrorSpy = spyOn(log, "error").mockImplementation(); + socketServer.on("connection", (connection) => { connection.send("hello world"); @@ -73,17 +78,11 @@ describe("WebsocketClient", () => { expect(log.error.mock.calls).toHaveLength(1); expect(log.error.mock.calls[0]).toEqual([testError]); - setTimeout((t) => { - t.assert.snapshot(data); - - done(); - }, 3000); - }); - }); + await new Promise((resolve) => { + setTimeout(resolve, 3000); + }); - after((done) => { - server.close(() => { - done(); + t.assert.snapshot(data); }); }); }); diff --git a/test/client/index.test.js b/test/client/index.test.js index 82bda0d2c8..62f4e64b4f 100644 --- a/test/client/index.test.js +++ b/test/client/index.test.js @@ -1,10 +1,21 @@ "use strict"; -const { afterEach, beforeEach, describe, it } = require("node:test"); +require("../helpers/jsdom-setup"); + +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); const { expect } = require("expect"); const { fn } = require("jest-mock"); -require("../helpers/jsdom-setup"); +/** + * Clear all client-src/* entries from require.cache so a fresh require() + * re-evaluates client-src/index.js with the active mock.module() mocks. + * @returns {void} + */ +function clearClientCache() { + for (const key of Object.keys(require.cache)) { + if (key.includes("/client-src/")) delete require.cache[key]; + } +} describe("index", () => { let log; @@ -12,65 +23,86 @@ describe("index", () => { let overlay; let sendMessage; let onSocketMessage; + let logMockCtx; + let socketMockCtx; + let overlayMockCtx; + let sendMessageMockCtx; const locationValue = self.location; const resourceQueryValue = globalThis.__resourceQuery; - beforeEach(() => { - globalThis.__resourceQuery = "?mock-url"; - globalThis.__webpack_hash__ = "mock-hash"; - - // log - jest.setMock("../../client-src/utils/log.js", { - log: { - info: fn(), - warn: fn(), - error: fn(), - }, + /** + * Install fresh mock.module() interceptors for the four modules + * client-src/index.js loads at evaluation time. + * @returns {void} + */ + function installMocks() { + log = { + log: { info: fn(), warn: fn(), error: fn() }, logEnabledFeatures: fn(), setLogLevel: fn(), + }; + logMockCtx = mock.module("../../client-src/utils/log.js", { + namedExports: log, }); - log = require("../../client-src/utils/log"); - - // socket - jest.setMock("../../client-src/socket.js", fn()); - socket = require("../../client-src/socket"); + socket = fn(); + socketMockCtx = mock.module("../../client-src/socket.js", { + defaultExport: socket, + }); const send = fn(); - - // overlay - jest.setMock("../../client-src/overlay.js", { - createOverlay: () => ({ - send, - }), - formatProblem: (item) => ({ - header: "HEADER warning", - body: `BODY: ${item}`, - }), + overlay = { send }; + overlayMockCtx = mock.module("../../client-src/overlay.js", { + namedExports: { + createOverlay: () => overlay, + formatProblem: (item) => ({ + header: "HEADER warning", + body: `BODY: ${item}`, + }), + }, }); - const { createOverlay } = require("../../client-src/overlay"); - - overlay = createOverlay(); + sendMessage = fn(); + sendMessageMockCtx = mock.module("../../client-src/utils/sendMessage.js", { + defaultExport: sendMessage, + }); + } + + /** + * Tear down the mock.module() interceptors installed by installMocks(). + * @returns {void} + */ + function restoreMocks() { + logMockCtx.restore(); + socketMockCtx.restore(); + overlayMockCtx.restore(); + sendMessageMockCtx.restore(); + } + + beforeEach(async () => { + globalThis.__resourceQuery = "?mock-url"; + globalThis.__webpack_hash__ = "mock-hash"; - // sendMessage - jest.setMock("../../client-src/utils/sendMessage.js", fn()); - sendMessage = require("../../client-src/utils/sendMessage"); + clearClientCache(); + installMocks(); // issue: https://github.com/jsdom/jsdom/issues/2112 delete globalThis.location; - globalThis.location = { ...locationValue, reload: fn() }; - require("../../client-src"); + // Use dynamic import with a cache-busting query string to force a fresh + // module evaluation each test (ESM modules aren't invalidated by deleting + // entries from require.cache). + const indexUrl = require.resolve("../../client-src"); + await import(`file://${indexUrl}?t=${Date.now()}-${Math.random()}`); [[, onSocketMessage]] = socket.mock.calls; }); afterEach(() => { globalThis.__resourceQuery = resourceQueryValue; Object.assign(globalThis, locationValue); - jest.resetAllMocks(); - jest.resetModules(); + restoreMocks(); + clearClientCache(); }); it("should set arguments into socket function", (t) => { @@ -175,74 +207,69 @@ describe("index", () => { }); }); - it("should parse overlay options from resource query", () => { - jest.isolateModules(() => { - // Pass JSON config with warnings disabled - globalThis.__resourceQuery = `?overlay=${encodeURIComponent( - '{"warnings": false}', - )}`; + it("should parse overlay options from resource query", async () => { + // Helper that re-evaluates client-src/index.js fresh after mutating + // __resourceQuery — equivalent to Jest's jest.isolateModules. + async function reloadClient() { overlay.send.mockReset(); socket.mockReset(); - require("../../client-src"); + const indexUrl = require.resolve("../../client-src"); + await import(`file://${indexUrl}?t=${Date.now()}-${Math.random()}`); [[, onSocketMessage]] = socket.mock.calls; + } - onSocketMessage.warnings(["warn1"]); - expect(overlay.send).not.toHaveBeenCalled(); + // Pass JSON config with warnings disabled + globalThis.__resourceQuery = `?overlay=${encodeURIComponent( + '{"warnings": false}', + )}`; + await reloadClient(); - onSocketMessage.errors(["error1"]); - expect(overlay.send).toHaveBeenCalledTimes(1); - expect(overlay.send).toHaveBeenCalledWith({ - type: "BUILD_ERROR", - level: "error", - messages: ["error1"], - }); + onSocketMessage.warnings(["warn1"]); + expect(overlay.send).not.toHaveBeenCalled(); + + onSocketMessage.errors(["error1"]); + expect(overlay.send).toHaveBeenCalledTimes(1); + expect(overlay.send).toHaveBeenCalledWith({ + type: "BUILD_ERROR", + level: "error", + messages: ["error1"], }); - jest.isolateModules(() => { - // Pass JSON config with errors disabled - globalThis.__resourceQuery = `?overlay=${encodeURIComponent( - '{"errors": false}', - )}`; - overlay.send.mockReset(); - socket.mockReset(); - require("../../client-src"); - [[, onSocketMessage]] = socket.mock.calls; + // Pass JSON config with errors disabled + globalThis.__resourceQuery = `?overlay=${encodeURIComponent( + '{"errors": false}', + )}`; + await reloadClient(); - onSocketMessage.errors(["error1"]); - expect(overlay.send).not.toHaveBeenCalled(); + onSocketMessage.errors(["error1"]); + expect(overlay.send).not.toHaveBeenCalled(); - onSocketMessage.warnings(["warn1"]); - expect(overlay.send).toHaveBeenCalledTimes(1); - expect(overlay.send).toHaveBeenCalledWith({ - type: "BUILD_ERROR", - level: "warning", - messages: ["warn1"], - }); + onSocketMessage.warnings(["warn1"]); + expect(overlay.send).toHaveBeenCalledTimes(1); + expect(overlay.send).toHaveBeenCalledWith({ + type: "BUILD_ERROR", + level: "warning", + messages: ["warn1"], }); - jest.isolateModules(() => { - // Use simple boolean - globalThis.__resourceQuery = "?overlay=true"; - socket.mockReset(); - overlay.send.mockReset(); - require("../../client-src"); - [[, onSocketMessage]] = socket.mock.calls; + // Use simple boolean + globalThis.__resourceQuery = "?overlay=true"; + await reloadClient(); - onSocketMessage.warnings(["warn2"]); - expect(overlay.send).toHaveBeenCalledTimes(1); - expect(overlay.send).toHaveBeenLastCalledWith({ - type: "BUILD_ERROR", - level: "warning", - messages: ["warn2"], - }); - - onSocketMessage.errors(["error2"]); - expect(overlay.send).toHaveBeenCalledTimes(2); - expect(overlay.send).toHaveBeenLastCalledWith({ - type: "BUILD_ERROR", - level: "error", - messages: ["error2"], - }); + onSocketMessage.warnings(["warn2"]); + expect(overlay.send).toHaveBeenCalledTimes(1); + expect(overlay.send).toHaveBeenLastCalledWith({ + type: "BUILD_ERROR", + level: "warning", + messages: ["warn2"], + }); + + onSocketMessage.errors(["error2"]); + expect(overlay.send).toHaveBeenCalledTimes(2); + expect(overlay.send).toHaveBeenLastCalledWith({ + type: "BUILD_ERROR", + level: "error", + messages: ["error2"], }); }); diff --git a/test/client/socket-helper.test.js b/test/client/socket-helper.test.js index 62d6ae9669..3fdf1ea9b4 100644 --- a/test/client/socket-helper.test.js +++ b/test/client/socket-helper.test.js @@ -1,34 +1,57 @@ "use strict"; +require("../helpers/jsdom-setup"); + const { beforeEach, describe, it } = require("node:test"); const { expect } = require("expect"); const { fn } = require("jest-mock"); -require("../helpers/jsdom-setup"); +/** + * Build a fresh mock WebSocketClient class. Each `new MockClient(url)` + * registers the instance and arguments on the static `.mock` so tests can + * assert (matching the shape Jest's auto-mock produces). + * @returns {new (url: string) => unknown} mock client constructor + */ +function createMockClient() { + class MockClient { + constructor(url) { + MockClient.mock.instances.push(this); + MockClient.mock.calls.push([url]); + this.onOpen = fn(); + this.onClose = fn(); + this.onMessage = fn(); + } + } + MockClient.mock = { instances: [], calls: [] }; + return MockClient; +} describe("socket", () => { + let socket; + beforeEach(() => { - jest.resetAllMocks(); - jest.resetModules(); + delete globalThis.__webpack_dev_server_client__; + for (const key of Object.keys(require.cache)) { + if (key.includes("/client-src/")) delete require.cache[key]; + } + socket = require("../../client-src/socket").default; }); it("should default to WebsocketClient when no __webpack_dev_server_client__ set", (t) => { - jest.mock("../../client/clients/WebSocketClient"); - - const socket = require("../../client/socket").default; - const WebsocketClient = - require("../../client/clients/WebSocketClient").default; - + const MockClient = createMockClient(); const mockHandler = fn(); - socket("my.url", { - example: mockHandler, - }); + socket( + "my.url", + { + example: mockHandler, + }, + undefined, + MockClient, + ); - const [mockClientInstance] = WebsocketClient.mock.instances; + const [mockClientInstance] = MockClient.mock.instances; - // this simulates receiving a message from the server and passing it - // along to the callback of onMessage mockClientInstance.onMessage.mock.calls[0][0]( JSON.stringify({ type: "example", @@ -37,7 +60,7 @@ describe("socket", () => { }), ); - t.assert.snapshot(WebsocketClient.mock.calls[0]); + t.assert.snapshot(MockClient.mock.calls[0]); t.assert.snapshot(mockClientInstance.onOpen.mock.calls); t.assert.snapshot(mockClientInstance.onClose.mock.calls); t.assert.snapshot(mockClientInstance.onMessage.mock.calls); @@ -45,15 +68,12 @@ describe("socket", () => { }); it("should use __webpack_dev_server_client__ when set", (t) => { - jest.mock("../../client/clients/WebSocketClient"); - - const socket = require("../../client/socket").default; - - globalThis.__webpack_dev_server_client__ = - require("../../client/clients/WebSocketClient").default; + const MockClient = createMockClient(); + globalThis.__webpack_dev_server_client__ = MockClient; const mockHandler = fn(); + // Call without 4th arg so the runtime resolves Client from the global. socket("my.url", { example: mockHandler, }); @@ -61,8 +81,6 @@ describe("socket", () => { const [mockClientInstance] = globalThis.__webpack_dev_server_client__.mock.instances; - // this simulates receiving a message from the server and passing it - // along to the callback of onMessage mockClientInstance.onMessage.mock.calls[0][0]( JSON.stringify({ type: "example", @@ -79,15 +97,10 @@ describe("socket", () => { }); it("should export initialized client", () => { - const socket = require("../../client/socket").default; - - const nonInitializedInstance = require("../../client/socket").client; - - expect(nonInitializedInstance).toBeNull(); - - socket("my.url", {}); + const MockClient = createMockClient(); + socket("my.url", {}, undefined, MockClient); - const initializedInstance = require("../../client/socket").client; + const initializedInstance = require("../../client-src/socket").client; expect(initializedInstance).not.toBeNull(); expect(typeof initializedInstance.onClose).toBe("function"); diff --git a/test/client/utils/log.test.js b/test/client/utils/log.test.js index 0160d6a07f..79fe1d20a8 100644 --- a/test/client/utils/log.test.js +++ b/test/client/utils/log.test.js @@ -2,53 +2,41 @@ require("../../helpers/jsdom-setup"); -const { afterEach, beforeEach, describe, it, mock } = require("node:test"); +const { describe, it } = require("node:test"); const { expect } = require("expect"); const { fn } = require("jest-mock"); +const { log, setLogLevel } = require("../../../client-src/utils/log"); + describe("'log' function", () => { - let logMock; - let setLogLevel; - let runtimeMock; + it("exports a logger instance bound at module load", () => { + expect(log).toBeDefined(); + expect(typeof log).toBe("object"); + }); - beforeEach(() => { - logMock = { + it("setLogLevel forwards { level } to the logger when given default", () => { + const logger = { getLogger: fn(), configureDefaultLogger: fn(), }; - runtimeMock = mock.module("webpack/lib/logging/runtime.js", { - defaultExport: logMock, - namedExports: logMock, - }); - - setLogLevel = require("../../../client-src/utils/log").setLogLevel; - }); - - afterEach(() => { - logMock.getLogger.mockClear(); - logMock.configureDefaultLogger.mockClear(); - runtimeMock.restore(); - delete require.cache[require.resolve("../../../client-src/utils/log")]; - }); - it("should set info as the default level and create logger", () => { - const { getLogger } = logMock; - const { configureDefaultLogger } = logMock; + setLogLevel("info", logger); - expect(configureDefaultLogger).toHaveBeenCalled(); - expect(configureDefaultLogger.mock.calls[0][0]).toEqual({ + expect(logger.configureDefaultLogger).toHaveBeenCalledWith({ level: "info", }); - - expect(getLogger).toHaveBeenCalled(); - expect(getLogger.mock.calls[0][0]).toBe("webpack-dev-server"); }); it("should set log level via setLogLevel", (t) => { + const logger = { + getLogger: fn(), + configureDefaultLogger: fn(), + }; + for (const level of ["none", "error", "warn", "info", "log", "verbose"]) { - setLogLevel(level); + setLogLevel(level, logger); } - t.assert.snapshot(logMock.configureDefaultLogger.mock.calls); + t.assert.snapshot(logger.configureDefaultLogger.mock.calls); }); }); diff --git a/test/e2e/host.test.js b/test/e2e/host.test.js index b12c81a345..865a8c23e2 100644 --- a/test/e2e/host.test.js +++ b/test/e2e/host.test.js @@ -1,7 +1,8 @@ "use strict"; const http = require("node:http"); - +const { describe, it } = require("node:test"); +const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); @@ -302,7 +303,6 @@ describe("host", () => { } // TODO need test on error - // eslint-disable-next-line jest/no-commented-out-tests // it(`should throw an error on invalid host`, async () => { // const compiler = webpack(config); // const server = new Server({ port, host: "unknown.unknown" }, compiler); diff --git a/test/helpers/jsdom-setup.js b/test/helpers/jsdom-setup.js index c653402d86..91e02bdf9d 100644 --- a/test/helpers/jsdom-setup.js +++ b/test/helpers/jsdom-setup.js @@ -22,6 +22,12 @@ const props = [ "MouseEvent", "KeyboardEvent", "MessageEvent", + "ErrorEvent", + "PromiseRejectionEvent", + "PageTransitionEvent", + "ProgressEvent", + "PopStateEvent", + "HashChangeEvent", "MutationObserver", "IntersectionObserver", "ResizeObserver", @@ -76,3 +82,12 @@ for (const prop of props) { // dom.window is normally separate from Node's globalThis.) globalThis.window = globalThis; globalThis.self = globalThis; + +// Replace jsdom's stub WebSocket with the Node `ws` library so client-side +// code that does `new WebSocket(url)` actually connects against test servers. +// (Jest's jsdom env did this via `customExportConditions: ["main"]`.) +try { + globalThis.WebSocket = require("ws"); +} catch { + // ws not installed; leave the jsdom WebSocket as-is. +} From 77613b817f98d04abc10912287b02e9868cde3b2 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 15:53:03 +0000 Subject: [PATCH 07/22] fixup! --- client-src/globals.d.ts | 5 ++++ client-src/utils/log.js | 2 +- package-lock.json | 66 +++++++++++++++++------------------------ package.json | 7 +++-- 4 files changed, 38 insertions(+), 42 deletions(-) diff --git a/client-src/globals.d.ts b/client-src/globals.d.ts index a6aeff9c99..c15deb3bca 100644 --- a/client-src/globals.d.ts +++ b/client-src/globals.d.ts @@ -8,6 +8,11 @@ declare interface CommunicationClientConstructor { new (url: string): CommunicationClient; // Defines a constructor that takes a string and returns a GreeterInstance } +declare interface Logger { + configureDefaultLogger(options: { level: string }): void; + getLogger(name: string): any; +} + declare const __webpack_dev_server_client__: | CommunicationClientConstructor | { default: CommunicationClientConstructor } diff --git a/client-src/utils/log.js b/client-src/utils/log.js index 27ff60d17e..9ece4a1178 100644 --- a/client-src/utils/log.js +++ b/client-src/utils/log.js @@ -8,7 +8,7 @@ const defaultLevel = "info"; // options new options, merge with old options /** * @param {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level level - * @param {object} logger internal-only override for tests; defaults to the + * @param {Logger} logger internal-only override for tests; defaults to the * real webpack runtime logger * @returns {void} */ diff --git a/package-lock.json b/package-lock.json index c924427ab5..0479ea660b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -298,7 +298,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -2321,8 +2320,7 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.18.tgz", "integrity": "sha512-EF77RqROHL+4LhMGW5NTeKqfUd/e4OOv6EDFQ/UQQiFyWuqkEKyEz0NDILxOFxWUEVdjT2GQ2cC7t12B6pESwg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@cspell/dict-dart": { "version": "2.3.1", @@ -2462,16 +2460,14 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.12.tgz", "integrity": "sha512-JFffQ1dDVEyJq6tCDWv0r/RqkdSnV43P2F/3jJ9rwLgdsOIXwQbXrz6QDlvQLVvNSnORH9KjDtenFTGDyzfCaA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@cspell/dict-html-symbol-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.4.tgz", "integrity": "sha512-afea+0rGPDeOV9gdO06UW183Qg6wRhWVkgCFwiO3bDupAoyXRuvupbb5nUyqSTsLXIKL8u8uXQlJ9pkz07oVXw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@cspell/dict-java": { "version": "5.0.12", @@ -2669,8 +2665,7 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz", "integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@cspell/dict-vue": { "version": "3.0.5", @@ -2811,7 +2806,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2860,7 +2854,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -2981,6 +2974,7 @@ "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -3075,7 +3069,6 @@ "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3150,6 +3143,7 @@ "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" @@ -3818,7 +3812,6 @@ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -4001,6 +3994,7 @@ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -4063,6 +4057,7 @@ "integrity": "sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/types": "^8.41.0", @@ -4084,6 +4079,7 @@ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4173,7 +4169,6 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -4327,7 +4322,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -4501,7 +4495,6 @@ "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", @@ -4955,7 +4948,6 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "devOptional": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4998,7 +4990,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5721,7 +5712,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -5784,6 +5774,7 @@ "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20" }, @@ -5987,7 +5978,8 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/character-entities": { "version": "2.0.2", @@ -6074,6 +6066,7 @@ "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6087,6 +6080,7 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.0" } @@ -7880,7 +7874,6 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -8620,8 +8613,7 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", "dev": true, - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/dezalgo": { "version": "1.0.4", @@ -9186,7 +9178,6 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -9276,7 +9267,6 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9435,7 +9425,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -9480,7 +9469,6 @@ "integrity": "sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==", "dev": true, "license": "BSD-3-Clause", - "peer": true, "dependencies": { "@es-joy/jsdoccomment": "~0.52.0", "are-docs-informative": "^0.0.2", @@ -9519,7 +9507,6 @@ "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", @@ -9605,6 +9592,7 @@ "integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "@eslint-community/eslint-utils": "^4.7.0", @@ -9641,6 +9629,7 @@ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", + "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -10444,7 +10433,8 @@ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/fast-equals": { "version": "5.2.2", @@ -10695,6 +10685,7 @@ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -11963,7 +11954,6 @@ "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -12339,6 +12329,7 @@ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -12516,6 +12507,7 @@ "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "builtin-modules": "^5.0.0" }, @@ -13486,7 +13478,6 @@ "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -16306,6 +16297,7 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=4" } @@ -16340,7 +16332,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -16462,7 +16453,6 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16479,6 +16469,7 @@ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fast-diff": "^1.1.2" }, @@ -17065,6 +17056,7 @@ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, "license": "MIT", + "peer": true, "bin": { "regexp-tree": "bin/regexp-tree" } @@ -18746,6 +18738,7 @@ "integrity": "sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -18871,6 +18864,7 @@ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@pkgr/core": "^0.2.9" }, @@ -19293,8 +19287,7 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD", - "peer": true + "license": "0BSD" }, "node_modules/tsyringe": { "version": "4.10.0", @@ -19455,7 +19448,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19470,7 +19462,6 @@ "integrity": "sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", @@ -19830,7 +19821,6 @@ "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", diff --git a/package.json b/package.json index ea6014d8a8..f40e548f0a 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,10 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", - "test:coverage": "npm run test -- --experimental-test-coverage", - "test:watch": "npm run test -- --watch", + "test:only": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", + "test:coverage": "npm run test:only -- --experimental-test-coverage", + "test:watch": "npm run test:only -- --watch", + "test": "npm run test:coverage", "pretest": "npm run lint", "prepare": "husky && npm run build", "release": "standard-version" From 4a9ba3f331098d27c6432785a982e853d3d37b59 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 16:16:49 +0000 Subject: [PATCH 08/22] fixup! --- package.json | 2 +- test/e2e/target.test.js | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index f40e548f0a..689e4d2870 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", + "test:only": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test \"test/**/*.test.js\" --test-timeout=400000 --test-force-exit", "test:coverage": "npm run test:only -- --experimental-test-coverage", "test:watch": "npm run test:only -- --watch", "test": "npm run test:coverage", diff --git a/test/e2e/target.test.js b/test/e2e/target.test.js index 01b459f010..10e3e7a4e8 100644 --- a/test/e2e/target.test.js +++ b/test/e2e/target.test.js @@ -6,6 +6,10 @@ const { expect } = require("expect"); const webpack = require("webpack"); const Server = require("../../lib/Server"); const config = require("../fixtures/client-config/webpack.config"); + +// Set up jsdom before loading fixtures that use browser APIs like Worker +require("../helpers/jsdom-setup"); + const workerConfig = require("../fixtures/worker-config/webpack.config"); const workerConfigDevServerFalse = require("../fixtures/worker-config-dev-server-false/webpack.config"); const runBrowser = require("../helpers/run-browser"); From 089f849a7e6277f2dbe27d78954d2240c45f93e9 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 11:54:11 -0500 Subject: [PATCH 09/22] fixup! --- package-lock.json | 135 +++++++++++++++++++++++++++-------- package.json | 5 +- scripts/check-test-ports.mjs | 40 +++++++++++ 3 files changed, 150 insertions(+), 30 deletions(-) create mode 100644 scripts/check-test-ports.mjs diff --git a/package-lock.json b/package-lock.json index 0479ea660b..88fdbef701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -92,6 +92,7 @@ "standard-version": "^9.3.0", "style-loader": "^4.0.0", "supertest": "^7.2.2", + "tcp-port-used": "^1.0.2", "typescript": "^5.7.2", "typescript-eslint": "^8.36.0", "wait-for-expect": "^3.0.2", @@ -298,6 +299,7 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -2320,7 +2322,8 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.18.tgz", "integrity": "sha512-EF77RqROHL+4LhMGW5NTeKqfUd/e4OOv6EDFQ/UQQiFyWuqkEKyEz0NDILxOFxWUEVdjT2GQ2cC7t12B6pESwg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@cspell/dict-dart": { "version": "2.3.1", @@ -2460,14 +2463,16 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.12.tgz", "integrity": "sha512-JFffQ1dDVEyJq6tCDWv0r/RqkdSnV43P2F/3jJ9rwLgdsOIXwQbXrz6QDlvQLVvNSnORH9KjDtenFTGDyzfCaA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@cspell/dict-html-symbol-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.4.tgz", "integrity": "sha512-afea+0rGPDeOV9gdO06UW183Qg6wRhWVkgCFwiO3bDupAoyXRuvupbb5nUyqSTsLXIKL8u8uXQlJ9pkz07oVXw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@cspell/dict-java": { "version": "5.0.12", @@ -2665,7 +2670,8 @@ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.2.3.tgz", "integrity": "sha512-zXh1wYsNljQZfWWdSPYwQhpwiuW0KPW1dSd8idjMRvSD0aSvWWHoWlrMsmZeRl4qM4QCEAjua8+cjflm41cQBg==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@cspell/dict-vue": { "version": "3.0.5", @@ -2806,6 +2812,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" }, @@ -2854,6 +2861,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=20.19.0" } @@ -2974,7 +2982,6 @@ "integrity": "sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -3069,6 +3076,7 @@ "integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -3143,7 +3151,6 @@ "integrity": "sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@eslint/core": "^0.15.2", "levn": "^0.4.1" @@ -3812,6 +3819,7 @@ "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -3994,7 +4002,6 @@ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, @@ -4057,7 +4064,6 @@ "integrity": "sha512-Ykums1VYonM0TgkD0VteVq9mrlO2FhF48MDJnPyv3MktIB2ydtuhlO0AfWm7xnW1kyf5bjOqA6xc7JjviuVTxg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/types": "^8.41.0", @@ -4079,7 +4085,6 @@ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", - "peer": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -4169,6 +4174,7 @@ "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -4322,6 +4328,7 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -4495,6 +4502,7 @@ "integrity": "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", @@ -4948,6 +4956,7 @@ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "devOptional": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4990,6 +4999,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -5712,6 +5722,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -5774,7 +5785,6 @@ "integrity": "sha512-bkXY9WsVpY7CvMhKSR6pZilZu9Ln5WDrKVBUXf2S443etkmEO4V58heTecXcUIsNsi4Rx8JUO4NfX1IcQl4deg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20" }, @@ -5978,8 +5988,7 @@ "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/character-entities": { "version": "2.0.2", @@ -6066,7 +6075,6 @@ "integrity": "sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "escape-string-regexp": "^1.0.5" }, @@ -6080,7 +6088,6 @@ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.0" } @@ -7874,6 +7881,7 @@ "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -8613,7 +8621,8 @@ "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz", "integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==", "dev": true, - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/dezalgo": { "version": "1.0.4", @@ -9178,6 +9187,7 @@ "integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -9267,6 +9277,7 @@ "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -9425,6 +9436,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -9469,6 +9481,7 @@ "integrity": "sha512-y4CA9OkachG8v5nAtrwvcvjIbdcKgSyS6U//IfQr4FZFFyeBFwZFf/tfSsMr46mWDJgidZjBTqoCRlXywfFBMg==", "dev": true, "license": "BSD-3-Clause", + "peer": true, "dependencies": { "@es-joy/jsdoccomment": "~0.52.0", "are-docs-informative": "^0.0.2", @@ -9507,6 +9520,7 @@ "integrity": "sha512-68PealUpYoHOBh332JLLD9Sj7OQUDkFpmcfqt8R9sySfFSeuGJjMTJQvCRRB96zO3A/PELRLkPrzsHmzEFQQ5A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.5.0", "enhanced-resolve": "^5.17.1", @@ -9592,7 +9606,6 @@ "integrity": "sha512-zLihukvneYT7f74GNbVJXfWIiNQmkc/a9vYBTE4qPkQZswolWNdu+Wsp9sIXno1JOzdn6OUwLPd19ekXVkahRA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "@eslint-community/eslint-utils": "^4.7.0", @@ -9629,7 +9642,6 @@ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -10433,8 +10445,7 @@ "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/fast-equals": { "version": "5.2.2", @@ -10685,7 +10696,6 @@ "integrity": "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -11954,6 +11964,7 @@ "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -12329,7 +12340,6 @@ "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -12400,6 +12410,16 @@ "node": ">= 12" } }, + "node_modules/ip-regex": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", + "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/ipaddr.js": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", @@ -12507,7 +12527,6 @@ "integrity": "sha512-f4RqJKBUe5rQkJ2eJEJBXSticB3hGbN9j0yxxMQFqIW89Jp9WYFtzfTcRlstDKVUTRzSOTLKRfO9vIztenwtxA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "builtin-modules": "^5.0.0" }, @@ -12921,6 +12940,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true, + "license": "MIT" + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -12989,6 +13015,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is2": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/is2/-/is2-2.0.9.tgz", + "integrity": "sha512-rZkHeBn9Zzq52sd9IUIV3a5mfwBY+o2HePMh0wkGBM4z4qjvy2GwVxQ6nNXSfw6MmVP6gf1QIlWjiOavhM3x5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "ip-regex": "^4.1.0", + "is-url": "^1.2.4" + }, + "engines": { + "node": ">=v0.10.0" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -13478,6 +13519,7 @@ "integrity": "sha512-j1n1IuTX1VQjIy3tT7cyGbX7nvQOsFLoIqobZv4ttI5axP923gA44zUj6miiA6R5Aoms4sEGVIIcucXUbRI14g==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "copy-anything": "^2.0.1", "parse-node-version": "^1.0.1", @@ -16297,7 +16339,6 @@ "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } @@ -16332,6 +16373,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -16453,6 +16495,7 @@ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16469,7 +16512,6 @@ "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fast-diff": "^1.1.2" }, @@ -17056,7 +17098,6 @@ "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, "license": "MIT", - "peer": true, "bin": { "regexp-tree": "bin/regexp-tree" } @@ -18738,7 +18779,6 @@ "integrity": "sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -18864,7 +18904,6 @@ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@pkgr/core": "^0.2.9" }, @@ -18916,6 +18955,42 @@ "streamx": "^2.15.0" } }, + "node_modules/tcp-port-used": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tcp-port-used/-/tcp-port-used-1.0.2.tgz", + "integrity": "sha512-l7ar8lLUD3XS1V2lfoJlCBaeoaWo/2xfYt81hM7VlvR4RrMVFqfmzfhLVk40hAb368uitje5gPtBRL1m/DGvLA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4.3.1", + "is2": "^2.0.6" + } + }, + "node_modules/tcp-port-used/node_modules/debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/tcp-port-used/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, "node_modules/terser": { "version": "5.44.0", "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", @@ -19287,7 +19362,8 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" + "license": "0BSD", + "peer": true }, "node_modules/tsyringe": { "version": "4.10.0", @@ -19448,6 +19524,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -19462,6 +19539,7 @@ "integrity": "sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", @@ -19821,6 +19899,7 @@ "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", diff --git a/package.json b/package.json index 689e4d2870..a233f846b8 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test \"test/**/*.test.js\" --test-timeout=400000 --test-force-exit", + "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test \"test/**/*.test.js\" --test-timeout=400000 --test-force-exit", "test:coverage": "npm run test:only -- --experimental-test-coverage", "test:watch": "npm run test:only -- --watch", "test": "npm run test:coverage", @@ -124,6 +124,7 @@ "standard-version": "^9.3.0", "style-loader": "^4.0.0", "supertest": "^7.2.2", + "tcp-port-used": "^1.0.2", "typescript": "^5.7.2", "typescript-eslint": "^8.36.0", "wait-for-expect": "^3.0.2", @@ -143,6 +144,6 @@ } }, "engines": { - "node": ">= 22.12.0" + "node": ">= 22.15.0" } } diff --git a/scripts/check-test-ports.mjs b/scripts/check-test-ports.mjs new file mode 100644 index 0000000000..210d1a4989 --- /dev/null +++ b/scripts/check-test-ports.mjs @@ -0,0 +1,40 @@ +// Pre-test port validation. Runs once before `npm run test:only` (via the +// pretest:only npm hook) to assert that none of the ports the test suite +// will claim are already bound on localhost. +// +// We do this via an npm pre-hook (rather than node:test's +// `--test-global-setup`) because that flag was only added in Node v24.0.0, +// and the package supports Node v22.x. + +import tcpPortUsed from "tcp-port-used"; +import webpack from "webpack"; +import ports from "../test/ports-map.js"; + +const { version } = webpack; +// eslint-disable-next-line no-console +console.log(`\n Running tests for webpack @${version} \n`); + +const checks = []; +for (const key of Object.keys(ports)) { + const value = ports[key]; + const arr = Array.isArray(value) ? value : [value]; + + for (const port of arr) { + checks.push( + tcpPortUsed.check(port, "localhost").then((inUse) => { + if (inUse) { + throw new Error(`${port} has already used. [${key}]`); + } + }), + ); + } +} + +try { + await Promise.all(checks); +} catch (err) { + // eslint-disable-next-line no-console + console.error(err); + // eslint-disable-next-line n/no-process-exit + process.exit(1); +} From 8793e1f35b76f8b7fe975ac7570cfefd13c18b7d Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 12:03:47 -0500 Subject: [PATCH 10/22] fixup! --- client-src/utils/log.js | 8 ++--- test/client/utils/log.test.js | 57 +++++++++++++++++++++++++---------- 2 files changed, 44 insertions(+), 21 deletions(-) diff --git a/client-src/utils/log.js b/client-src/utils/log.js index 9ece4a1178..3823fe2e1d 100644 --- a/client-src/utils/log.js +++ b/client-src/utils/log.js @@ -1,4 +1,4 @@ -import defaultLogger from "../modules/logger/index.js"; +import logger from "../modules/logger/index.js"; const name = "webpack-dev-server"; // default level is set on the client side, so it does not need @@ -8,16 +8,14 @@ const defaultLevel = "info"; // options new options, merge with old options /** * @param {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level level - * @param {Logger} logger internal-only override for tests; defaults to the - * real webpack runtime logger * @returns {void} */ -function setLogLevel(level, logger = defaultLogger) { +function setLogLevel(level) { logger.configureDefaultLogger({ level }); } setLogLevel(defaultLevel); -const log = defaultLogger.getLogger(name); +const log = logger.getLogger(name); export { log, setLogLevel }; diff --git a/test/client/utils/log.test.js b/test/client/utils/log.test.js index 79fe1d20a8..451ef88a65 100644 --- a/test/client/utils/log.test.js +++ b/test/client/utils/log.test.js @@ -2,39 +2,64 @@ require("../../helpers/jsdom-setup"); -const { describe, it } = require("node:test"); +const { afterEach, beforeEach, describe, it, mock } = require("node:test"); const { expect } = require("expect"); const { fn } = require("jest-mock"); -const { log, setLogLevel } = require("../../../client-src/utils/log"); - describe("'log' function", () => { - it("exports a logger instance bound at module load", () => { - expect(log).toBeDefined(); - expect(typeof log).toBe("object"); - }); + let logger; + let loggerMockCtx; - it("setLogLevel forwards { level } to the logger when given default", () => { - const logger = { + beforeEach(() => { + logger = { getLogger: fn(), configureDefaultLogger: fn(), }; + // Mock the intermediate module that log.js imports directly. Mocking the + // deeper webpack runtime through the re-export chain doesn't propagate; + // mocking the file log.js actually requires does. + loggerMockCtx = mock.module("../../../client-src/modules/logger/index.js", { + defaultExport: logger, + }); + for (const key of Object.keys(require.cache)) { + if (key.includes("/client-src/")) delete require.cache[key]; + } + }); - setLogLevel("info", logger); + afterEach(() => { + loggerMockCtx.restore(); + for (const key of Object.keys(require.cache)) { + if (key.includes("/client-src/")) delete require.cache[key]; + } + }); + + /** + * Force a fresh evaluation of log.js so the mocked logger is observed. + * @returns {Promise} the freshly evaluated log module + */ + function freshLogModule() { + const url = require.resolve("../../../client-src/utils/log"); + return import(`file://${url}?t=${Date.now()}-${Math.random()}`); + } + + it("should set info as the default level and create logger", async () => { + await freshLogModule(); expect(logger.configureDefaultLogger).toHaveBeenCalledWith({ level: "info", }); + expect(logger.getLogger).toHaveBeenCalledWith("webpack-dev-server"); }); - it("should set log level via setLogLevel", (t) => { - const logger = { - getLogger: fn(), - configureDefaultLogger: fn(), - }; + it("should set log level via setLogLevel", async (t) => { + const { setLogLevel } = await freshLogModule(); + + // Drop the call recorded by the module-load setLogLevel(defaultLevel) + // so the snapshot only reflects what this test triggers. + logger.configureDefaultLogger.mockClear(); for (const level of ["none", "error", "warn", "info", "log", "verbose"]) { - setLogLevel(level, logger); + setLogLevel(level); } t.assert.snapshot(logger.configureDefaultLogger.mock.calls); From 22b482d91a215b39e0b326818cd07590778cf052 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 12:12:20 -0500 Subject: [PATCH 11/22] fixup! --- test/client/clients/WebsocketClient.test.js | 6 ++++++ test/helpers/jsdom-setup.js | 12 ------------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/test/client/clients/WebsocketClient.test.js b/test/client/clients/WebsocketClient.test.js index ba989e6b8e..89bef19143 100644 --- a/test/client/clients/WebsocketClient.test.js +++ b/test/client/clients/WebsocketClient.test.js @@ -9,6 +9,12 @@ const express = require("express"); const { spyOn } = require("jest-mock"); const ws = require("ws"); +// jsdom's built-in WebSocket stays in CONNECTING for unreachable URLs (good +// for silencing other client tests) but doesn't fully drive open/close +// against a real local server. Use Node's `ws` library here so this test +// can talk to the express+ws server below. +globalThis.WebSocket = ws; + const WebSocketClient = require("../../../client-src/clients/WebSocketClient").default; const { log } = require("../../../client-src/utils/log"); diff --git a/test/helpers/jsdom-setup.js b/test/helpers/jsdom-setup.js index 91e02bdf9d..5098e4dcea 100644 --- a/test/helpers/jsdom-setup.js +++ b/test/helpers/jsdom-setup.js @@ -77,17 +77,5 @@ for (const prop of props) { }); } -// Match Jest's jsdom-environment behavior: window === self === globalThis. -// (Jest's environment installs everything on the same object; jsdom's -// dom.window is normally separate from Node's globalThis.) globalThis.window = globalThis; globalThis.self = globalThis; - -// Replace jsdom's stub WebSocket with the Node `ws` library so client-side -// code that does `new WebSocket(url)` actually connects against test servers. -// (Jest's jsdom env did this via `customExportConditions: ["main"]`.) -try { - globalThis.WebSocket = require("ws"); -} catch { - // ws not installed; leave the jsdom WebSocket as-is. -} From 6cf6649130b54d1a4acddc6604ca5b272453c436 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 12:35:32 -0500 Subject: [PATCH 12/22] fixup! --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a233f846b8..f371a51783 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test \"test/**/*.test.js\" --test-timeout=400000 --test-force-exit", + "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", "test:coverage": "npm run test:only -- --experimental-test-coverage", "test:watch": "npm run test:only -- --watch", "test": "npm run test:coverage", From 14fb19fc11a46475d5406abde9e0057b3ad69afe Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 12:54:45 -0500 Subject: [PATCH 13/22] fixup! --- test/e2e/api.test.js | 7 ++++++- test/e2e/bonjour.test.js | 2 +- test/e2e/built-in-routes.test.js | 2 +- test/e2e/client-reconnect.test.js | 2 +- test/e2e/client.test.js | 2 +- test/e2e/compress.test.js | 2 +- test/e2e/headers.test.js | 2 +- test/e2e/history-api-fallback.test.js | 2 +- test/e2e/hot-and-live-reload.test.js | 2 +- test/e2e/mime-types.test.js | 2 +- test/e2e/module-federation.test.js | 2 +- test/e2e/server.test.js | 2 +- test/e2e/static-directory.test.js | 2 +- test/e2e/static-public-path.test.js | 2 +- test/e2e/watch-files.test.js | 2 +- 15 files changed, 20 insertions(+), 15 deletions(-) diff --git a/test/e2e/api.test.js b/test/e2e/api.test.js index 42e82bce9d..4d10c68a6d 100644 --- a/test/e2e/api.test.js +++ b/test/e2e/api.test.js @@ -11,7 +11,12 @@ const runBrowser = require("../helpers/run-browser"); const sessionSubscribe = require("../helpers/session-subscribe"); const port = require("../ports-map").api; -describe("API", () => { +// concurrency: 1 — force inner describes/its to run strictly sequentially. +// Each inner describe's beforeEach starts a Server on the same `port`; if +// node:test ever overlaps cleanup of one with start of the next, we hit +// EADDRINUSE. Serial guarantees server.stop() completes before the next +// server.start(). +describe("API", { concurrency: 1 }, () => { describe("WEBPACK_SERVE environment variable", () => { const OLD_ENV = process.env; let server; diff --git a/test/e2e/bonjour.test.js b/test/e2e/bonjour.test.js index f21cf78378..6d5cb4dbe0 100644 --- a/test/e2e/bonjour.test.js +++ b/test/e2e/bonjour.test.js @@ -10,7 +10,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map").bonjour; -describe("bonjour option", () => { +describe("bonjour option", { concurrency: 1 }, () => { let mockPublish; let mockUnpublishAll; let mockDestroy; diff --git a/test/e2e/built-in-routes.test.js b/test/e2e/built-in-routes.test.js index abf2608d34..0a7880550b 100644 --- a/test/e2e/built-in-routes.test.js +++ b/test/e2e/built-in-routes.test.js @@ -9,7 +9,7 @@ const multiConfig = require("../fixtures/multi-public-path-config/webpack.config const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map").routes; -describe("Built in routes", () => { +describe("Built in routes", { concurrency: 1 }, () => { describe("with simple config", () => { let compiler; let server; diff --git a/test/e2e/client-reconnect.test.js b/test/e2e/client-reconnect.test.js index c39c0a35f7..64d59ca13c 100644 --- a/test/e2e/client-reconnect.test.js +++ b/test/e2e/client-reconnect.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["client-reconnect-option"]; -describe("client.reconnect option", () => { +describe("client.reconnect option", { concurrency: 1 }, () => { describe("specified as true", () => { let compiler; let server; diff --git a/test/e2e/client.test.js b/test/e2e/client.test.js index 02e4410f96..0832af1b43 100644 --- a/test/e2e/client.test.js +++ b/test/e2e/client.test.js @@ -9,7 +9,7 @@ const runBrowser = require("../helpers/run-browser"); const sessionSubscribe = require("../helpers/session-subscribe"); const port = require("../ports-map")["client-option"]; -describe("client option", () => { +describe("client option", { concurrency: 1 }, () => { describe("default behaviour", () => { let compiler; let server; diff --git a/test/e2e/compress.test.js b/test/e2e/compress.test.js index 50b3748133..c555efe492 100644 --- a/test/e2e/compress.test.js +++ b/test/e2e/compress.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/simple-config-other/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["compress-option"]; -describe("compress option", () => { +describe("compress option", { concurrency: 1 }, () => { describe("enabled by default when not specified", () => { let compiler; let server; diff --git a/test/e2e/headers.test.js b/test/e2e/headers.test.js index 67400fd7d0..e25f94c11b 100644 --- a/test/e2e/headers.test.js +++ b/test/e2e/headers.test.js @@ -9,7 +9,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["headers-option"]; -describe("headers option", () => { +describe("headers option", { concurrency: 1 }, () => { describe("as a string", () => { let compiler; let server; diff --git a/test/e2e/history-api-fallback.test.js b/test/e2e/history-api-fallback.test.js index 25e76571f2..efd5a4d33c 100644 --- a/test/e2e/history-api-fallback.test.js +++ b/test/e2e/history-api-fallback.test.js @@ -12,7 +12,7 @@ const config = require("../fixtures/historyapifallback-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["history-api-fallback-option"]; -describe("historyApiFallback option", () => { +describe("historyApiFallback option", { concurrency: 1 }, () => { describe("as boolean", () => { let compiler; let server; diff --git a/test/e2e/hot-and-live-reload.test.js b/test/e2e/hot-and-live-reload.test.js index b112bc89d2..ea596527db 100644 --- a/test/e2e/hot-and-live-reload.test.js +++ b/test/e2e/hot-and-live-reload.test.js @@ -22,7 +22,7 @@ const cssFilePath = path.resolve( const INVALID_MESSAGE = "[webpack-dev-server] App updated. Recompiling..."; -describe("hot and live reload", () => { +describe("hot and live reload", { concurrency: 1 }, () => { const modes = [ { title: "should work and refresh content using hot module replacement", diff --git a/test/e2e/mime-types.test.js b/test/e2e/mime-types.test.js index c37e957467..17b420c4e0 100644 --- a/test/e2e/mime-types.test.js +++ b/test/e2e/mime-types.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/mime-types-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["mime-types-option"]; -describe("mimeTypes option", () => { +describe("mimeTypes option", { concurrency: 1 }, () => { describe("as an object with a remapped type", () => { let compiler; let server; diff --git a/test/e2e/module-federation.test.js b/test/e2e/module-federation.test.js index c50007e152..e89c6454ef 100644 --- a/test/e2e/module-federation.test.js +++ b/test/e2e/module-federation.test.js @@ -12,7 +12,7 @@ const pluginConfig = require("../fixtures/module-federation-config/webpack.plugi const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["module-federation"]; -describe("Module federation", () => { +describe("Module federation", { concurrency: 1 }, () => { describe("should work with simple multi-entry config", () => { let compiler; let server; diff --git a/test/e2e/server.test.js b/test/e2e/server.test.js index 32c93ff9c2..f97d571b96 100644 --- a/test/e2e/server.test.js +++ b/test/e2e/server.test.js @@ -26,7 +26,7 @@ const staticDirectory = path.resolve( "../fixtures/static-config/public", ); -describe("server option", () => { +describe("server option", { concurrency: 1 }, () => { describe("as string", () => { let compiler; let server; diff --git a/test/e2e/static-directory.test.js b/test/e2e/static-directory.test.js index b1c2453e6b..5cbe8d2b2b 100644 --- a/test/e2e/static-directory.test.js +++ b/test/e2e/static-directory.test.js @@ -16,7 +16,7 @@ const staticDirectory = path.resolve(__dirname, "../fixtures/static-config"); const publicDirectory = path.resolve(staticDirectory, "public"); const otherPublicDirectory = path.resolve(staticDirectory, "other"); -describe("static.directory option", () => { +describe("static.directory option", { concurrency: 1 }, () => { describe("to directory", () => { const nestedFile = path.resolve(publicDirectory, "assets/example.txt"); diff --git a/test/e2e/static-public-path.test.js b/test/e2e/static-public-path.test.js index 19136c414d..7c210a72c7 100644 --- a/test/e2e/static-public-path.test.js +++ b/test/e2e/static-public-path.test.js @@ -16,7 +16,7 @@ const otherPublicDirectory = path.resolve(staticDirectory, "other"); const staticPublicPath = "/serve-content-at-this-url"; const otherStaticPublicPath = "/serve-other-content-at-this-url"; -describe("static.publicPath option", () => { +describe("static.publicPath option", { concurrency: 1 }, () => { describe("to directory", () => { let compiler; let server; diff --git a/test/e2e/watch-files.test.js b/test/e2e/watch-files.test.js index 98a45a2944..1f2d113983 100644 --- a/test/e2e/watch-files.test.js +++ b/test/e2e/watch-files.test.js @@ -15,7 +15,7 @@ const watchDir = path.resolve( "../fixtures/watch-files-config/public", ); -describe("watchFiles option", () => { +describe("watchFiles option", { concurrency: 1 }, () => { describe("should work with string and path to file", () => { const file = path.join(watchDir, "assets/example.txt"); let compiler; From 53e9f5ed4adbe120b2e95b810fb8157f5d26139e Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 13:12:13 -0500 Subject: [PATCH 14/22] fixup! --- lib/Server.js | 11 +++++++++++ test/e2e/api.test.js | 7 +------ test/e2e/bonjour.test.js | 2 +- test/e2e/built-in-routes.test.js | 2 +- test/e2e/client-reconnect.test.js | 2 +- test/e2e/client.test.js | 2 +- test/e2e/compress.test.js | 2 +- test/e2e/headers.test.js | 2 +- test/e2e/history-api-fallback.test.js | 2 +- test/e2e/hot-and-live-reload.test.js | 2 +- test/e2e/mime-types.test.js | 2 +- test/e2e/module-federation.test.js | 2 +- test/e2e/server.test.js | 2 +- test/e2e/static-directory.test.js | 2 +- test/e2e/static-public-path.test.js | 2 +- test/e2e/watch-files.test.js | 2 +- 16 files changed, 26 insertions(+), 20 deletions(-) diff --git a/lib/Server.js b/lib/Server.js index 093e03ab62..70f131041f 100644 --- a/lib/Server.js +++ b/lib/Server.js @@ -3392,6 +3392,17 @@ class Server { } this.sockets = []; + + // Force-close any remaining connections that aren't in `this.sockets` + // (HTTP keep-alive idle connections from upstream clients, + // long-poll requests, sockets that were upgraded out of `connection` + // tracking, etc). Without this, `server.close()`'s callback can hang + // indefinitely waiting for connections that never close on their own + // — a problem that surfaces in test suites that rapidly start/stop + // servers on the same port (next start hits EADDRINUSE). + // `closeAllConnections` is available since Node.js 18.2. + /** @type {S & { closeAllConnections?: () => void }} */ + (this.server).closeAllConnections?.(); }) ); diff --git a/test/e2e/api.test.js b/test/e2e/api.test.js index 4d10c68a6d..42e82bce9d 100644 --- a/test/e2e/api.test.js +++ b/test/e2e/api.test.js @@ -11,12 +11,7 @@ const runBrowser = require("../helpers/run-browser"); const sessionSubscribe = require("../helpers/session-subscribe"); const port = require("../ports-map").api; -// concurrency: 1 — force inner describes/its to run strictly sequentially. -// Each inner describe's beforeEach starts a Server on the same `port`; if -// node:test ever overlaps cleanup of one with start of the next, we hit -// EADDRINUSE. Serial guarantees server.stop() completes before the next -// server.start(). -describe("API", { concurrency: 1 }, () => { +describe("API", () => { describe("WEBPACK_SERVE environment variable", () => { const OLD_ENV = process.env; let server; diff --git a/test/e2e/bonjour.test.js b/test/e2e/bonjour.test.js index 6d5cb4dbe0..f21cf78378 100644 --- a/test/e2e/bonjour.test.js +++ b/test/e2e/bonjour.test.js @@ -10,7 +10,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map").bonjour; -describe("bonjour option", { concurrency: 1 }, () => { +describe("bonjour option", () => { let mockPublish; let mockUnpublishAll; let mockDestroy; diff --git a/test/e2e/built-in-routes.test.js b/test/e2e/built-in-routes.test.js index 0a7880550b..abf2608d34 100644 --- a/test/e2e/built-in-routes.test.js +++ b/test/e2e/built-in-routes.test.js @@ -9,7 +9,7 @@ const multiConfig = require("../fixtures/multi-public-path-config/webpack.config const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map").routes; -describe("Built in routes", { concurrency: 1 }, () => { +describe("Built in routes", () => { describe("with simple config", () => { let compiler; let server; diff --git a/test/e2e/client-reconnect.test.js b/test/e2e/client-reconnect.test.js index 64d59ca13c..c39c0a35f7 100644 --- a/test/e2e/client-reconnect.test.js +++ b/test/e2e/client-reconnect.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["client-reconnect-option"]; -describe("client.reconnect option", { concurrency: 1 }, () => { +describe("client.reconnect option", () => { describe("specified as true", () => { let compiler; let server; diff --git a/test/e2e/client.test.js b/test/e2e/client.test.js index 0832af1b43..02e4410f96 100644 --- a/test/e2e/client.test.js +++ b/test/e2e/client.test.js @@ -9,7 +9,7 @@ const runBrowser = require("../helpers/run-browser"); const sessionSubscribe = require("../helpers/session-subscribe"); const port = require("../ports-map")["client-option"]; -describe("client option", { concurrency: 1 }, () => { +describe("client option", () => { describe("default behaviour", () => { let compiler; let server; diff --git a/test/e2e/compress.test.js b/test/e2e/compress.test.js index c555efe492..50b3748133 100644 --- a/test/e2e/compress.test.js +++ b/test/e2e/compress.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/simple-config-other/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["compress-option"]; -describe("compress option", { concurrency: 1 }, () => { +describe("compress option", () => { describe("enabled by default when not specified", () => { let compiler; let server; diff --git a/test/e2e/headers.test.js b/test/e2e/headers.test.js index e25f94c11b..67400fd7d0 100644 --- a/test/e2e/headers.test.js +++ b/test/e2e/headers.test.js @@ -9,7 +9,7 @@ const config = require("../fixtures/simple-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["headers-option"]; -describe("headers option", { concurrency: 1 }, () => { +describe("headers option", () => { describe("as a string", () => { let compiler; let server; diff --git a/test/e2e/history-api-fallback.test.js b/test/e2e/history-api-fallback.test.js index efd5a4d33c..25e76571f2 100644 --- a/test/e2e/history-api-fallback.test.js +++ b/test/e2e/history-api-fallback.test.js @@ -12,7 +12,7 @@ const config = require("../fixtures/historyapifallback-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["history-api-fallback-option"]; -describe("historyApiFallback option", { concurrency: 1 }, () => { +describe("historyApiFallback option", () => { describe("as boolean", () => { let compiler; let server; diff --git a/test/e2e/hot-and-live-reload.test.js b/test/e2e/hot-and-live-reload.test.js index ea596527db..b112bc89d2 100644 --- a/test/e2e/hot-and-live-reload.test.js +++ b/test/e2e/hot-and-live-reload.test.js @@ -22,7 +22,7 @@ const cssFilePath = path.resolve( const INVALID_MESSAGE = "[webpack-dev-server] App updated. Recompiling..."; -describe("hot and live reload", { concurrency: 1 }, () => { +describe("hot and live reload", () => { const modes = [ { title: "should work and refresh content using hot module replacement", diff --git a/test/e2e/mime-types.test.js b/test/e2e/mime-types.test.js index 17b420c4e0..c37e957467 100644 --- a/test/e2e/mime-types.test.js +++ b/test/e2e/mime-types.test.js @@ -8,7 +8,7 @@ const config = require("../fixtures/mime-types-config/webpack.config"); const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["mime-types-option"]; -describe("mimeTypes option", { concurrency: 1 }, () => { +describe("mimeTypes option", () => { describe("as an object with a remapped type", () => { let compiler; let server; diff --git a/test/e2e/module-federation.test.js b/test/e2e/module-federation.test.js index e89c6454ef..c50007e152 100644 --- a/test/e2e/module-federation.test.js +++ b/test/e2e/module-federation.test.js @@ -12,7 +12,7 @@ const pluginConfig = require("../fixtures/module-federation-config/webpack.plugi const runBrowser = require("../helpers/run-browser"); const port = require("../ports-map")["module-federation"]; -describe("Module federation", { concurrency: 1 }, () => { +describe("Module federation", () => { describe("should work with simple multi-entry config", () => { let compiler; let server; diff --git a/test/e2e/server.test.js b/test/e2e/server.test.js index f97d571b96..32c93ff9c2 100644 --- a/test/e2e/server.test.js +++ b/test/e2e/server.test.js @@ -26,7 +26,7 @@ const staticDirectory = path.resolve( "../fixtures/static-config/public", ); -describe("server option", { concurrency: 1 }, () => { +describe("server option", () => { describe("as string", () => { let compiler; let server; diff --git a/test/e2e/static-directory.test.js b/test/e2e/static-directory.test.js index 5cbe8d2b2b..b1c2453e6b 100644 --- a/test/e2e/static-directory.test.js +++ b/test/e2e/static-directory.test.js @@ -16,7 +16,7 @@ const staticDirectory = path.resolve(__dirname, "../fixtures/static-config"); const publicDirectory = path.resolve(staticDirectory, "public"); const otherPublicDirectory = path.resolve(staticDirectory, "other"); -describe("static.directory option", { concurrency: 1 }, () => { +describe("static.directory option", () => { describe("to directory", () => { const nestedFile = path.resolve(publicDirectory, "assets/example.txt"); diff --git a/test/e2e/static-public-path.test.js b/test/e2e/static-public-path.test.js index 7c210a72c7..19136c414d 100644 --- a/test/e2e/static-public-path.test.js +++ b/test/e2e/static-public-path.test.js @@ -16,7 +16,7 @@ const otherPublicDirectory = path.resolve(staticDirectory, "other"); const staticPublicPath = "/serve-content-at-this-url"; const otherStaticPublicPath = "/serve-other-content-at-this-url"; -describe("static.publicPath option", { concurrency: 1 }, () => { +describe("static.publicPath option", () => { describe("to directory", () => { let compiler; let server; diff --git a/test/e2e/watch-files.test.js b/test/e2e/watch-files.test.js index 1f2d113983..98a45a2944 100644 --- a/test/e2e/watch-files.test.js +++ b/test/e2e/watch-files.test.js @@ -15,7 +15,7 @@ const watchDir = path.resolve( "../fixtures/watch-files-config/public", ); -describe("watchFiles option", { concurrency: 1 }, () => { +describe("watchFiles option", () => { describe("should work with string and path to file", () => { const file = path.join(watchDir, "assets/example.txt"); let compiler; From 3ada1ca95a3653e8ee62f8323622fd4f8687612d Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 13:47:04 -0500 Subject: [PATCH 15/22] fixup! --- .../__snapshots__/basic.test.js.snap.webpack5 | 12 +- .../colors.test.js.snap.webpack5 | 10 +- .../host-option.test.js.snap.webpack5 | 22 +- .../ipc-option.test.js.snap.webpack5 | 4 +- .../port-option.test.js.snap.webpack5 | 4 +- .../static-option.test.js.snap.webpack5 | 24 +- .../watchFiles-option.test.js.snap.webpack5 | 6 +- test/cli/basic.test.js | 14 +- test/cli/colors.test.js | 20 +- test/cli/host-option.test.js | 22 +- test/cli/ipc-option.test.js | 4 +- test/cli/port-option.test.js | 8 +- test/cli/static-option.test.js | 48 +- test/cli/watchFiles-option.test.js | 12 +- .../allowed-hosts.test.js.snap.webpack5 | 130 ++-- .../__snapshots__/api.test.js.snap.webpack5 | 96 +-- .../bonjour.test.js.snap.webpack5 | 30 +- .../built-in-routes.test.js.snap.webpack5 | 78 +-- .../client-reconnect.test.js.snap.webpack5 | 22 +- .../client.test.js.snap.webpack5 | 44 +- .../compress.test.js.snap.webpack5 | 42 +- .../__snapshots__/entry.test.js.snap.webpack5 | 38 +- .../headers.test.js.snap.webpack5 | 90 +-- ...history-api-fallback.test.js.snap.webpack5 | 154 ++--- .../__snapshots__/host.test.js.snap.webpack5 | 120 ++-- .../hot-and-live-reload.test.js.snap.webpack5 | 118 ++-- .../__snapshots__/ipc.test.js.snap.webpack5 | 8 +- .../mime-types.test.js.snap.webpack5 | 30 +- .../module-federation.test.js.snap.webpack5 | 24 +- .../multi-compiler.test.js.snap.webpack5 | 86 +-- .../on-listening.test.js.snap.webpack5 | 32 +- .../overlay.test.js.snap.webpack5 | 468 +++++++------- .../__snapshots__/port.test.js.snap.webpack5 | 36 +- .../server.test.js.snap.webpack5 | 208 +++--- .../setup-exit-signals.test.js.snap.webpack5 | 18 +- .../setup-middlewares.test.js.snap.webpack5 | 46 +- .../static-directory.test.js.snap.webpack5 | 120 ++-- .../static-public-path.test.js.snap.webpack5 | 214 +++--- .../target.test.js.snap.webpack5 | 50 +- .../watch-files.test.js.snap.webpack5 | 84 +-- ...socket-communication.test.js.snap.webpack5 | 12 +- ...eb-socket-server-url.test.js.snap.webpack5 | 136 ++-- .../web-socket-server.test.js.snap.webpack5 | 4 +- test/e2e/allowed-hosts.test.js | 196 ++---- test/e2e/api.test.js | 146 ++--- test/e2e/bonjour.test.js | 40 +- test/e2e/built-in-routes.test.js | 88 +-- test/e2e/client-reconnect.test.js | 26 +- test/e2e/client.test.js | 42 +- test/e2e/compress.test.js | 42 +- test/e2e/entry.test.js | 54 +- test/e2e/headers.test.js | 106 +-- test/e2e/history-api-fallback.test.js | 210 ++---- test/e2e/host.test.js | 18 +- test/e2e/hot-and-live-reload.test.js | 46 +- test/e2e/ipc.test.js | 18 +- test/e2e/lazy-compilation.test.js | 12 +- test/e2e/mime-types.test.js | 28 +- test/e2e/module-federation.test.js | 36 +- test/e2e/multi-compiler.test.js | 108 ++-- test/e2e/on-listening.test.js | 36 +- test/e2e/overlay.test.js | 608 +++++++----------- test/e2e/port.test.js | 6 +- test/e2e/server.test.js | 234 ++----- test/e2e/setup-exit-signals.test.js | 10 +- test/e2e/setup-middlewares.test.js | 72 +-- test/e2e/static-directory.test.js | 160 ++--- test/e2e/static-public-path.test.js | 318 +++------ test/e2e/target.test.js | 32 +- test/e2e/watch-files.test.js | 134 ++-- test/e2e/web-socket-communication.test.js | 18 +- test/e2e/web-socket-server-url.test.js | 214 ++---- test/e2e/web-socket-server.test.js | 6 +- 73 files changed, 2321 insertions(+), 3491 deletions(-) diff --git a/test/cli/__snapshots__/basic.test.js.snap.webpack5 b/test/cli/__snapshots__/basic.test.js.snap.webpack5 index 722e8d9701..d9198c24f1 100644 --- a/test/cli/__snapshots__/basic.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/basic.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`basic > basic > should accept the promise function of webpack.config.js > stderr 1`] = ` +exports[`basic > basic > should accept the promise function of webpack.config.js 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,21 +6,21 @@ exports[`basic > basic > should accept the promise function of webpack.config.js [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic > basic > should work using "--host localhost --port " > stderr 1`] = ` +exports[`basic > basic > should work 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic > basic > should work using multi compiler mode > stderr 1`] = ` +exports[`basic > basic > should work using "--host localhost --port " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ - [webpack-dev-server] On Your Network (IPv4): http://:/ - [webpack-dev-server] On Your Network (IPv6): http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`basic > basic > should work > stderr 1`] = ` +exports[`basic > basic > should work using multi compiler mode 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/colors.test.js.snap.webpack5 b/test/cli/__snapshots__/colors.test.js.snap.webpack5 index 9fac347dca..fe59574bb5 100644 --- a/test/cli/__snapshots__/colors.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/colors.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`colors > should work and do not use colors using configuration with disabled colors > stderr 1`] = ` +exports[`colors > should work and do not use colors using configuration with disabled colors 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,7 +6,7 @@ exports[`colors > should work and do not use colors using configuration with dis [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors > should work do not use colors using "--no-color" > stderr 1`] = ` +exports[`colors > should work do not use colors using "--no-color" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -14,7 +14,7 @@ exports[`colors > should work do not use colors using "--no-color" > stderr 1`] [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors > should work use colors by default > stderr 1`] = ` +exports[`colors > should work use colors by default 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -22,7 +22,7 @@ exports[`colors > should work use colors by default > stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors > should work use colors using "--color" > stderr 1`] = ` +exports[`colors > should work use colors using "--color" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -30,7 +30,7 @@ exports[`colors > should work use colors using "--color" > stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`colors > should work use colors using configuration with enabled colors > stderr 1`] = ` +exports[`colors > should work use colors using configuration with enabled colors 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/host-option.test.js.snap.webpack5 b/test/cli/__snapshots__/host-option.test.js.snap.webpack5 index a0d2c4e342..ccb658ce70 100644 --- a/test/cli/__snapshots__/host-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/host-option.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`"host" CLI option > should work using "--host ::" (IPv6) > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host 0.0.0.0" (IPv4) 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,45 +6,45 @@ exports[`"host" CLI option > should work using "--host ::" (IPv6) > stderr 1`] = [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host ::1" (IPv6) > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host 127.0.0.1" (IPv4) 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host " > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host ::" (IPv6) 1`] = ` " [webpack-dev-server] Project is running at: + Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ + [webpack-dev-server] On Your Network (IPv6): http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host 0.0.0.0" (IPv4) > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host ::1" (IPv6) 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ - [webpack-dev-server] On Your Network (IPv4): http://:/ - [webpack-dev-server] On Your Network (IPv6): http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host 127.0.0.1" (IPv4) > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host " 1`] = ` " [webpack-dev-server] Project is running at: - Loopback: http://localhost:/, http://:/, http://[]:/ + [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host local-ip" > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host local-ip" 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host local-ipv4" > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host local-ipv4" 1`] = ` " [webpack-dev-server] Project is running at: [webpack-dev-server] On Your Network (IPv4): http://:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"host" CLI option > should work using "--host localhost" > stderr 1`] = ` +exports[`"host" CLI option > should work using "--host localhost" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] Content not from webpack is served from '/public' directory" diff --git a/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 b/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 index cc1cf0204c..e32e695559 100644 --- a/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/ipc-option.test.js.snap.webpack5 @@ -1,9 +1,9 @@ -exports[`"ipc" CLI option > should work using "--ipc" > stderr 1`] = ` +exports[`"ipc" CLI option > should work using "--ipc" 1`] = ` " [webpack-dev-server] Project is running at: "/webpack-dev-server.sock" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"ipc" CLI option > should work using "--ipc=" > stderr 1`] = ` +exports[`"ipc" CLI option > should work using "--ipc=" 1`] = ` " [webpack-dev-server] Project is running at: "/webpack-dev-server.cli.sock" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; diff --git a/test/cli/__snapshots__/port-option.test.js.snap.webpack5 b/test/cli/__snapshots__/port-option.test.js.snap.webpack5 index aa6f57772c..e9b950d2dd 100644 --- a/test/cli/__snapshots__/port-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/port-option.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`"port" CLI option > should work using "--port " > stderr 1`] = ` +exports[`"port" CLI option > should work using "--port " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,7 +6,7 @@ exports[`"port" CLI option > should work using "--port " > stderr 1`] = [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"port" CLI option > should work using "--port auto" > stderr 1`] = ` +exports[`"port" CLI option > should work using "--port auto" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/static-option.test.js.snap.webpack5 b/test/cli/__snapshots__/static-option.test.js.snap.webpack5 index 2f0e95b0c8..68f0f803b8 100644 --- a/test/cli/__snapshots__/static-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/static-option.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`"static" CLI option > should work using "--no-static-serve-index" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--no-static-serve-index" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,7 +6,7 @@ exports[`"static" CLI option > should work using "--no-static-serve-index" > std [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--no-static-watch" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--no-static-watch" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -14,7 +14,7 @@ exports[`"static" CLI option > should work using "--no-static-watch" > stderr 1` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--static new-static --static other-static" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static new-static --static other-static" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -22,7 +22,7 @@ exports[`"static" CLI option > should work using "--static new-static --static o [webpack-dev-server] Content not from webpack is served from 'new-static, other-static' directory" `; -exports[`"static" CLI option > should work using "--static new-static" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static new-static" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -30,7 +30,7 @@ exports[`"static" CLI option > should work using "--static new-static" > stderr [webpack-dev-server] Content not from webpack is served from 'new-static' directory" `; -exports[`"static" CLI option > should work using "--static" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -38,7 +38,7 @@ exports[`"static" CLI option > should work using "--static" > stderr 1`] = ` [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--static-directory static-dir" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-directory static-dir" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -46,7 +46,7 @@ exports[`"static" CLI option > should work using "--static-directory static-dir" [webpack-dev-server] Content not from webpack is served from 'static-dir' directory" `; -exports[`"static" CLI option > should work using "--static-public-path /public" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-public-path /public" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -54,7 +54,7 @@ exports[`"static" CLI option > should work using "--static-public-path /public" [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--static-public-path-reset" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-public-path-reset" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -62,7 +62,7 @@ exports[`"static" CLI option > should work using "--static-public-path-reset" > [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--static-reset --static-directory new-static-directory" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-reset --static-directory new-static-directory" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -70,7 +70,7 @@ exports[`"static" CLI option > should work using "--static-reset --static-direct [webpack-dev-server] Content not from webpack is served from 'new-static-directory' directory" `; -exports[`"static" CLI option > should work using "--static-reset" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-reset" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -78,7 +78,7 @@ exports[`"static" CLI option > should work using "--static-reset" > stderr 1`] = [webpack-dev-server] Content not from webpack is served from 'new-static-after-reset' directory" `; -exports[`"static" CLI option > should work using "--static-serve-index" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-serve-index" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -86,7 +86,7 @@ exports[`"static" CLI option > should work using "--static-serve-index" > stderr [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"static" CLI option > should work using "--static-watch" > stderr 1`] = ` +exports[`"static" CLI option > should work using "--static-watch" 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 b/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 index 5c28edbcab..5662d95a2e 100644 --- a/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/watchFiles-option.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`"watchFiles" CLI option > should work using "--watch-files --watch-files " > stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files --watch-files " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -6,7 +6,7 @@ exports[`"watchFiles" CLI option > should work using "--watch-files --wa [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"watchFiles" CLI option > should work using "--watch-files " > stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ @@ -14,7 +14,7 @@ exports[`"watchFiles" CLI option > should work using "--watch-files " > s [webpack-dev-server] Content not from webpack is served from '/public' directory" `; -exports[`"watchFiles" CLI option > should work using "--watch-files-reset --watch-files " > stderr 1`] = ` +exports[`"watchFiles" CLI option > should work using "--watch-files-reset --watch-files " 1`] = ` " [webpack-dev-server] Project is running at: Loopback: http://localhost:/, http://:/, http://[]:/ [webpack-dev-server] On Your Network (IPv4): http://:/ diff --git a/test/cli/basic.test.js b/test/cli/basic.test.js index 44d1eef656..11fe928de0 100644 --- a/test/cli/basic.test.js +++ b/test/cli/basic.test.js @@ -29,9 +29,7 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--host localhost --port "', async (t) => { @@ -43,7 +41,7 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it("should accept the promise function of webpack.config.js", async (t) => { @@ -58,9 +56,7 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it("should work using multi compiler mode", async (t) => { @@ -75,9 +71,7 @@ describe("basic", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it("should exit the process when SIGINT is detected", () => diff --git a/test/cli/colors.test.js b/test/cli/colors.test.js index 6cb999dccf..8ed4ab9db1 100644 --- a/test/cli/colors.test.js +++ b/test/cli/colors.test.js @@ -25,9 +25,7 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); expect(stderr).toContain("\u001B["); }); @@ -35,9 +33,7 @@ describe("colors", () => { const { exitCode, stderr } = await testBin(["--port", port, "--color"]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); expect(stderr).toContain("\u001B["); }); @@ -45,9 +41,7 @@ describe("colors", () => { const { exitCode, stderr } = await testBin(["--port", port, "--no-color"]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); expect(stderr).not.toContain("\u001B["); }); @@ -60,9 +54,7 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); expect(stderr).toContain("\u001B["); }); @@ -75,9 +67,7 @@ describe("colors", () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); expect(stderr).not.toContain("\u001B["); }); }); diff --git a/test/cli/host-option.test.js b/test/cli/host-option.test.js index 898428e57e..2d6d83932d 100644 --- a/test/cli/host-option.test.js +++ b/test/cli/host-option.test.js @@ -21,9 +21,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--host ::" (IPv6)', async (t) => { @@ -35,9 +33,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--host ::1" (IPv6)', async (t) => { @@ -49,7 +45,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it('should work using "--host localhost"', async (t) => { @@ -61,7 +57,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it('should work using "--host 127.0.0.1" (IPv4)', async (t) => { @@ -73,7 +69,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it('should work using "--host "', async (t) => { @@ -85,7 +81,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it.skip('should work using "--host "', async (t) => { @@ -97,7 +93,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it('should work using "--host local-ip"', async (t) => { @@ -109,7 +105,7 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it.skip('should work using "--host local-ip" take the first network found', async () => { @@ -240,6 +236,6 @@ describe('"host" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); }); diff --git a/test/cli/ipc-option.test.js b/test/cli/ipc-option.test.js index 5efe61f19d..8d4dbe40b8 100644 --- a/test/cli/ipc-option.test.js +++ b/test/cli/ipc-option.test.js @@ -11,7 +11,7 @@ describe('"ipc" CLI option', () => { const { exitCode, stderr } = await testBin(["--ipc"]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); it('should work using "--ipc="', async (t) => { @@ -23,6 +23,6 @@ describe('"ipc" CLI option', () => { const { exitCode, stderr } = await testBin(["--ipc", ipc]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => t.assert.snapshot(normalizeStderr(stderr))); + t.assert.snapshot(normalizeStderr(stderr)); }); }); diff --git a/test/cli/port-option.test.js b/test/cli/port-option.test.js index 355b7554a5..05361d83ca 100644 --- a/test/cli/port-option.test.js +++ b/test/cli/port-option.test.js @@ -10,17 +10,13 @@ describe('"port" CLI option', () => { const { exitCode, stderr } = await testBin(["--port", port]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--port auto"', async (t) => { const { exitCode, stderr } = await testBin(["--port", "auto"]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); }); diff --git a/test/cli/static-option.test.js b/test/cli/static-option.test.js index 15cf980015..e968c48c44 100644 --- a/test/cli/static-option.test.js +++ b/test/cli/static-option.test.js @@ -10,9 +10,7 @@ describe('"static" CLI option', () => { const { exitCode, stderr } = await testBin(["--port", port, "--static"]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static new-static"', async (t) => { @@ -24,9 +22,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static new-static --static other-static"', async (t) => { @@ -40,9 +36,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-reset"', async (t) => { @@ -55,9 +49,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-reset --static-directory new-static-directory"', async (t) => { @@ -70,9 +62,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-directory static-dir"', async (t) => { @@ -84,9 +74,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-public-path /public"', async (t) => { @@ -98,9 +86,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-public-path-reset"', async (t) => { @@ -113,9 +99,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-serve-index"', async (t) => { @@ -126,9 +110,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--no-static-serve-index"', async (t) => { @@ -139,9 +121,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--static-watch"', async (t) => { @@ -152,9 +132,7 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--no-static-watch"', async (t) => { @@ -165,8 +143,6 @@ describe('"static" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); }); diff --git a/test/cli/watchFiles-option.test.js b/test/cli/watchFiles-option.test.js index 7433be355a..f95752b11b 100644 --- a/test/cli/watchFiles-option.test.js +++ b/test/cli/watchFiles-option.test.js @@ -18,9 +18,7 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--watch-files --watch-files "', async (t) => { @@ -40,9 +38,7 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); it('should work using "--watch-files-reset --watch-files "', async (t) => { @@ -57,8 +53,6 @@ describe('"watchFiles" CLI option', () => { ]); expect(exitCode).toBe(0); - await t.test("stderr", (t) => - t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })), - ); + t.assert.snapshot(normalizeStderr(stderr, { ipv6: true })); }); }); diff --git a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 index ff6142425c..8fb03e2b2e 100644 --- a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 @@ -1,88 +1,88 @@ -exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > console messages 1`] = ` +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts 1`] = ` +200 +`; + +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts 2`] = ` [] `; -exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > page errors 1`] = ` +exports[`allowed hosts > check host headers > should allow hosts in allowedHosts 3`] = ` [] `; -exports[`allowed hosts > check host headers > should allow hosts in allowedHosts > response status 1`] = ` +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > console messages 1`] = ` +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts 2`] = ` [] `; -exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > page errors 1`] = ` +exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts 3`] = ` [] `; -exports[`allowed hosts > check host headers > should allow hosts that pass a wildcard in allowedHosts > response status 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > console messages 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto 2`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > page errors 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto 3`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` if options.allowedHosts is auto > response status 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > console messages 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto 2`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > page errors 1`] = ` +exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto 3`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow \`localhost\` subdomain if options.allowedHosts is auto > response status 1`] = ` +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > console messages 1`] = ` +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all 2`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > page errors 1`] = ` +exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all 3`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow any host if options.allowedHosts is all > response status 1`] = ` +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > console messages 1`] = ` +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto 2`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > page errors 1`] = ` +exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto 3`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow value from the \`host\` options if options.allowedHosts is auto > response status 1`] = ` +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto 1`] = ` 200 `; -exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > console messages 1`] = ` +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto 2`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > page errors 1`] = ` +exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto 3`] = ` [] `; -exports[`allowed hosts > check host headers > should always allow value of the \`host\` option from the \`client.webSocketURL\` option if options.allowedHosts is auto > response status 1`] = ` -200 -`; - -exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -90,11 +90,11 @@ exports[`allowed hosts > should connect web socket client using "[::1] host to w ] `; -exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -102,11 +102,11 @@ exports[`allowed hosts > should connect web socket client using "0.0.0.0" host t ] `; -exports[`allowed hosts > should connect web socket client using "0.0.0.0" host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -114,11 +114,11 @@ exports[`allowed hosts > should connect web socket client using "127.0.0.1" host ] `; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server by default ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -126,11 +126,11 @@ exports[`allowed hosts > should connect web socket client using "127.0.0.1" host ] `; -exports[`allowed hosts > should connect web socket client using "127.0.0.1" host to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "[::1] host to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -138,11 +138,11 @@ exports[`allowed hosts > should connect web socket client using "chrome-extensio ] `; -exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "chrome-extension:" protocol to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -150,11 +150,11 @@ exports[`allowed hosts > should connect web socket client using "file:" protocol ] `; -exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "file:" protocol to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -162,11 +162,11 @@ exports[`allowed hosts > should connect web socket client using "localhost" host ] `; -exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using "localhost" host to web socket server by default ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -174,11 +174,11 @@ exports[`allowed hosts > should connect web socket client using custom hostname ] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -186,11 +186,11 @@ exports[`allowed hosts > should connect web socket client using custom hostname ] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the "all" value in array ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -198,11 +198,11 @@ exports[`allowed hosts > should connect web socket client using custom hostname ] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -210,11 +210,11 @@ exports[`allowed hosts > should connect web socket client using custom hostname ] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the custom hostname value starting with dot ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -222,11 +222,11 @@ exports[`allowed hosts > should connect web socket client using custom hostname ] `; -exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom hostname to web socket server with the multiple custom hostname values ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -234,11 +234,11 @@ exports[`allowed hosts > should connect web socket client using custom sub hostn ] `; -exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using custom sub hostname to web socket server with the custom hostname value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -246,11 +246,11 @@ exports[`allowed hosts > should connect web socket client using localhost to web ] `; -exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using localhost to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) console messages 1`] = ` +exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -258,25 +258,25 @@ exports[`allowed hosts > should connect web socket client using origin header co ] `; -exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") > (work) page errors 1`] = ` +exports[`allowed hosts > should connect web socket client using origin header containing an IP address with the custom hostname value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > console messages 1`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 1`] = ` [ "Failed to load resource: the server responded with a status of 403 (Forbidden)", ] `; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > html 1`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 1`] = ` "
Invalid Host header
" `; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") > page errors 1`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) console messages 1`] = ` +exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -287,11 +287,11 @@ exports[`allowed hosts > should disconnect web client using origin header contai ] `; -exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") > (work) page errors 1`] = ` +exports[`allowed hosts > should disconnect web client using origin header containing an IP address with the "auto" value ("ws") 2`] = ` [] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -302,11 +302,11 @@ exports[`allowed hosts > should disconnect web socket client using custom hostna ] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") > page errors 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header ("ws") 2`] = ` [] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -317,11 +317,11 @@ exports[`allowed hosts > should disconnect web socket client using custom hostna ] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") > page errors 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "host" header when "server: 'https'" is enabled ("ws") 2`] = ` [] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") > console messages 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -332,6 +332,6 @@ exports[`allowed hosts > should disconnect web socket client using custom hostna ] `; -exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") > page errors 1`] = ` +exports[`allowed hosts > should disconnect web socket client using custom hostname from web socket server with the "auto" value based on the "origin" header ("ws") 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/api.test.js.snap.webpack5 b/test/e2e/__snapshots__/api.test.js.snap.webpack5 index 81f3a4ae31..6b5d925211 100644 --- a/test/e2e/__snapshots__/api.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/api.test.js.snap.webpack5 @@ -1,4 +1,8 @@ -exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > console messages 1`] = ` +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback 1`] = ` +200 +`; + +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,15 +10,15 @@ exports[`API > Invalidate callback > should use the default \`noop\` callback wh ] `; -exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > page errors 1`] = ` +exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback 3`] = ` [] `; -exports[`API > Invalidate callback > should use the default \`noop\` callback when invalidate is called without any callback > response status 1`] = ` +exports[`API > Invalidate callback > should use the provided \`callback\` function 1`] = ` 200 `; -exports[`API > Invalidate callback > should use the provided \`callback\` function > console messages 1`] = ` +exports[`API > Invalidate callback > should use the provided \`callback\` function 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -22,15 +26,19 @@ exports[`API > Invalidate callback > should use the provided \`callback\` functi ] `; -exports[`API > Invalidate callback > should use the provided \`callback\` function > page errors 1`] = ` +exports[`API > Invalidate callback > should use the provided \`callback\` function 3`] = ` [] `; -exports[`API > Invalidate callback > should use the provided \`callback\` function > response status 1`] = ` +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object 1`] = ` +"ws://test.host:8156/ws" +`; + +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object 2`] = ` 200 `; -exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > console messages 1`] = ` +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -42,19 +50,15 @@ exports[`API > Server.checkHostHeader > should allow URLs with scheme for checki ] `; -exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > page errors 1`] = ` +exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object 4`] = ` [] `; -exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > response status 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) 1`] = ` 200 `; -exports[`API > Server.checkHostHeader > should allow URLs with scheme for checking origin when the "option.client.webSocketURL" is object > web socket URL 1`] = ` -"ws://test.host:8156/ws" -`; - -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -62,15 +66,15 @@ exports[`API > Server.getFreePort > should retry finding the port for up to defa ] `; -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > page errors 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) 3`] = ` [] `; -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (number) > response status 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) 1`] = ` 200 `; -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -78,15 +82,15 @@ exports[`API > Server.getFreePort > should retry finding the port for up to defa ] `; -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > page errors 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) 3`] = ` [] `; -exports[`API > Server.getFreePort > should retry finding the port for up to defaultPortRetry times (string) > response status 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy 1`] = ` 200 `; -exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > console messages 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -94,15 +98,15 @@ exports[`API > Server.getFreePort > should retry finding the port when serial po ] `; -exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > page errors 1`] = ` +exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy 3`] = ` [] `; -exports[`API > Server.getFreePort > should retry finding the port when serial ports are busy > response status 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is \`null\` 1`] = ` 200 `; -exports[`API > Server.getFreePort > should return the port when the port is \`null\` > console messages 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is \`null\` 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -110,15 +114,15 @@ exports[`API > Server.getFreePort > should return the port when the port is \`nu ] `; -exports[`API > Server.getFreePort > should return the port when the port is \`null\` > page errors 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is \`null\` 3`] = ` [] `; -exports[`API > Server.getFreePort > should return the port when the port is \`null\` > response status 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is undefined 1`] = ` 200 `; -exports[`API > Server.getFreePort > should return the port when the port is undefined > console messages 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is undefined 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -126,19 +130,19 @@ exports[`API > Server.getFreePort > should return the port when the port is unde ] `; -exports[`API > Server.getFreePort > should return the port when the port is undefined > page errors 1`] = ` +exports[`API > Server.getFreePort > should return the port when the port is undefined 3`] = ` [] `; -exports[`API > Server.getFreePort > should return the port when the port is undefined > response status 1`] = ` -200 -`; - exports[`API > Server.getFreePort > should throw the error when the port isn't found 1`] = ` "busy" `; -exports[`API > WEBPACK_SERVE environment variable > should be present > console messages 1`] = ` +exports[`API > WEBPACK_SERVE environment variable > should be present 1`] = ` +200 +`; + +exports[`API > WEBPACK_SERVE environment variable > should be present 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -146,15 +150,11 @@ exports[`API > WEBPACK_SERVE environment variable > should be present > console ] `; -exports[`API > WEBPACK_SERVE environment variable > should be present > page errors 1`] = ` +exports[`API > WEBPACK_SERVE environment variable > should be present 3`] = ` [] `; -exports[`API > WEBPACK_SERVE environment variable > should be present > response status 1`] = ` -200 -`; - -exports[`API > latest async API > should work and allow to rerun dev server multiple times > console messages 1`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -162,6 +162,10 @@ exports[`API > latest async API > should work and allow to rerun dev server mult ] `; +exports[`API > latest async API > should work and allow to rerun dev server multiple times 4`] = ` +[] +`; + exports[`API > latest async API > should work and allow to rerun dev server multiple times > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -170,15 +174,11 @@ exports[`API > latest async API > should work and allow to rerun dev server mult ] `; -exports[`API > latest async API > should work and allow to rerun dev server multiple times > page errors 1`] = ` -[] -`; - exports[`API > latest async API > should work and allow to rerun dev server multiple times > page errors 2`] = ` [] `; -exports[`API > latest async API > should work when using configured manually > console messages 1`] = ` +exports[`API > latest async API > should work when using configured manually 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -186,11 +186,11 @@ exports[`API > latest async API > should work when using configured manually > c ] `; -exports[`API > latest async API > should work when using configured manually > page errors 1`] = ` +exports[`API > latest async API > should work when using configured manually 2`] = ` [] `; -exports[`API > latest async API > should work with async API > console messages 1`] = ` +exports[`API > latest async API > should work with async API 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -198,11 +198,11 @@ exports[`API > latest async API > should work with async API > console messages ] `; -exports[`API > latest async API > should work with async API > page errors 1`] = ` +exports[`API > latest async API > should work with async API 2`] = ` [] `; -exports[`API > latest async API > should work with callback API > console messages 1`] = ` +exports[`API > latest async API > should work with callback API 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -210,6 +210,6 @@ exports[`API > latest async API > should work with callback API > console messag ] `; -exports[`API > latest async API > should work with callback API > page errors 1`] = ` +exports[`API > latest async API > should work with callback API 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 b/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 index bf04b05c2d..052b86ba5d 100644 --- a/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/bonjour.test.js.snap.webpack5 @@ -1,4 +1,8 @@ -exports[`bonjour option > as object > should apply bonjour options > console messages 1`] = ` +exports[`bonjour option > as object > should apply bonjour options 1`] = ` +200 +`; + +exports[`bonjour option > as object > should apply bonjour options 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,15 +10,15 @@ exports[`bonjour option > as object > should apply bonjour options > console mes ] `; -exports[`bonjour option > as object > should apply bonjour options > page errors 1`] = ` +exports[`bonjour option > as object > should apply bonjour options 3`] = ` [] `; -exports[`bonjour option > as object > should apply bonjour options > response status 1`] = ` +exports[`bonjour option > as true > should call bonjour with correct params 1`] = ` 200 `; -exports[`bonjour option > as true > should call bonjour with correct params > console messages 1`] = ` +exports[`bonjour option > as true > should call bonjour with correct params 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -22,15 +26,15 @@ exports[`bonjour option > as true > should call bonjour with correct params > co ] `; -exports[`bonjour option > as true > should call bonjour with correct params > page errors 1`] = ` +exports[`bonjour option > as true > should call bonjour with correct params 3`] = ` [] `; -exports[`bonjour option > as true > should call bonjour with correct params > response status 1`] = ` +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options 1`] = ` 200 `; -exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > console messages 1`] = ` +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,15 +42,15 @@ exports[`bonjour option > bonjour object and 'server' option > should apply bonj ] `; -exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > page errors 1`] = ` +exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options 3`] = ` [] `; -exports[`bonjour option > bonjour object and 'server' option > should apply bonjour options > response status 1`] = ` +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type 1`] = ` 200 `; -exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > console messages 1`] = ` +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -54,10 +58,6 @@ exports[`bonjour option > with 'server' option > should call bonjour with 'https ] `; -exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > page errors 1`] = ` +exports[`bonjour option > with 'server' option > should call bonjour with 'https' type 3`] = ` [] `; - -exports[`bonjour option > with 'server' option > should call bonjour with 'https' type > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 b/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 index 80133b0473..5e20bc556f 100644 --- a/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/built-in-routes.test.js.snap.webpack5 @@ -1,8 +1,12 @@ -exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > console messages 1`] = ` -[] +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories 1`] = ` +"text/html; charset=utf-8" +`; + +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories 2`] = ` +200 `; -exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > directory list 1`] = ` +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories 3`] = ` "

Assets Report:

Compilation: unnamed[0]

  • foo.js
  • @@ -14,23 +18,23 @@ exports[`Built in routes > with multi config > should handle GET request to dire
" `; -exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > page errors 1`] = ` +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories 4`] = ` [] `; -exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories 5`] = ` +[] `; -exports[`Built in routes > with multi config > should handle GET request to directory index and list all middleware directories > response status 1`] = ` -200 +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories 1`] = ` +"text/html; charset=utf-8" `; -exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > console messages 1`] = ` -[] +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories 2`] = ` +200 `; -exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > directory list 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories 3`] = ` "

Assets Report:

Compilation: unnamed

  • main.js
  • @@ -40,70 +44,66 @@ exports[`Built in routes > with simple config > should handle GET request to dir
" `; -exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > page errors 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories 4`] = ` [] `; -exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories 5`] = ` +[] `; -exports[`Built in routes > with simple config > should handle GET request to directory index and list all middleware directories > response status 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint 1`] = ` 200 `; -exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > console messages 1`] = ` -[] -`; - -exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > page errors 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint 2`] = ` [] `; -exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint > response status 1`] = ` -200 -`; - -exports[`Built in routes > with simple config > should handle GET request to magic async chunk > console messages 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to invalidate endpoint 3`] = ` [] `; -exports[`Built in routes > with simple config > should handle GET request to magic async chunk > response headers content-type 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to magic async chunk 1`] = ` "text/javascript; charset=utf-8" `; -exports[`Built in routes > with simple config > should handle GET request to magic async chunk > response status 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to magic async chunk 2`] = ` 200 `; -exports[`Built in routes > with simple config > should handle HEAD request to directory index > console messages 1`] = ` +exports[`Built in routes > with simple config > should handle GET request to magic async chunk 3`] = ` [] `; -exports[`Built in routes > with simple config > should handle HEAD request to directory index > directory list 1`] = ` -"" +exports[`Built in routes > with simple config > should handle HEAD request to directory index 1`] = ` +"text/html; charset=utf-8" `; -exports[`Built in routes > with simple config > should handle HEAD request to directory index > page errors 1`] = ` -[] +exports[`Built in routes > with simple config > should handle HEAD request to directory index 2`] = ` +200 `; -exports[`Built in routes > with simple config > should handle HEAD request to directory index > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`Built in routes > with simple config > should handle HEAD request to directory index 3`] = ` +"" `; -exports[`Built in routes > with simple config > should handle HEAD request to directory index > response status 1`] = ` -200 +exports[`Built in routes > with simple config > should handle HEAD request to directory index 4`] = ` +[] `; -exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > console messages 1`] = ` +exports[`Built in routes > with simple config > should handle HEAD request to directory index 5`] = ` [] `; -exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response headers content-type 1`] = ` +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk 1`] = ` "text/javascript; charset=utf-8" `; -exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk > response status 1`] = ` +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk 2`] = ` 200 `; + +exports[`Built in routes > with simple config > should handle HEAD request to magic async chunk 3`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 b/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 index b5653f67b0..9b4fc89af7 100644 --- a/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/client-reconnect.test.js.snap.webpack5 @@ -1,4 +1,8 @@ -exports[`client.reconnect option > specified as false > should not try to reconnect > console messages 1`] = ` +exports[`client.reconnect option > specified as false > should not try to reconnect 1`] = ` +200 +`; + +exports[`client.reconnect option > specified as false > should not try to reconnect 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -7,15 +11,15 @@ exports[`client.reconnect option > specified as false > should not try to reconn ] `; -exports[`client.reconnect option > specified as false > should not try to reconnect > page errors 1`] = ` +exports[`client.reconnect option > specified as false > should not try to reconnect 3`] = ` [] `; -exports[`client.reconnect option > specified as false > should not try to reconnect > response status 1`] = ` +exports[`client.reconnect option > specified as number > should try to reconnect 2 times 1`] = ` 200 `; -exports[`client.reconnect option > specified as number > should try to reconnect 2 times > console messages 1`] = ` +exports[`client.reconnect option > specified as number > should try to reconnect 2 times 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,18 +34,14 @@ exports[`client.reconnect option > specified as number > should try to reconnect ] `; -exports[`client.reconnect option > specified as number > should try to reconnect 2 times > page errors 1`] = ` +exports[`client.reconnect option > specified as number > should try to reconnect 2 times 3`] = ` [] `; -exports[`client.reconnect option > specified as number > should try to reconnect 2 times > response status 1`] = ` +exports[`client.reconnect option > specified as true > should try to reconnect unlimited times 1`] = ` 200 `; -exports[`client.reconnect option > specified as true > should try to reconnect unlimited times > page errors 1`] = ` +exports[`client.reconnect option > specified as true > should try to reconnect unlimited times 2`] = ` [] `; - -exports[`client.reconnect option > specified as true > should try to reconnect unlimited times > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/client.test.js.snap.webpack5 b/test/e2e/__snapshots__/client.test.js.snap.webpack5 index e89511fadc..d1c447ec4c 100644 --- a/test/e2e/__snapshots__/client.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/client.test.js.snap.webpack5 @@ -1,20 +1,30 @@ -exports[`client option > configure client entry > should disable client entry > console messages 1`] = ` +exports[`client option > configure client entry > should disable client entry 1`] = ` [] `; -exports[`client option > configure client entry > should disable client entry > page errors 1`] = ` +exports[`client option > configure client entry > should disable client entry 2`] = ` +200 +`; + +exports[`client option > configure client entry > should disable client entry 3`] = ` +[] +`; + +exports[`client option > configure client entry > should disable client entry 4`] = ` [] `; -exports[`client option > configure client entry > should disable client entry > response status 1`] = ` +exports[`client option > default behaviour > responds with a 200 status code for / path 1`] = ` 200 `; -exports[`client option > configure client entry > should disable client entry > webSockets 1`] = ` -[] +exports[`client option > default behaviour > responds with a 200 status code for / path 2`] = ` +[ + "ws://localhost:8104/ws", +] `; -exports[`client option > default behaviour > responds with a 200 status code for / path > console messages 1`] = ` +exports[`client option > default behaviour > responds with a 200 status code for / path 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -22,25 +32,21 @@ exports[`client option > default behaviour > responds with a 200 status code for ] `; -exports[`client option > default behaviour > responds with a 200 status code for / path > page errors 1`] = ` +exports[`client option > default behaviour > responds with a 200 status code for / path 4`] = ` [] `; -exports[`client option > default behaviour > responds with a 200 status code for / path > response status 1`] = ` +exports[`client option > override client entry > should disable client entry 1`] = ` 200 `; -exports[`client option > default behaviour > responds with a 200 status code for / path > webSockets 1`] = ` +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path 1`] = ` [ - "ws://localhost:8104/ws", + "ws://localhost:8104/foo/test/bar", ] `; -exports[`client option > override client entry > should disable client entry > response status 1`] = ` -200 -`; - -exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > console messages 1`] = ` +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -48,12 +54,6 @@ exports[`client option > should respect path option > responds with a websocket ] `; -exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > page errors 1`] = ` +exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path 3`] = ` [] `; - -exports[`client option > should respect path option > responds with a websocket with the /foo/test/bar path > webSockets 1`] = ` -[ - "ws://localhost:8104/foo/test/bar", -] -`; diff --git a/test/e2e/__snapshots__/compress.test.js.snap.webpack5 b/test/e2e/__snapshots__/compress.test.js.snap.webpack5 index e1303160b9..5bc874886d 100644 --- a/test/e2e/__snapshots__/compress.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/compress.test.js.snap.webpack5 @@ -1,47 +1,47 @@ -exports[`compress option > as false > should handle GET request to bundle file > console messages 1`] = ` -[] -`; - -exports[`compress option > as false > should handle GET request to bundle file > page errors 1`] = ` -[] +exports[`compress option > as false > should handle GET request to bundle file 1`] = ` +200 `; -exports[`compress option > as false > should handle GET request to bundle file > response headers content-encoding 1`] = ` +exports[`compress option > as false > should handle GET request to bundle file 2`] = ` undefined `; -exports[`compress option > as false > should handle GET request to bundle file > response status 1`] = ` -200 +exports[`compress option > as false > should handle GET request to bundle file 3`] = ` +[] `; -exports[`compress option > as true > should handle GET request to bundle file > console messages 1`] = ` +exports[`compress option > as false > should handle GET request to bundle file 4`] = ` [] `; -exports[`compress option > as true > should handle GET request to bundle file > page errors 1`] = ` -[] +exports[`compress option > as true > should handle GET request to bundle file 1`] = ` +200 `; -exports[`compress option > as true > should handle GET request to bundle file > response headers content-encoding 1`] = ` +exports[`compress option > as true > should handle GET request to bundle file 2`] = ` "br" `; -exports[`compress option > as true > should handle GET request to bundle file > response status 1`] = ` -200 +exports[`compress option > as true > should handle GET request to bundle file 3`] = ` +[] `; -exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > console messages 1`] = ` +exports[`compress option > as true > should handle GET request to bundle file 4`] = ` [] `; -exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > page errors 1`] = ` -[] +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file 1`] = ` +200 `; -exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > response headers content-encoding 1`] = ` +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file 2`] = ` "br" `; -exports[`compress option > enabled by default when not specified > should handle GET request to bundle file > response status 1`] = ` -200 +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file 3`] = ` +[] +`; + +exports[`compress option > enabled by default when not specified > should handle GET request to bundle file 4`] = ` +[] `; diff --git a/test/e2e/__snapshots__/entry.test.js.snap.webpack5 b/test/e2e/__snapshots__/entry.test.js.snap.webpack5 index ab49928092..7b9589d95c 100644 --- a/test/e2e/__snapshots__/entry.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/entry.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`entry > should work with dynamic async entry > console messages 1`] = ` +exports[`entry > should work with dynamic async entry 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,11 +6,11 @@ exports[`entry > should work with dynamic async entry > console messages 1`] = ` ] `; -exports[`entry > should work with dynamic async entry > page errors 1`] = ` +exports[`entry > should work with dynamic async entry 2`] = ` [] `; -exports[`entry > should work with dynamic entry > console messages 1`] = ` +exports[`entry > should work with dynamic entry 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,11 +18,11 @@ exports[`entry > should work with dynamic entry > console messages 1`] = ` ] `; -exports[`entry > should work with dynamic entry > page errors 1`] = ` +exports[`entry > should work with dynamic entry 2`] = ` [] `; -exports[`entry > should work with empty > console messages 1`] = ` +exports[`entry > should work with empty 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,11 +30,11 @@ exports[`entry > should work with empty > console messages 1`] = ` ] `; -exports[`entry > should work with empty > page errors 1`] = ` +exports[`entry > should work with empty 2`] = ` [] `; -exports[`entry > should work with multiple entries #2 > console messages 1`] = ` +exports[`entry > should work with multiple entries #2 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -42,36 +42,36 @@ exports[`entry > should work with multiple entries #2 > console messages 1`] = ` ] `; -exports[`entry > should work with multiple entries #2 > page errors 1`] = ` +exports[`entry > should work with multiple entries #2 2`] = ` [] `; -exports[`entry > should work with multiple entries and "dependOn" > console messages 1`] = ` +exports[`entry > should work with multiple entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", - "Bar.", "Hey.", ] `; -exports[`entry > should work with multiple entries and "dependOn" > page errors 1`] = ` +exports[`entry > should work with multiple entries 2`] = ` [] `; -exports[`entry > should work with multiple entries > console messages 1`] = ` +exports[`entry > should work with multiple entries and "dependOn" 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", + "Bar.", "Hey.", ] `; -exports[`entry > should work with multiple entries > page errors 1`] = ` +exports[`entry > should work with multiple entries and "dependOn" 2`] = ` [] `; -exports[`entry > should work with object entry > console messages 1`] = ` +exports[`entry > should work with object entry 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -79,11 +79,11 @@ exports[`entry > should work with object entry > console messages 1`] = ` ] `; -exports[`entry > should work with object entry > page errors 1`] = ` +exports[`entry > should work with object entry 2`] = ` [] `; -exports[`entry > should work with single array entry > console messages 1`] = ` +exports[`entry > should work with single array entry 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -92,11 +92,11 @@ exports[`entry > should work with single array entry > console messages 1`] = ` ] `; -exports[`entry > should work with single array entry > page errors 1`] = ` +exports[`entry > should work with single array entry 2`] = ` [] `; -exports[`entry > should work with single entry > console messages 1`] = ` +exports[`entry > should work with single entry 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -104,6 +104,6 @@ exports[`entry > should work with single entry > console messages 1`] = ` ] `; -exports[`entry > should work with single entry > page errors 1`] = ` +exports[`entry > should work with single entry 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/headers.test.js.snap.webpack5 b/test/e2e/__snapshots__/headers.test.js.snap.webpack5 index d57a884404..8fc426151c 100644 --- a/test/e2e/__snapshots__/headers.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/headers.test.js.snap.webpack5 @@ -1,4 +1,13 @@ -exports[`headers option > as a function returning an array > should handle GET request with headers > console messages 1`] = ` +exports[`headers option > as a function > should handle GET request with headers as a function 1`] = ` +"key1=value1 +key2=value2" +`; + +exports[`headers option > as a function > should handle GET request with headers as a function 2`] = ` +200 +`; + +exports[`headers option > as a function > should handle GET request with headers as a function 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,23 +15,23 @@ exports[`headers option > as a function returning an array > should handle GET r ] `; -exports[`headers option > as a function returning an array > should handle GET request with headers > page errors 1`] = ` +exports[`headers option > as a function > should handle GET request with headers as a function 4`] = ` [] `; -exports[`headers option > as a function returning an array > should handle GET request with headers > response headers x-bar 1`] = ` -"value2" +exports[`headers option > as a function returning an array > should handle GET request with headers 1`] = ` +"value1" `; -exports[`headers option > as a function returning an array > should handle GET request with headers > response headers x-foo 1`] = ` -"value1" +exports[`headers option > as a function returning an array > should handle GET request with headers 2`] = ` +"value2" `; -exports[`headers option > as a function returning an array > should handle GET request with headers > response status 1`] = ` +exports[`headers option > as a function returning an array > should handle GET request with headers 3`] = ` 200 `; -exports[`headers option > as a function > should handle GET request with headers as a function > console messages 1`] = ` +exports[`headers option > as a function returning an array > should handle GET request with headers 4`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,20 +39,19 @@ exports[`headers option > as a function > should handle GET request with headers ] `; -exports[`headers option > as a function > should handle GET request with headers as a function > page errors 1`] = ` +exports[`headers option > as a function returning an array > should handle GET request with headers 5`] = ` [] `; -exports[`headers option > as a function > should handle GET request with headers as a function > response headers x-bar 1`] = ` -"key1=value1 -key2=value2" +exports[`headers option > as a string > should handle GET request with headers 1`] = ` +"dev-server headers" `; -exports[`headers option > as a function > should handle GET request with headers as a function > response status 1`] = ` +exports[`headers option > as a string > should handle GET request with headers 2`] = ` 200 `; -exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > console messages 1`] = ` +exports[`headers option > as a string > should handle GET request with headers 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -51,19 +59,19 @@ exports[`headers option > as a string and support HEAD request > should handle H ] `; -exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > page errors 1`] = ` +exports[`headers option > as a string > should handle GET request with headers 4`] = ` [] `; -exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > response headers x-foo 1`] = ` +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers 1`] = ` "dev-server headers" `; -exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers > response status 1`] = ` +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers 2`] = ` 200 `; -exports[`headers option > as a string > should handle GET request with headers > console messages 1`] = ` +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -71,19 +79,20 @@ exports[`headers option > as a string > should handle GET request with headers > ] `; -exports[`headers option > as a string > should handle GET request with headers > page errors 1`] = ` +exports[`headers option > as a string and support HEAD request > should handle HEAD request with headers 4`] = ` [] `; -exports[`headers option > as a string > should handle GET request with headers > response headers x-foo 1`] = ` -"dev-server headers" +exports[`headers option > as an array > should handle GET request with headers as an array 1`] = ` +"key1=value1 +key2=value2" `; -exports[`headers option > as a string > should handle GET request with headers > response status 1`] = ` +exports[`headers option > as an array > should handle GET request with headers as an array 2`] = ` 200 `; -exports[`headers option > as an array of objects > should handle GET request with headers > console messages 1`] = ` +exports[`headers option > as an array > should handle GET request with headers as an array 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -91,23 +100,23 @@ exports[`headers option > as an array of objects > should handle GET request wit ] `; -exports[`headers option > as an array of objects > should handle GET request with headers > page errors 1`] = ` +exports[`headers option > as an array > should handle GET request with headers as an array 4`] = ` [] `; -exports[`headers option > as an array of objects > should handle GET request with headers > response headers x-bar 1`] = ` -"value2" +exports[`headers option > as an array of objects > should handle GET request with headers 1`] = ` +"value1" `; -exports[`headers option > as an array of objects > should handle GET request with headers > response headers x-foo 1`] = ` -"value1" +exports[`headers option > as an array of objects > should handle GET request with headers 2`] = ` +"value2" `; -exports[`headers option > as an array of objects > should handle GET request with headers > response status 1`] = ` +exports[`headers option > as an array of objects > should handle GET request with headers 3`] = ` 200 `; -exports[`headers option > as an array > should handle GET request with headers as an array > console messages 1`] = ` +exports[`headers option > as an array of objects > should handle GET request with headers 4`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -115,20 +124,19 @@ exports[`headers option > as an array > should handle GET request with headers a ] `; -exports[`headers option > as an array > should handle GET request with headers as an array > page errors 1`] = ` +exports[`headers option > as an array of objects > should handle GET request with headers 5`] = ` [] `; -exports[`headers option > as an array > should handle GET request with headers as an array > response headers x-bar 1`] = ` -"key1=value1 -key2=value2" +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function 1`] = ` +"dev-middleware-headers" `; -exports[`headers option > as an array > should handle GET request with headers as an array > response status 1`] = ` +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function 2`] = ` 200 `; -exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > console messages 1`] = ` +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -136,14 +144,6 @@ exports[`headers option > dev middleware headers take precedence for dev middlew ] `; -exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > page errors 1`] = ` +exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function 4`] = ` [] `; - -exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > response headers x-foo 1`] = ` -"dev-middleware-headers" -`; - -exports[`headers option > dev middleware headers take precedence for dev middleware output files > should handle GET request with headers as a function > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 b/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 index 61ea5f2741..1ddc3106f8 100644 --- a/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/history-api-fallback.test.js.snap.webpack5 @@ -1,243 +1,243 @@ -exports[`historyApiFallback option > as boolean > should handle GET request to directory > console messages 1`] = ` -[] -`; - -exports[`historyApiFallback option > as boolean > should handle GET request to directory > page errors 1`] = ` -[] -`; - -exports[`historyApiFallback option > as boolean > should handle GET request to directory > response headers content-type 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as boolean > should handle GET request to directory > response status 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory 2`] = ` 200 `; -exports[`historyApiFallback option > as boolean > should handle GET request to directory > response text 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory 3`] = ` "Heyyy " `; -exports[`historyApiFallback option > as object > should handle GET request to directory > console messages 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory 4`] = ` [] `; -exports[`historyApiFallback option > as object > should handle GET request to directory > page errors 1`] = ` +exports[`historyApiFallback option > as boolean > should handle GET request to directory 5`] = ` [] `; -exports[`historyApiFallback option > as object > should handle GET request to directory > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object > should handle GET request to directory > response status 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory 2`] = ` 200 `; -exports[`historyApiFallback option > as object > should handle GET request to directory > response text 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory 3`] = ` "Foobar " `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > console messages 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory 4`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > page errors 1`] = ` +exports[`historyApiFallback option > as object > should handle GET request to directory 5`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with static > should handle GET request to directory 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response status 1`] = ` +exports[`historyApiFallback option > as object with static > should handle GET request to directory 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites > response text 1`] = ` -"Other file +exports[`historyApiFallback option > as object with static > should handle GET request to directory 3`] = ` +"Foobar " `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > console messages 1`] = ` +exports[`historyApiFallback option > as object with static > should handle GET request to directory 4`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > page errors 1`] = ` +exports[`historyApiFallback option > as object with static > should handle GET request to directory 5`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback 1`] = ` +"text/plain; charset=utf-8" `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response status 1`] = ` +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls > response text 1`] = ` -"Foobar +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback 3`] = ` +"Random file " `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > console messages 1`] = ` +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback 4`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > page errors 1`] = ` +exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback 5`] = ` [] `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response status 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index > response text 1`] = ` -"Foobar +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites 3`] = ` +"Other file " `; -exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > console messages 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites 4`] = ` [] `; -exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > page errors 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect any other specified rewrites 5`] = ` [] `; -exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response status 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content > response text 1`] = ` -"In-memory file +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls 3`] = ` +"Foobar " `; -exports[`historyApiFallback option > as object with static > should handle GET request to directory > console messages 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls 4`] = ` [] `; -exports[`historyApiFallback option > as object with static > should handle GET request to directory > page errors 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites and shows index for unknown urls 5`] = ` [] `; -exports[`historyApiFallback option > as object with static > should handle GET request to directory > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with static > should handle GET request to directory > response status 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static > should handle GET request to directory > response text 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index 3`] = ` "Foobar " `; -exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > console messages 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index 4`] = ` [] `; -exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > page errors 1`] = ` +exports[`historyApiFallback option > as object with static and rewrites > historyApiFallback respect rewrites for index 5`] = ` [] `; -exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response headers content-type 1`] = ` -"text/plain; charset=utf-8" +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content 1`] = ` +"text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response status 1`] = ` +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content 2`] = ` 200 `; -exports[`historyApiFallback option > as object with static > should prefer static file over historyApiFallback > response text 1`] = ` -"Random file +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content 3`] = ` +"In-memory file " `; -exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > console messages 1`] = ` +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content 4`] = ` [] `; -exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > page errors 1`] = ` +exports[`historyApiFallback option > as object with static set to false > historyApiFallback should work and ignore static content 5`] = ` [] `; -exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response status 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log 2`] = ` 200 `; -exports[`historyApiFallback option > as object with the "logger" option > request to directory and log > response text 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log 3`] = ` "Foobar " `; -exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > console messages 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log 4`] = ` [] `; -exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > page errors 1`] = ` +exports[`historyApiFallback option > as object with the "logger" option > request to directory and log 5`] = ` [] `; -exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response headers content-type 1`] = ` +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response status 1`] = ` +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log 2`] = ` 200 `; -exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log > response text 1`] = ` +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log 3`] = ` "Foobar " `; -exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log 4`] = ` +[] `; -exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response status 1`] = ` -"OK" +exports[`historyApiFallback option > as object with the "verbose" option > request to directory and log 5`] = ` +[] `; -exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET > response text 1`] = ` -"In-memory file -" +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET 1`] = ` +"text/html; charset=utf-8" `; -exports[`historyApiFallback option > in-memory files > should take precedence over static files > console messages 1`] = ` -[] +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET 2`] = ` +"OK" `; -exports[`historyApiFallback option > in-memory files > should take precedence over static files > page errors 1`] = ` -[] +exports[`historyApiFallback option > in-memory files > should perform HEAD request in same way as GET 3`] = ` +"In-memory file +" `; -exports[`historyApiFallback option > in-memory files > should take precedence over static files > response headers content-type 1`] = ` +exports[`historyApiFallback option > in-memory files > should take precedence over static files 1`] = ` "text/html; charset=utf-8" `; -exports[`historyApiFallback option > in-memory files > should take precedence over static files > response status 1`] = ` +exports[`historyApiFallback option > in-memory files > should take precedence over static files 2`] = ` 200 `; -exports[`historyApiFallback option > in-memory files > should take precedence over static files > response text 1`] = ` +exports[`historyApiFallback option > in-memory files > should take precedence over static files 3`] = ` "In-memory file " `; + +exports[`historyApiFallback option > in-memory files > should take precedence over static files 4`] = ` +[] +`; + +exports[`historyApiFallback option > in-memory files > should take precedence over static files 5`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/host.test.js.snap.webpack5 b/test/e2e/__snapshots__/host.test.js.snap.webpack5 index 8008e4e679..b43c45a9d1 100644 --- a/test/e2e/__snapshots__/host.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/host.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`host > should work using "::" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,11 +6,11 @@ exports[`host > should work using "::" host and "auto" port > console messages 1 ] `; -exports[`host > should work using "::" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "0.0.0.0" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "::" host and port as number > console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,11 +18,11 @@ exports[`host > should work using "::" host and port as number > console message ] `; -exports[`host > should work using "::" host and port as number > page errors 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as number 2`] = ` [] `; -exports[`host > should work using "::" host and port as string > console messages 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,11 +30,11 @@ exports[`host > should work using "::" host and port as string > console message ] `; -exports[`host > should work using "::" host and port as string > page errors 1`] = ` +exports[`host > should work using "0.0.0.0" host and port as string 2`] = ` [] `; -exports[`host > should work using "::1" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -42,11 +42,11 @@ exports[`host > should work using "::1" host and "auto" port > console messages ] `; -exports[`host > should work using "::1" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "127.0.0.1" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "::1" host and port as number > console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -54,11 +54,11 @@ exports[`host > should work using "::1" host and port as number > console messag ] `; -exports[`host > should work using "::1" host and port as number > page errors 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as number 2`] = ` [] `; -exports[`host > should work using "::1" host and port as string > console messages 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -66,11 +66,11 @@ exports[`host > should work using "::1" host and port as string > console messag ] `; -exports[`host > should work using "::1" host and port as string > page errors 1`] = ` +exports[`host > should work using "127.0.0.1" host and port as string 2`] = ` [] `; -exports[`host > should work using "" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "::" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -78,11 +78,11 @@ exports[`host > should work using "" host and "auto" port > conso ] `; -exports[`host > should work using "" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "::" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "" host and port as number > console messages 1`] = ` +exports[`host > should work using "::" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -90,11 +90,11 @@ exports[`host > should work using "" host and port as number > co ] `; -exports[`host > should work using "" host and port as number > page errors 1`] = ` +exports[`host > should work using "::" host and port as number 2`] = ` [] `; -exports[`host > should work using "" host and port as string > console messages 1`] = ` +exports[`host > should work using "::" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -102,11 +102,11 @@ exports[`host > should work using "" host and port as string > co ] `; -exports[`host > should work using "" host and port as string > page errors 1`] = ` +exports[`host > should work using "::" host and port as string 2`] = ` [] `; -exports[`host > should work using "0.0.0.0" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "::1" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -114,11 +114,11 @@ exports[`host > should work using "0.0.0.0" host and "auto" port > console messa ] `; -exports[`host > should work using "0.0.0.0" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "::1" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "0.0.0.0" host and port as number > console messages 1`] = ` +exports[`host > should work using "::1" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -126,11 +126,11 @@ exports[`host > should work using "0.0.0.0" host and port as number > console me ] `; -exports[`host > should work using "0.0.0.0" host and port as number > page errors 1`] = ` +exports[`host > should work using "::1" host and port as number 2`] = ` [] `; -exports[`host > should work using "0.0.0.0" host and port as string > console messages 1`] = ` +exports[`host > should work using "::1" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -138,11 +138,11 @@ exports[`host > should work using "0.0.0.0" host and port as string > console me ] `; -exports[`host > should work using "0.0.0.0" host and port as string > page errors 1`] = ` +exports[`host > should work using "::1" host and port as string 2`] = ` [] `; -exports[`host > should work using "127.0.0.1" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -150,11 +150,11 @@ exports[`host > should work using "127.0.0.1" host and "auto" port > console mes ] `; -exports[`host > should work using "127.0.0.1" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "127.0.0.1" host and port as number > console messages 1`] = ` +exports[`host > should work using "" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -162,11 +162,11 @@ exports[`host > should work using "127.0.0.1" host and port as number > console ] `; -exports[`host > should work using "127.0.0.1" host and port as number > page errors 1`] = ` +exports[`host > should work using "" host and port as number 2`] = ` [] `; -exports[`host > should work using "127.0.0.1" host and port as string > console messages 1`] = ` +exports[`host > should work using "" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -174,11 +174,11 @@ exports[`host > should work using "127.0.0.1" host and port as string > console ] `; -exports[`host > should work using "127.0.0.1" host and port as string > page errors 1`] = ` +exports[`host > should work using "" host and port as string 2`] = ` [] `; -exports[`host > should work using "local-ip" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "local-ip" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -186,11 +186,11 @@ exports[`host > should work using "local-ip" host and "auto" port > console mess ] `; -exports[`host > should work using "local-ip" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "local-ip" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "local-ip" host and port as number > console messages 1`] = ` +exports[`host > should work using "local-ip" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -198,11 +198,11 @@ exports[`host > should work using "local-ip" host and port as number > console m ] `; -exports[`host > should work using "local-ip" host and port as number > page errors 1`] = ` +exports[`host > should work using "local-ip" host and port as number 2`] = ` [] `; -exports[`host > should work using "local-ip" host and port as string > console messages 1`] = ` +exports[`host > should work using "local-ip" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -210,11 +210,11 @@ exports[`host > should work using "local-ip" host and port as string > console m ] `; -exports[`host > should work using "local-ip" host and port as string > page errors 1`] = ` +exports[`host > should work using "local-ip" host and port as string 2`] = ` [] `; -exports[`host > should work using "local-ipv4" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -222,11 +222,11 @@ exports[`host > should work using "local-ipv4" host and "auto" port > console me ] `; -exports[`host > should work using "local-ipv4" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "local-ipv4" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "local-ipv4" host and port as number > console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -234,11 +234,11 @@ exports[`host > should work using "local-ipv4" host and port as number > console ] `; -exports[`host > should work using "local-ipv4" host and port as number > page errors 1`] = ` +exports[`host > should work using "local-ipv4" host and port as number 2`] = ` [] `; -exports[`host > should work using "local-ipv4" host and port as string > console messages 1`] = ` +exports[`host > should work using "local-ipv4" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -246,11 +246,11 @@ exports[`host > should work using "local-ipv4" host and port as string > console ] `; -exports[`host > should work using "local-ipv4" host and port as string > page errors 1`] = ` +exports[`host > should work using "local-ipv4" host and port as string 2`] = ` [] `; -exports[`host > should work using "local-ipv6" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -258,11 +258,11 @@ exports[`host > should work using "local-ipv6" host and "auto" port > console me ] `; -exports[`host > should work using "local-ipv6" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "local-ipv6" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "local-ipv6" host and port as number > console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -270,11 +270,11 @@ exports[`host > should work using "local-ipv6" host and port as number > console ] `; -exports[`host > should work using "local-ipv6" host and port as number > page errors 1`] = ` +exports[`host > should work using "local-ipv6" host and port as number 2`] = ` [] `; -exports[`host > should work using "local-ipv6" host and port as string > console messages 1`] = ` +exports[`host > should work using "local-ipv6" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -282,11 +282,11 @@ exports[`host > should work using "local-ipv6" host and port as string > console ] `; -exports[`host > should work using "local-ipv6" host and port as string > page errors 1`] = ` +exports[`host > should work using "local-ipv6" host and port as string 2`] = ` [] `; -exports[`host > should work using "localhost" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "localhost" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -294,11 +294,11 @@ exports[`host > should work using "localhost" host and "auto" port > console mes ] `; -exports[`host > should work using "localhost" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "localhost" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "localhost" host and port as number > console messages 1`] = ` +exports[`host > should work using "localhost" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -306,11 +306,11 @@ exports[`host > should work using "localhost" host and port as number > console ] `; -exports[`host > should work using "localhost" host and port as number > page errors 1`] = ` +exports[`host > should work using "localhost" host and port as number 2`] = ` [] `; -exports[`host > should work using "localhost" host and port as string > console messages 1`] = ` +exports[`host > should work using "localhost" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -318,11 +318,11 @@ exports[`host > should work using "localhost" host and port as string > console ] `; -exports[`host > should work using "localhost" host and port as string > page errors 1`] = ` +exports[`host > should work using "localhost" host and port as string 2`] = ` [] `; -exports[`host > should work using "undefined" host and "auto" port > console messages 1`] = ` +exports[`host > should work using "undefined" host and "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -330,11 +330,11 @@ exports[`host > should work using "undefined" host and "auto" port > console mes ] `; -exports[`host > should work using "undefined" host and "auto" port > page errors 1`] = ` +exports[`host > should work using "undefined" host and "auto" port 2`] = ` [] `; -exports[`host > should work using "undefined" host and port as number > console messages 1`] = ` +exports[`host > should work using "undefined" host and port as number 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -342,11 +342,11 @@ exports[`host > should work using "undefined" host and port as number > console ] `; -exports[`host > should work using "undefined" host and port as number > page errors 1`] = ` +exports[`host > should work using "undefined" host and port as number 2`] = ` [] `; -exports[`host > should work using "undefined" host and port as string > console messages 1`] = ` +exports[`host > should work using "undefined" host and port as string 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -354,6 +354,6 @@ exports[`host > should work using "undefined" host and port as string > console ] `; -exports[`host > should work using "undefined" host and port as string > page errors 1`] = ` +exports[`host > should work using "undefined" host and port as string 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 b/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 index e45edfddaa..cedf476743 100644 --- a/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/hot-and-live-reload.test.js.snap.webpack5 @@ -1,26 +1,26 @@ -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) > console messages 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) > page errors 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (default) 2`] = ` [] `; -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should not refresh content when hot and no live reload disabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) > console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -28,11 +28,11 @@ exports[`hot and live reload > should work and allow to disable hot module repla ] `; -exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) > page errors 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement and live reload using the "webpack-dev-server-hot=false&webpack-dev-server-live-reload=false" (default) 2`] = ` [] `; -exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) > console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -43,30 +43,30 @@ exports[`hot and live reload > should work and allow to disable hot module repla ] `; -exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) > page errors 1`] = ` +exports[`hot and live reload > should work and allow to disable hot module replacement using the "webpack-dev-server-hot=false" (default) 2`] = ` [] `; -exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) > console messages 1`] = ` +exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) > page errors 1`] = ` +exports[`hot and live reload > should work and allow to disable live reload using the "webpack-dev-server-live-reload=false" (default) 2`] = ` [] `; -exports[`hot and live reload > should work and do nothing when web socket server disabled (default) > console messages 1`] = ` +exports[`hot and live reload > should work and do nothing when web socket server disabled (default) 1`] = ` [] `; -exports[`hot and live reload > should work and do nothing when web socket server disabled (default) > page errors 1`] = ` +exports[`hot and live reload > should work and do nothing when web socket server disabled (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -81,11 +81,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -100,11 +100,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -119,11 +119,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when hot enabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -138,11 +138,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload and hot enabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -157,11 +157,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -176,11 +176,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload disabled and hot enabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -195,11 +195,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -214,11 +214,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -233,11 +233,11 @@ exports[`hot and live reload > should work and refresh content using hot module ] `; -exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using hot module replacement when live reload enabled and hot disabled (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using live reload (default) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -246,11 +246,11 @@ exports[`hot and live reload > should work and refresh content using live reload ] `; -exports[`hot and live reload > should work and refresh content using live reload (default) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload (default) 2`] = ` [] `; -exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) > console messages 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -259,11 +259,11 @@ exports[`hot and live reload > should work and refresh content using live reload ] `; -exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) > page errors 1`] = ` +exports[`hot and live reload > should work and refresh content using live reload when live reload enabled and hot disabled (ws) 2`] = ` [] `; -exports[`hot and live reload > should work with manual client setup (default) > console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup (default) 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -278,11 +278,11 @@ exports[`hot and live reload > should work with manual client setup (default) > ] `; -exports[`hot and live reload > should work with manual client setup (default) > page errors 1`] = ` +exports[`hot and live reload > should work with manual client setup (default) 2`] = ` [] `; -exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) > console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -293,22 +293,22 @@ exports[`hot and live reload > should work with manual client setup and allow to ] `; -exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) > page errors 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable hot module replacement (default) 2`] = ` [] `; -exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) > console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading disabled, Progress disabled, Overlay disabled.", "[webpack-dev-server] App updated. Recompiling...", ] `; -exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) > page errors 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to disable live reload (default) 2`] = ` [] `; -exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) > console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay disabled.", @@ -323,11 +323,11 @@ exports[`hot and live reload > should work with manual client setup and allow to ] `; -exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) > page errors 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable hot module replacement (default) 2`] = ` [] `; -exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) > console messages 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay disabled.", "[webpack-dev-server] App updated. Recompiling...", @@ -336,26 +336,30 @@ exports[`hot and live reload > should work with manual client setup and allow to ] `; -exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) > page errors 1`] = ` +exports[`hot and live reload > should work with manual client setup and allow to enable live reload (default) 2`] = ` [] `; -exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > console messages 1`] = ` +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete 1`] = ` +200 +`; + +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hey.", ] `; -exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > page errors 1`] = ` +exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete 3`] = ` [] `; -exports[`hot disabled HMR plugin > should NOT register the HMR plugin before compilation is complete > response status 1`] = ` +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete 1`] = ` 200 `; -exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -363,15 +367,15 @@ exports[`multi compiler hot config HMR plugin > should register the HMR plugin b ] `; -exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete 3`] = ` [] `; -exports[`multi compiler hot config HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete 1`] = ` 200 `; -exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -379,15 +383,15 @@ exports[`simple hot config HMR plugin > should register the HMR plugin before co ] `; -exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete 3`] = ` [] `; -exports[`simple hot config HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete 1`] = ` 200 `; -exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > console messages 1`] = ` +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -395,10 +399,6 @@ exports[`simple hot config HMR plugin with already added HMR plugin > should reg ] `; -exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > page errors 1`] = ` +exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete 3`] = ` [] `; - -exports[`simple hot config HMR plugin with already added HMR plugin > should register the HMR plugin before compilation is complete > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 b/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 index a2d05bcb88..22b543cf22 100644 --- a/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/ipc.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,11 +6,11 @@ exports[`web socket server URL > should work with the "ipc" option using "string ] `; -exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "string" value ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,6 +18,6 @@ exports[`web socket server URL > should work with the "ipc" option using "true" ] `; -exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "ipc" option using "true" value ("ws") 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 b/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 index 4a13be8682..953ab8283c 100644 --- a/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/mime-types.test.js.snap.webpack5 @@ -1,31 +1,31 @@ -exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > console messages 1`] = ` -[] -`; - -exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > page errors 1`] = ` -[] +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type 1`] = ` +200 `; -exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > response headers content-type 1`] = ` +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type 2`] = ` "text/html; charset=utf-8" `; -exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type > response status 1`] = ` -200 +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type 3`] = ` +[] `; -exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > console messages 1`] = ` +exports[`mimeTypes option > as an object with a custom type > should request file with different js mime type 4`] = ` [] `; -exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > page errors 1`] = ` -[] +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type 1`] = ` +200 `; -exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > response headers content-type 1`] = ` +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type 2`] = ` "text/plain; charset=utf-8" `; -exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type > response status 1`] = ` -200 +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type 3`] = ` +[] +`; + +exports[`mimeTypes option > as an object with a remapped type > should request file with different js mime type 4`] = ` +[] `; diff --git a/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 b/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 index 25c4ab00a4..20120329dd 100644 --- a/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/module-federation.test.js.snap.webpack5 @@ -1,47 +1,47 @@ -exports[`Module federation > should use plugin > should contain hot script in main.js > console messages 1`] = ` +exports[`Module federation > should use plugin > should contain hot script in main.js 1`] = ` [] `; -exports[`Module federation > should use plugin > should contain hot script in main.js > page errors 1`] = ` +exports[`Module federation > should use plugin > should contain hot script in main.js 2`] = ` [] `; -exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js > console messages 1`] = ` +exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js 1`] = ` [] `; -exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js > page errors 1`] = ` +exports[`Module federation > should use plugin > should contain hot script in remoteEntry.js 2`] = ` [] `; -exports[`Module federation > should work with multi compiler config > should use the last entry export > console messages 1`] = ` +exports[`Module federation > should work with multi compiler config > should use the last entry export 1`] = ` [] `; -exports[`Module federation > should work with multi compiler config > should use the last entry export > page errors 1`] = ` +exports[`Module federation > should work with multi compiler config > should use the last entry export 2`] = ` [] `; -exports[`Module federation > should work with object multi-entry config > should support the named entry export > console messages 1`] = ` +exports[`Module federation > should work with object multi-entry config > should support the named entry export 1`] = ` [] `; -exports[`Module federation > should work with object multi-entry config > should support the named entry export > page errors 1`] = ` +exports[`Module federation > should work with object multi-entry config > should support the named entry export 2`] = ` [] `; -exports[`Module federation > should work with object multi-entry config > should use the last entry export > console messages 1`] = ` +exports[`Module federation > should work with object multi-entry config > should use the last entry export 1`] = ` [] `; -exports[`Module federation > should work with object multi-entry config > should use the last entry export > page errors 1`] = ` +exports[`Module federation > should work with object multi-entry config > should use the last entry export 2`] = ` [] `; -exports[`Module federation > should work with simple multi-entry config > should use the last entry export > console messages 1`] = ` +exports[`Module federation > should work with simple multi-entry config > should use the last entry export 1`] = ` [] `; -exports[`Module federation > should work with simple multi-entry config > should use the last entry export > page errors 1`] = ` +exports[`Module federation > should work with simple multi-entry config > should use the last entry export 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 5fd7545d24..3b683a907e 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`multi compiler > should work with one web target configuration and do nothing > console messages 1`] = ` +exports[`multi compiler > should work with one web target configuration and do nothing 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,11 +6,11 @@ exports[`multi compiler > should work with one web target configuration and do n ] `; -exports[`multi compiler > should work with one web target configuration and do nothing > page errors 1`] = ` +exports[`multi compiler > should work with one web target configuration and do nothing 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration and do nothing > console messages 1`] = ` +exports[`multi compiler > should work with universal configuration and do nothing 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,11 +18,11 @@ exports[`multi compiler > should work with universal configuration and do nothin ] `; -exports[`multi compiler > should work with universal configuration and do nothing > page errors 1`] = ` +exports[`multi compiler > should work with universal configuration and do nothing 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed > console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -40,11 +40,11 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed > page errors 1`] = ` +exports[`multi compiler > should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed > console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -62,11 +62,11 @@ Update propagation: ./browser.js ] `; -exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed > page errors 1`] = ` +exports[`multi compiler > should work with universal configuration when only hot reload is enabled, and do hot reload for browser compiler when browser entry changed 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -77,6 +77,10 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 4`] = ` +[] +`; + exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -88,15 +92,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > page errors 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > console messages 1`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -107,6 +107,10 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 4`] = ` +[] +`; + exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -118,15 +122,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > page errors 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations and do nothing > console messages 1`] = ` +exports[`multi compiler > should work with web target configurations and do nothing 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -134,6 +134,10 @@ exports[`multi compiler > should work with web target configurations and do noth ] `; +exports[`multi compiler > should work with web target configurations and do nothing 4`] = ` +[] +`; + exports[`multi compiler > should work with web target configurations and do nothing > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -142,15 +146,11 @@ exports[`multi compiler > should work with web target configurations and do noth ] `; -exports[`multi compiler > should work with web target configurations and do nothing > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with web target configurations and do nothing > page errors 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -168,6 +168,10 @@ Update propagation: ./one.js ] `; +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 4`] = ` +[] +`; + exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -186,15 +190,11 @@ Update propagation: ./two.js ] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > page errors 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -212,6 +212,10 @@ Update propagation: ./one.js ] `; +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 4`] = ` +[] +`; + exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", @@ -230,15 +234,11 @@ Update propagation: ./two.js ] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > page errors 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -249,6 +249,10 @@ exports[`multi compiler > should work with web target configurations when only l ] `; +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 4`] = ` +[] +`; + exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -260,15 +264,11 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > page errors 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > console messages 1`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -279,6 +279,10 @@ exports[`multi compiler > should work with web target configurations when only l ] `; +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 4`] = ` +[] +`; + exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > console messages 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", @@ -290,10 +294,6 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > page errors 1`] = ` -[] -`; - exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > page errors 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 b/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 index 8d29e07822..b7d494e486 100644 --- a/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/on-listening.test.js.snap.webpack5 @@ -1,39 +1,39 @@ -exports[`onListening option > should handle GET request to /listening/some/path route > console messages 1`] = ` -[] -`; - -exports[`onListening option > should handle GET request to /listening/some/path route > page errors 1`] = ` -[] -`; - -exports[`onListening option > should handle GET request to /listening/some/path route > response headers content-type 1`] = ` +exports[`onListening option > should handle GET request to /listening/some/path route 1`] = ` "text/html; charset=utf-8" `; -exports[`onListening option > should handle GET request to /listening/some/path route > response status 1`] = ` +exports[`onListening option > should handle GET request to /listening/some/path route 2`] = ` 200 `; -exports[`onListening option > should handle GET request to /listening/some/path route > response text 1`] = ` +exports[`onListening option > should handle GET request to /listening/some/path route 3`] = ` "listening" `; -exports[`onListening option > should handle POST request to /listening/some/path route > console messages 1`] = ` +exports[`onListening option > should handle GET request to /listening/some/path route 4`] = ` [] `; -exports[`onListening option > should handle POST request to /listening/some/path route > page errors 1`] = ` +exports[`onListening option > should handle GET request to /listening/some/path route 5`] = ` [] `; -exports[`onListening option > should handle POST request to /listening/some/path route > response headers content-type 1`] = ` +exports[`onListening option > should handle POST request to /listening/some/path route 1`] = ` "text/html; charset=utf-8" `; -exports[`onListening option > should handle POST request to /listening/some/path route > response status 1`] = ` +exports[`onListening option > should handle POST request to /listening/some/path route 2`] = ` 200 `; -exports[`onListening option > should handle POST request to /listening/some/path route > response text 1`] = ` +exports[`onListening option > should handle POST request to /listening/some/path route 3`] = ` "listening POST" `; + +exports[`onListening option > should handle POST request to /listening/some/path route 4`] = ` +[] +`; + +exports[`onListening option > should handle POST request to /listening/some/path route 5`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 index b4a75e33be..cd0561c532 100644 --- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`overlay > should not show a warning when "client.overlay" is "false" > page html 1`] = ` +exports[`overlay > should not show a warning when "client.overlay" is "false" 1`] = ` "

webpack-dev-server is running...

@@ -6,7 +6,7 @@ exports[`overlay > should not show a warning when "client.overlay" is "false" > " `; -exports[`overlay > should not show a warning when "client.overlay.warnings" is "false" > page html 1`] = ` +exports[`overlay > should not show a warning when "client.overlay.warnings" is "false" 1`] = ` "

webpack-dev-server is running...

@@ -14,7 +14,7 @@ exports[`overlay > should not show a warning when "client.overlay.warnings" is " " `; -exports[`overlay > should not show an error when "client.overlay" is "false" > page html 1`] = ` +exports[`overlay > should not show an error when "client.overlay" is "false" 1`] = ` "

webpack-dev-server is running...

@@ -22,7 +22,7 @@ exports[`overlay > should not show an error when "client.overlay" is "false" > p " `; -exports[`overlay > should not show an error when "client.overlay.errors" is "false" > page html 1`] = ` +exports[`overlay > should not show an error when "client.overlay.errors" is "false" 1`] = ` "

webpack-dev-server is running...

@@ -30,7 +30,36 @@ exports[`overlay > should not show an error when "client.overlay.errors" is "fal " `; -exports[`overlay > should not show initially, then show on an error and allow to close > overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error and allow to close 1`] = ` +" +

webpack-dev-server is running...

+ + +" +`; + +exports[`overlay > should not show initially, then show on an error and allow to close 2`] = ` +" +

webpack-dev-server is running...

+ + + + +" +`; + +exports[`overlay > should not show initially, then show on an error and allow to close 3`] = ` "
should not show initially, then show on an error and allow to " `; -exports[`overlay > should not show initially, then show on an error and allow to close > page html after close 1`] = ` +exports[`overlay > should not show initially, then show on an error and allow to close 4`] = ` "

webpack-dev-server is running...

@@ -127,7 +156,7 @@ exports[`overlay > should not show initially, then show on an error and allow to " `; -exports[`overlay > should not show initially, then show on an error and allow to close > page html initial 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix 1`] = ` "

webpack-dev-server is running...

@@ -135,7 +164,7 @@ exports[`overlay > should not show initially, then show on an error and allow to " `; -exports[`overlay > should not show initially, then show on an error and allow to close > page html with error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix 2`] = ` "

webpack-dev-server is running...

@@ -156,7 +185,7 @@ exports[`overlay > should not show initially, then show on an error and allow to " `; -exports[`overlay > should not show initially, then show on an error, then hide on fix > overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix 3`] = ` "
should not show initially, then show on an error, then hide o " `; -exports[`overlay > should not show initially, then show on an error, then hide on fix > page html after fix error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then hide on fix 4`] = ` +" +

webpack-dev-server is running...

+ + +" +`; + +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 1`] = ` "

webpack-dev-server is running...

@@ -253,15 +290,28 @@ exports[`overlay > should not show initially, then show on an error, then hide o " `; -exports[`overlay > should not show initially, then show on an error, then hide on fix > page html initial 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 2`] = ` "

webpack-dev-server is running...

+ + " `; -exports[`overlay > should not show initially, then show on an error, then hide on fix > page html with error 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 4`] = ` "

webpack-dev-server is running...

@@ -282,7 +332,7 @@ exports[`overlay > should not show initially, then show on an error, then hide o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > overlay html 1`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 5`] = ` "
should not show initially, then show on an error, then show o " `; +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 6`] = ` +" +

webpack-dev-server is running...

+ + +" +`; + exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > overlay html 2`] = ` "
should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html after fix error 1`] = ` -" -

webpack-dev-server is running...

- - -" -`; - -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html initial 1`] = ` -" -

webpack-dev-server is running...

- - -" -`; - -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html with error 1`] = ` +exports[`overlay > should not show overlay when Trusted Types are enabled, but policy is not allowed 1`] = ` "

webpack-dev-server is running...

- - " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > page html with other error 1`] = ` +exports[`overlay > should show a warning after invalidation 1`] = ` "

webpack-dev-server is running...

@@ -518,15 +547,7 @@ exports[`overlay > should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show overlay when Trusted Types are enabled, but policy is not allowed > page html 1`] = ` -" -

webpack-dev-server is running...

- - -" -`; - -exports[`overlay > should show a warning after invalidation > overlay html 1`] = ` +exports[`overlay > should show a warning after invalidation 2`] = ` "
should show a warning after invalidation > overlay html 1`] = " `; -exports[`overlay > should show a warning after invalidation > page html 1`] = ` +exports[`overlay > should show a warning and error for initial compilation 1`] = ` "

webpack-dev-server is running...

@@ -631,7 +652,7 @@ exports[`overlay > should show a warning after invalidation > page html 1`] = ` " `; -exports[`overlay > should show a warning and error for initial compilation and protects against xss > overlay html 1`] = ` +exports[`overlay > should show a warning and error for initial compilation 2`] = ` "
should show a warning and error for initial compilation and p font-family: Menlo, Consolas, monospace; " > - <strong>strong</strong> + Warning from compilation
should show a warning and error for initial compilation and p font-family: Menlo, Consolas, monospace; " > - <strong>strong</strong> + Warning from compilation
-
-
- -" -`; - -exports[`overlay > should show a warning and error for initial compilation and protects against xss > page html 1`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; - -exports[`overlay > should show a warning and error for initial compilation > overlay html 1`] = ` -" -
-
- Compiled with problems: -
- -
- Warning from compilation + Error from compilation. Can't find 'test' module.
should show a warning and error for initial compilation > ove font-family: Menlo, Consolas, monospace; " > - Warning from compilation + Error from compilation. Can't find 'test' module.
should show a warning and error for initial compilation > ove Error from compilation. Can't find 'test' module.
+
+
+ +" +`; + +exports[`overlay > should show a warning and error for initial compilation and protects against xss 1`] = ` +" +

webpack-dev-server is running...

+ + + + +" +`; + +exports[`overlay > should show a warning and error for initial compilation and protects against xss 2`] = ` +" +
+
+ Compiled with problems: +
+ +
- Error from compilation. Can't find 'test' module. + <strong>strong</strong>
should show a warning and error for initial compilation > ove font-family: Menlo, Consolas, monospace; " > - Error from compilation. Can't find 'test' module. + <strong>strong</strong>
@@ -955,28 +976,7 @@ exports[`overlay > should show a warning and error for initial compilation > ove " `; -exports[`overlay > should show a warning and error for initial compilation > page html 1`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; - -exports[`overlay > should show a warning and hide them after closing connection > overlay html 1`] = ` +exports[`overlay > should show a warning and hide them after closing connection 2`] = ` "
should show a warning and hide them after closing connection " `; -exports[`overlay > should show a warning and hide them after closing connection > page html 1`] = ` +exports[`overlay > should show a warning and hide them after closing connection 3`] = ` "

webpack-dev-server is running...

@@ -1089,7 +1089,28 @@ exports[`overlay > should show a warning and hide them after closing connection " `; -exports[`overlay > should show a warning for initial compilation > overlay html 1`] = ` +exports[`overlay > should show a warning for initial compilation 1`] = ` +" +

webpack-dev-server is running...

+ + + + +" +`; + +exports[`overlay > should show a warning for initial compilation 2`] = ` "
should show a warning for initial compilation > overlay html " `; -exports[`overlay > should show a warning for initial compilation > page html 1`] = ` +exports[`overlay > should show a warning when "client.overlay" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -1194,7 +1215,7 @@ exports[`overlay > should show a warning for initial compilation > page html 1`] " `; -exports[`overlay > should show a warning when "client.overlay" is "true" > overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay" is "true" 2`] = ` "
should show a warning when "client.overlay" is "true" > overl " `; -exports[`overlay > should show a warning when "client.overlay" is "true" > page html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.errors" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -1299,7 +1320,7 @@ exports[`overlay > should show a warning when "client.overlay" is "true" > page " `; -exports[`overlay > should show a warning when "client.overlay.errors" is "true" > overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.errors" is "true" 2`] = ` "
should show a warning when "client.overlay.errors" is "true" " `; -exports[`overlay > should show a warning when "client.overlay.errors" is "true" > page html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.warnings" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -1404,7 +1425,7 @@ exports[`overlay > should show a warning when "client.overlay.errors" is "true" " `; -exports[`overlay > should show a warning when "client.overlay.warnings" is "true" > overlay html 1`] = ` +exports[`overlay > should show a warning when "client.overlay.warnings" is "true" 2`] = ` "
should show a warning when "client.overlay.warnings" is "true " `; -exports[`overlay > should show a warning when "client.overlay.warnings" is "true" > page html 1`] = ` +exports[`overlay > should show an ansi formatted error for initial compilation 1`] = ` "

webpack-dev-server is running...

@@ -1509,7 +1530,7 @@ exports[`overlay > should show a warning when "client.overlay.warnings" is "true " `; -exports[`overlay > should show an ansi formatted error for initial compilation > overlay html 1`] = ` +exports[`overlay > should show an ansi formatted error for initial compilation 2`] = ` "
should show an ansi formatted error for initial compilation > " `; -exports[`overlay > should show an ansi formatted error for initial compilation > page html 1`] = ` +exports[`overlay > should show an error after invalidation 1`] = ` "

webpack-dev-server is running...

@@ -1625,7 +1646,7 @@ exports[`overlay > should show an ansi formatted error for initial compilation > " `; -exports[`overlay > should show an error after invalidation > overlay html 1`] = ` +exports[`overlay > should show an error after invalidation 2`] = ` "
should show an error after invalidation > overlay html 1`] = " `; -exports[`overlay > should show an error after invalidation > page html 1`] = ` +exports[`overlay > should show an error for initial compilation 1`] = ` "

webpack-dev-server is running...

@@ -1730,7 +1751,7 @@ exports[`overlay > should show an error after invalidation > page html 1`] = ` " `; -exports[`overlay > should show an error for initial compilation > overlay html 1`] = ` +exports[`overlay > should show an error for initial compilation 2`] = ` "
should show an error for initial compilation > overlay html 1 " `; -exports[`overlay > should show an error for initial compilation > page html 1`] = ` +exports[`overlay > should show an error when "client.overlay" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -1835,7 +1856,7 @@ exports[`overlay > should show an error for initial compilation > page html 1`] " `; -exports[`overlay > should show an error when "client.overlay" is "true" > overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay" is "true" 2`] = ` "
should show an error when "client.overlay" is "true" > overla " `; -exports[`overlay > should show an error when "client.overlay" is "true" > page html 1`] = ` +exports[`overlay > should show an error when "client.overlay.errors" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -1940,7 +1961,7 @@ exports[`overlay > should show an error when "client.overlay" is "true" > page h " `; -exports[`overlay > should show an error when "client.overlay.errors" is "true" > overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay.errors" is "true" 2`] = ` "
should show an error when "client.overlay.errors" is "true" > " `; -exports[`overlay > should show an error when "client.overlay.errors" is "true" > page html 1`] = ` +exports[`overlay > should show an error when "client.overlay.warnings" is "true" 1`] = ` "

webpack-dev-server is running...

@@ -2045,7 +2066,7 @@ exports[`overlay > should show an error when "client.overlay.errors" is "true" > " `; -exports[`overlay > should show an error when "client.overlay.warnings" is "true" > overlay html 1`] = ` +exports[`overlay > should show an error when "client.overlay.warnings" is "true" 2`] = ` "
should show an error when "client.overlay.warnings" is "true" " `; -exports[`overlay > should show an error when "client.overlay.warnings" is "true" > page html 1`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; - -exports[`overlay > should show error for uncaught promise rejection > overlay html 1`] = ` +exports[`overlay > should show error for uncaught promise rejection 1`] = ` "
should show error for uncaught promise rejection > overlay ht " `; -exports[`overlay > should show error for uncaught runtime error > overlay html 1`] = ` +exports[`overlay > should show error for uncaught runtime error 1`] = ` "
should show error for uncaught runtime error > overlay html 1 " `; -exports[`overlay > should show error when it is not filtered > overlay html 1`] = ` +exports[`overlay > should show error when it is not filtered 1`] = ` +" +

webpack-dev-server is running...

+ + + + +" +`; + +exports[`overlay > should show error when it is not filtered 2`] = ` "
should show error when it is not filtered > overlay html 1`] " `; -exports[`overlay > should show error when it is not filtered > page html 1`] = ` +exports[`overlay > should show overlay when "Content-Security-Policy" is "default-src 'self'" was used 1`] = ` "

webpack-dev-server is running...

@@ -2424,7 +2445,7 @@ exports[`overlay > should show error when it is not filtered > page html 1`] = ` " `; -exports[`overlay > should show overlay when "Content-Security-Policy" is "default-src 'self'" was used > overlay html 1`] = ` +exports[`overlay > should show overlay when "Content-Security-Policy" is "default-src 'self'" was used 2`] = ` "
should show overlay when "Content-Security-Policy" is "defaul " `; -exports[`overlay > should show overlay when "Content-Security-Policy" is "default-src 'self'" was used > page html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled 1`] = ` "

webpack-dev-server is running...

@@ -2529,7 +2550,7 @@ exports[`overlay > should show overlay when "Content-Security-Policy" is "defaul " `; -exports[`overlay > should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used > overlay html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled 2`] = ` "
should show overlay when Trusted Types are enabled and the "r " `; -exports[`overlay > should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used > page html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used 1`] = ` "

webpack-dev-server is running...

@@ -2634,7 +2655,7 @@ exports[`overlay > should show overlay when Trusted Types are enabled and the "r " `; -exports[`overlay > should show overlay when Trusted Types are enabled > overlay html 1`] = ` +exports[`overlay > should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used 2`] = ` "
should show overlay when Trusted Types are enabled > overlay " `; -exports[`overlay > should show overlay when Trusted Types are enabled > page html 1`] = ` +exports[`overlay > should show warning when it is not filtered 1`] = ` "

webpack-dev-server is running...

@@ -2739,7 +2760,7 @@ exports[`overlay > should show overlay when Trusted Types are enabled > page htm " `; -exports[`overlay > should show warning when it is not filtered > overlay html 1`] = ` +exports[`overlay > should show warning when it is not filtered 2`] = ` "
should show warning when it is not filtered > overlay html 1` " `; - -exports[`overlay > should show warning when it is not filtered > page html 1`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; diff --git a/test/e2e/__snapshots__/port.test.js.snap.webpack5 b/test/e2e/__snapshots__/port.test.js.snap.webpack5 index f8c2f2370e..5fe3a13b5c 100644 --- a/test/e2e/__snapshots__/port.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/port.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`port > should work using "" port > console messages 1`] = ` +exports[`port > should work using "0" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,11 +6,11 @@ exports[`port > should work using "" port > console messages 1`] ] `; -exports[`port > should work using "" port > page errors 1`] = ` +exports[`port > should work using "0" port 2`] = ` [] `; -exports[`port > should work using "0" port > console messages 1`] = ` +exports[`port > should work using "8159" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -18,11 +18,7 @@ exports[`port > should work using "0" port > console messages 1`] = ` ] `; -exports[`port > should work using "0" port > page errors 1`] = ` -[] -`; - -exports[`port > should work using "8159" port > console messages 1`] = ` +exports[`port > should work using "8159" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,7 +26,15 @@ exports[`port > should work using "8159" port > console messages 1`] = ` ] `; -exports[`port > should work using "8159" port > console messages 2`] = ` +exports[`port > should work using "8159" port 2`] = ` +[] +`; + +exports[`port > should work using "8159" port 2`] = ` +[] +`; + +exports[`port > should work using "" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,15 +42,11 @@ exports[`port > should work using "8159" port > console messages 2`] = ` ] `; -exports[`port > should work using "8159" port > page errors 1`] = ` -[] -`; - -exports[`port > should work using "8159" port > page errors 2`] = ` +exports[`port > should work using "" port 2`] = ` [] `; -exports[`port > should work using "auto" port > console messages 1`] = ` +exports[`port > should work using "auto" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -54,11 +54,11 @@ exports[`port > should work using "auto" port > console messages 1`] = ` ] `; -exports[`port > should work using "auto" port > page errors 1`] = ` +exports[`port > should work using "auto" port 2`] = ` [] `; -exports[`port > should work using "undefined" port > console messages 1`] = ` +exports[`port > should work using "undefined" port 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -66,6 +66,6 @@ exports[`port > should work using "undefined" port > console messages 1`] = ` ] `; -exports[`port > should work using "undefined" port > page errors 1`] = ` +exports[`port > should work using "undefined" port 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/server.test.js.snap.webpack5 b/test/e2e/__snapshots__/server.test.js.snap.webpack5 index 9648854152..96e974a7ec 100644 --- a/test/e2e/__snapshots__/server.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/server.test.js.snap.webpack5 @@ -1,8 +1,4 @@ -exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > console messages 1`] = ` -[] -`; - -exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) 1`] = ` { "ca": "", "cert": "", @@ -14,24 +10,24 @@ exports[`server option > as object > allow to pass more options > should handle } `; -exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > allow to pass more options > should handle GET request to index route (/) 5`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) 1`] = ` { "ca": [ "", @@ -50,24 +46,24 @@ exports[`server option > as object > ca, pfx, key and cert are array of buffers } `; -exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are array of buffers > should handle GET request to index route (/) 5`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) 1`] = ` { "ca": [ "", @@ -86,24 +82,24 @@ exports[`server option > as object > ca, pfx, key and cert are array of paths to } `; -exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of paths to files > should handle GET request to index route (/) 5`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) 1`] = ` { "ca": [ "-----BEGIN RSA PRIVATE KEY----- @@ -198,24 +194,24 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are array of strings > should handle GET request to index route (/) 5`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) 1`] = ` { "ca": "", "cert": "", @@ -226,24 +222,24 @@ exports[`server option > as object > ca, pfx, key and cert are buffer > should h } `; -exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer > should handle GET request to index route (/) 5`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) 1`] = ` { "ca": "", "cert": "", @@ -262,24 +258,24 @@ exports[`server option > as object > ca, pfx, key and cert are buffer, key and p } `; -exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are buffer, key and pfx are objects > should handle GET request to index route (/) 5`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) 1`] = ` { "ca": "", "cert": "", @@ -290,24 +286,24 @@ exports[`server option > as object > ca, pfx, key and cert are paths to files > } `; -exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are paths to files > should handle GET request to index route (/) 5`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) 1`] = ` { "ca": "-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kv @@ -394,24 +390,24 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > ca, pfx, key and cert are strings > should handle GET request to index route (/) 5`] = ` [] `; -exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > https options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) 1`] = ` { "ca": "-----BEGIN RSA PRIVATE KEY----- MIIEpQIBAAKCAQEAxAUVLFM+K3XDLQkBi7xt0s1Ip7JoHYDskzUDQNHjjMkUq5kv @@ -506,52 +502,56 @@ QyvMqmN1kGy20SZbQDD/fLfqBQ== } `; -exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > custom server with options > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as object > custom server with options > should handle GET request to index route (/) > http options 1`] = ` +exports[`server option > as object > ca, pfx, key and cert are strings, key and pfx are objects > should handle GET request to index route (/) 5`] = ` +[] +`; + +exports[`server option > as object > custom server with options > should handle GET request to index route (/) 1`] = ` { "maxHeaderSize": 16384, } `; -exports[`server option > as object > custom server with options > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as object > custom server with options > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > custom server with options > should handle GET request to index route (/) 2`] = ` 200 `; -exports[`server option > as object > custom server with options > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > custom server with options > should handle GET request to index route (/) 3`] = ` "Heyo. " `; -exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as object > custom server with options > should handle GET request to index route (/) 4`] = ` +[] +`; + +exports[`server option > as object > custom server with options > should handle GET request to index route (/) 5`] = ` +[] +`; + +exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) 1`] = ` 200 `; -exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as object > should support the "requestCert" option > should handle GET request to index route (/) 2`] = ` "Heyo. " `; -exports[`server option > as object > should support the "requestCert" option > should pass options to the 'https.createServer' method > https options 1`] = ` +exports[`server option > as object > should support the "requestCert" option > should pass options to the 'https.createServer' method 1`] = ` { "cert": "", "key": "", @@ -561,53 +561,53 @@ exports[`server option > as object > should support the "requestCert" option > s } `; -exports[`server option > as string > custom-http > should handle GET request to index route (/) > console messages 1`] = ` -[] -`; - -exports[`server option > as string > custom-http > should handle GET request to index route (/) > page errors 1`] = ` -[] -`; - -exports[`server option > as string > custom-http > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as string > custom-http > should handle GET request to index route (/) 1`] = ` 200 `; -exports[`server option > as string > custom-http > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as string > custom-http > should handle GET request to index route (/) 2`] = ` "Heyo. " `; -exports[`server option > as string > http > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as string > custom-http > should handle GET request to index route (/) 3`] = ` [] `; -exports[`server option > as string > http > should handle GET request to index route (/) > page errors 1`] = ` +exports[`server option > as string > custom-http > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as string > http > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as string > http > should handle GET request to index route (/) 1`] = ` 200 `; -exports[`server option > as string > http > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as string > http > should handle GET request to index route (/) 2`] = ` "Heyo. " `; -exports[`server option > as string > https > should handle GET request to index route (/) > console messages 1`] = ` +exports[`server option > as string > http > should handle GET request to index route (/) 3`] = ` [] `; -exports[`server option > as string > https > should handle GET request to index route (/) > page errors 1`] = ` +exports[`server option > as string > http > should handle GET request to index route (/) 4`] = ` [] `; -exports[`server option > as string > https > should handle GET request to index route (/) > response status 1`] = ` +exports[`server option > as string > https > should handle GET request to index route (/) 1`] = ` 200 `; -exports[`server option > as string > https > should handle GET request to index route (/) > response text 1`] = ` +exports[`server option > as string > https > should handle GET request to index route (/) 2`] = ` "Heyo. " `; + +exports[`server option > as string > https > should handle GET request to index route (/) 3`] = ` +[] +`; + +exports[`server option > as string > https > should handle GET request to index route (/) 4`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 index 00b3a25cab..fa26de3eab 100644 --- a/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-exit-signals.test.js.snap.webpack5 @@ -1,4 +1,8 @@ -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > console messages 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT 1`] = ` +200 +`; + +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -6,15 +10,15 @@ exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals ] `; -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > page errors 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT 3`] = ` [] `; -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGINT > response status 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM 1`] = ` 200 `; -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > console messages 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -22,10 +26,6 @@ exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals ] `; -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > page errors 1`] = ` +exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM 3`] = ` [] `; - -exports[`setupExitSignals option > should handle 'SIGINT' and 'SIGTERM' signals > should close and exit on SIGTERM > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 index 4eeb43d618..be66f185f5 100644 --- a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 @@ -1,13 +1,21 @@ -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > console messages 1`] = ` -[] +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 10`] = ` +"text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > page errors 1`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 11`] = ` +200 +`; + +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 12`] = ` +"setup-middlewares option GET" +`; + +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 13`] = ` [] `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 14`] = ` +[] `; exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 2`] = ` @@ -22,10 +30,6 @@ exports[`setupMiddlewares option > should handle GET request to /setup-middlewar "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 1`] = ` -200 -`; - exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 2`] = ` 200 `; @@ -38,10 +42,6 @@ exports[`setupMiddlewares option > should handle GET request to /setup-middlewar 200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 1`] = ` -"setup-middlewares option GET" -`; - exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 2`] = ` "Hello World with path!" `; @@ -54,22 +54,22 @@ exports[`setupMiddlewares option > should handle GET request to /setup-middlewar "Hello World as function!" `; -exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > console messages 1`] = ` -[] +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 1`] = ` +"text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > page errors 1`] = ` -[] +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 2`] = ` +200 `; -exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response headers content-type 1`] = ` -"text/html; charset=utf-8" +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 3`] = ` +"setup-middlewares option POST" `; -exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response status 1`] = ` -200 +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 4`] = ` +[] `; -exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route > response text 1`] = ` -"setup-middlewares option POST" +exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 5`] = ` +[] `; diff --git a/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 b/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 index 0f08bf903a..611c8ad3e5 100644 --- a/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/static-directory.test.js.snap.webpack5 @@ -1,35 +1,25 @@ -exports[`static.directory option > defaults to PWD > should handle request to /index.html > console messages 1`] = ` -[] -`; - -exports[`static.directory option > defaults to PWD > should handle request to /index.html > page errors 1`] = ` -[] -`; - -exports[`static.directory option > defaults to PWD > should handle request to /index.html > response status 1`] = ` +exports[`static.directory option > defaults to PWD > should handle request to /index.html 1`] = ` 200 `; -exports[`static.directory option > defaults to PWD > should handle request to /index.html > response text 1`] = ` +exports[`static.directory option > defaults to PWD > should handle request to /index.html 2`] = ` "Heyo. " `; -exports[`static.directory option > disabled > should not handle request to /other.html (404) > console messages 1`] = ` -[ - "Failed to load resource: the server responded with a status of 404 (Not Found)", -] +exports[`static.directory option > defaults to PWD > should handle request to /index.html 3`] = ` +[] `; -exports[`static.directory option > disabled > should not handle request to /other.html (404) > page errors 1`] = ` +exports[`static.directory option > defaults to PWD > should handle request to /index.html 4`] = ` [] `; -exports[`static.directory option > disabled > should not handle request to /other.html (404) > response status 1`] = ` +exports[`static.directory option > disabled > should not handle request to /other.html (404) 1`] = ` 404 `; -exports[`static.directory option > disabled > should not handle request to /other.html (404) > response text 1`] = ` +exports[`static.directory option > disabled > should not handle request to /other.html (404) 2`] = ` " @@ -43,50 +33,50 @@ exports[`static.directory option > disabled > should not handle request to /othe " `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > console messages 1`] = ` -[] +exports[`static.directory option > disabled > should not handle request to /other.html (404) 3`] = ` +[ + "Failed to load resource: the server responded with a status of 404 (Not Found)", +] `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > page errors 1`] = ` +exports[`static.directory option > disabled > should not handle request to /other.html (404) 4`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) 1`] = ` 200 `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) 2`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should list the files inside the assets folder (200) 3`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > console messages 1`] = ` -[ - "Failed to load resource: the server responded with a status of 404 (Not Found)", -] +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) 3`] = ` +[] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the default static.serveIndex option (true) > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) 1`] = ` 404 `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) > response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) 2`] = ` " @@ -100,116 +90,126 @@ exports[`static.directory option > test listing files in folders without index.h " `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` -[] +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) 3`] = ` +[ + "Failed to load resource: the server responded with a status of 404 (Not Found)", +] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should not list the files inside the assets folder (404) 4`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > console messages 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 3`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 1`] = ` 200 `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 2`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 3`] = ` [] `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.directory option > to directory > should handle request to index route > console messages 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 3`] = ` [] `; -exports[`static.directory option > to directory > should handle request to index route > page errors 1`] = ` +exports[`static.directory option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.directory option > to directory > should handle request to index route > response status 1`] = ` +exports[`static.directory option > to directory > should handle request to index route 1`] = ` 200 `; -exports[`static.directory option > to directory > should handle request to index route > response text 1`] = ` +exports[`static.directory option > to directory > should handle request to index route 2`] = ` "Heyo. " `; -exports[`static.directory option > to directory > should handle request to other file > console messages 1`] = ` +exports[`static.directory option > to directory > should handle request to index route 3`] = ` [] `; -exports[`static.directory option > to directory > should handle request to other file > page errors 1`] = ` +exports[`static.directory option > to directory > should handle request to index route 4`] = ` [] `; -exports[`static.directory option > to directory > should handle request to other file > response status 1`] = ` +exports[`static.directory option > to directory > should handle request to other file 1`] = ` 200 `; -exports[`static.directory option > to directory > should handle request to other file > response text 1`] = ` +exports[`static.directory option > to directory > should handle request to other file 2`] = ` "Other html " `; -exports[`static.directory option > to multiple directories > should handle request first directory > console messages 1`] = ` +exports[`static.directory option > to directory > should handle request to other file 3`] = ` [] `; -exports[`static.directory option > to multiple directories > should handle request first directory > page errors 1`] = ` +exports[`static.directory option > to directory > should handle request to other file 4`] = ` [] `; -exports[`static.directory option > to multiple directories > should handle request first directory > response status 1`] = ` +exports[`static.directory option > to multiple directories > should handle request first directory 1`] = ` 200 `; -exports[`static.directory option > to multiple directories > should handle request first directory > response text 1`] = ` +exports[`static.directory option > to multiple directories > should handle request first directory 2`] = ` "Heyo. " `; -exports[`static.directory option > to multiple directories > should handle request to second directory > console messages 1`] = ` +exports[`static.directory option > to multiple directories > should handle request first directory 3`] = ` [] `; -exports[`static.directory option > to multiple directories > should handle request to second directory > page errors 1`] = ` +exports[`static.directory option > to multiple directories > should handle request first directory 4`] = ` [] `; -exports[`static.directory option > to multiple directories > should handle request to second directory > response status 1`] = ` +exports[`static.directory option > to multiple directories > should handle request to second directory 1`] = ` 200 `; -exports[`static.directory option > to multiple directories > should handle request to second directory > response text 1`] = ` +exports[`static.directory option > to multiple directories > should handle request to second directory 2`] = ` "Foo! " `; + +exports[`static.directory option > to multiple directories > should handle request to second directory 3`] = ` +[] +`; + +exports[`static.directory option > to multiple directories > should handle request to second directory 4`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 b/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 index 846f0e087e..3849475a92 100644 --- a/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/static-public-path.test.js.snap.webpack5 @@ -1,296 +1,286 @@ -exports[`static.publicPath option > Content type > should handle request to example.txt > console messages 1`] = ` -[] -`; - -exports[`static.publicPath option > Content type > should handle request to example.txt > page errors 1`] = ` -[] +exports[`static.publicPath option > Content type > should handle request to example.txt 1`] = ` +200 `; -exports[`static.publicPath option > Content type > should handle request to example.txt > response header content-type 1`] = ` +exports[`static.publicPath option > Content type > should handle request to example.txt 2`] = ` "text/plain; charset=utf-8" `; -exports[`static.publicPath option > Content type > should handle request to example.txt > response status 1`] = ` -200 -`; - -exports[`static.publicPath option > defaults to CWD > should handle request to page > console messages 1`] = ` +exports[`static.publicPath option > Content type > should handle request to example.txt 3`] = ` [] `; -exports[`static.publicPath option > defaults to CWD > should handle request to page > page errors 1`] = ` +exports[`static.publicPath option > Content type > should handle request to example.txt 4`] = ` [] `; -exports[`static.publicPath option > defaults to CWD > should handle request to page > response status 1`] = ` +exports[`static.publicPath option > defaults to CWD > should handle request to page 1`] = ` 200 `; -exports[`static.publicPath option > defaults to CWD > should handle request to page > response text 1`] = ` +exports[`static.publicPath option > defaults to CWD > should handle request to page 2`] = ` "Heyo. " `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > console messages 1`] = ` +exports[`static.publicPath option > defaults to CWD > should handle request to page 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > page errors 1`] = ` +exports[`static.publicPath option > defaults to CWD > should handle request to page 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path 2`] = ` "Foo! " `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the /foo route of second path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path 2`] = ` "Heyo. " `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the index of first path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path 2`] = ` "Other html " `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries > should handle request to the other file of first path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path 2`] = ` "Foo! " `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of first path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path 2`] = ` "Foo! " `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the /foo route of second path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path 2`] = ` "Heyo. " `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path 3`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the index of first path 4`] = ` [] `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > response status 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path 1`] = ` 200 `; -exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path > response text 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path 2`] = ` "Other html " `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > console messages 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > page errors 1`] = ` +exports[`static.publicPath option > multiple static.publicPath entries with publicPath array > should handle request to the other file of first path 4`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request 1`] = ` 200 `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request 2`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle GET request 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request 1`] = ` 200 `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > console messages 1`] = ` -[ - "Failed to load resource: the server responded with a status of 404 (Not Found)", -] +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request 2`] = ` +[] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should handle HEAD request 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request 1`] = ` 404 `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request 2`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle DELETE request 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request 1`] = ` 404 `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request 2`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PATCH request 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request 1`] = ` 404 `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > console messages 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request 2`] = ` [ "Failed to load resource: the server responded with a status of 404 (Not Found)", ] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle POST request 3`] = ` [] `; -exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request > response status 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request 1`] = ` 404 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > console messages 1`] = ` -[] +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request 2`] = ` +[ + "Failed to load resource: the server responded with a status of 404 (Not Found)", +] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > page errors 1`] = ` +exports[`static.publicPath option > should ignore methods other than GET and HEAD > should not handle PUT request 3`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) 1`] = ` 200 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) 2`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should list the files inside the assets folder (200) 3`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) 3`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex default (true) > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > console messages 1`] = ` -[ - "Failed to load resource: the server responded with a status of 404 (Not Found)", -] +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 3`] = ` +[] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) 1`] = ` 404 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) > response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) 2`] = ` " @@ -304,99 +294,109 @@ exports[`static.publicPath option > test listing files in folders without index. " `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > console messages 1`] = ` -[] +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) 3`] = ` +[ + "Failed to load resource: the server responded with a status of 404 (Not Found)", +] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: false > shouldn't list the files inside the assets folder (404) 4`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 1`] = ` 200 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > console messages 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 2`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should list the files inside the assets folder (200) 3`] = ` [] `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response status 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 1`] = ` 200 `; -exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) > response text 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 2`] = ` "Heyo " `; -exports[`static.publicPath option > to directory > should handle request to index > console messages 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 3`] = ` [] `; -exports[`static.publicPath option > to directory > should handle request to index > page errors 1`] = ` +exports[`static.publicPath option > test listing files in folders without index.html using the option static.serveIndex: true > should show Heyo. because bar has index.html inside it (200) 4`] = ` [] `; -exports[`static.publicPath option > to directory > should handle request to index > response status 1`] = ` +exports[`static.publicPath option > to directory > should handle request to index 1`] = ` 200 `; -exports[`static.publicPath option > to directory > should handle request to index > response text 1`] = ` +exports[`static.publicPath option > to directory > should handle request to index 2`] = ` "Heyo. " `; -exports[`static.publicPath option > to directory > should handle request to other file > console messages 1`] = ` +exports[`static.publicPath option > to directory > should handle request to index 3`] = ` [] `; -exports[`static.publicPath option > to directory > should handle request to other file > page errors 1`] = ` +exports[`static.publicPath option > to directory > should handle request to index 4`] = ` [] `; -exports[`static.publicPath option > to directory > should handle request to other file > response status 1`] = ` +exports[`static.publicPath option > to directory > should handle request to other file 1`] = ` 200 `; -exports[`static.publicPath option > to directory > should handle request to other file > response text 1`] = ` +exports[`static.publicPath option > to directory > should handle request to other file 2`] = ` "Other html " `; -exports[`static.publicPath option > to multiple directories > should handle request to first directory > console messages 1`] = ` +exports[`static.publicPath option > to directory > should handle request to other file 3`] = ` [] `; -exports[`static.publicPath option > to multiple directories > should handle request to first directory > page errors 1`] = ` +exports[`static.publicPath option > to directory > should handle request to other file 4`] = ` [] `; -exports[`static.publicPath option > to multiple directories > should handle request to first directory > response status 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to first directory 1`] = ` 200 `; -exports[`static.publicPath option > to multiple directories > should handle request to first directory > response text 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to first directory 2`] = ` "Heyo. " `; -exports[`static.publicPath option > to multiple directories > should handle request to second directory > console messages 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to first directory 3`] = ` [] `; -exports[`static.publicPath option > to multiple directories > should handle request to second directory > page errors 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to first directory 4`] = ` [] `; -exports[`static.publicPath option > to multiple directories > should handle request to second directory > response status 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to second directory 1`] = ` 200 `; -exports[`static.publicPath option > to multiple directories > should handle request to second directory > response text 1`] = ` +exports[`static.publicPath option > to multiple directories > should handle request to second directory 2`] = ` "Foo! " `; + +exports[`static.publicPath option > to multiple directories > should handle request to second directory 3`] = ` +[] +`; + +exports[`static.publicPath option > to multiple directories > should handle request to second directory 4`] = ` +[] +`; diff --git a/test/e2e/__snapshots__/target.test.js.snap.webpack5 b/test/e2e/__snapshots__/target.test.js.snap.webpack5 index eb68c93d01..62f2319d3d 100644 --- a/test/e2e/__snapshots__/target.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/target.test.js.snap.webpack5 @@ -1,8 +1,8 @@ -exports[`target > should work using "async-node" target > console messages 1`] = ` +exports[`target > should work using "async-node" target 1`] = ` [] `; -exports[`target > should work using "browserslist:defaults" target > console messages 1`] = ` +exports[`target > should work using "browserslist:defaults" target 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -10,57 +10,57 @@ exports[`target > should work using "browserslist:defaults" target > console mes ] `; -exports[`target > should work using "browserslist:defaults" target > page errors 1`] = ` +exports[`target > should work using "browserslist:defaults" target 2`] = ` [] `; -exports[`target > should work using "electron-main" target > console messages 1`] = ` +exports[`target > should work using "electron-main" target 1`] = ` [] `; -exports[`target > should work using "electron-preload" target > console messages 1`] = ` +exports[`target > should work using "electron-preload" target 1`] = ` [] `; -exports[`target > should work using "electron-renderer" target > console messages 1`] = ` +exports[`target > should work using "electron-renderer" target 1`] = ` [] `; -exports[`target > should work using "es5" target > console messages 1`] = ` +exports[`target > should work using "es5" target 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "Hey.", ] `; -exports[`target > should work using "es5" target > page errors 1`] = ` +exports[`target > should work using "es5" target 2`] = ` [] `; -exports[`target > should work using "false" target > console messages 1`] = ` +exports[`target > should work using "false" target 1`] = ` [ "[HMR] Waiting for update signal from WDS...", "Hey.", ] `; -exports[`target > should work using "false" target > page errors 1`] = ` +exports[`target > should work using "false" target 2`] = ` [] `; -exports[`target > should work using "node" target > console messages 1`] = ` +exports[`target > should work using "node" target 1`] = ` [] `; -exports[`target > should work using "node-webkit" target > console messages 1`] = ` +exports[`target > should work using "node-webkit" target 1`] = ` [] `; -exports[`target > should work using "nwjs" target > console messages 1`] = ` +exports[`target > should work using "nwjs" target 1`] = ` [] `; -exports[`target > should work using "web" target > console messages 1`] = ` +exports[`target > should work using "web" target 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -68,11 +68,11 @@ exports[`target > should work using "web" target > console messages 1`] = ` ] `; -exports[`target > should work using "web" target > page errors 1`] = ` +exports[`target > should work using "web" target 2`] = ` [] `; -exports[`target > should work using "web,es5" target > console messages 1`] = ` +exports[`target > should work using "web,es5" target 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -80,11 +80,11 @@ exports[`target > should work using "web,es5" target > console messages 1`] = ` ] `; -exports[`target > should work using "web,es5" target > page errors 1`] = ` +exports[`target > should work using "web,es5" target 2`] = ` [] `; -exports[`target > should work using "webworker" target > console messages 1`] = ` +exports[`target > should work using "webworker" target 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -92,12 +92,14 @@ exports[`target > should work using "webworker" target > console messages 1`] = ] `; -exports[`target > should work using "webworker" target > page errors 1`] = ` +exports[`target > should work using "webworker" target 2`] = ` [] `; -exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` > console messages 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets 1`] = ` [ + "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", + "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", "Worker said: I'm working before postMessage", @@ -105,14 +107,12 @@ exports[`target > should work using multi compiler mode with \`web\` and \`webwo ] `; -exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` > page errors 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets 2`] = ` [] `; -exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets > console messages 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` 1`] = ` [ - "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", - "[HMR] Waiting for update signal from WDS...", "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", "Worker said: I'm working before postMessage", @@ -120,6 +120,6 @@ exports[`target > should work using multi compiler mode with \`web\` and \`webwo ] `; -exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets > page errors 1`] = ` +exports[`target > should work using multi compiler mode with \`web\` and \`webworker\` targets with \`devServer: false\` 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 index 500dd8fb51..ce5944ccb0 100644 --- a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 @@ -1,127 +1,127 @@ -exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed 1`] = ` +200 +`; + +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should not crash if file doesn't exist > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with array config > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with array config > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with array config > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with array config > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with array config > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with array config > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with array of globs > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with array of globs > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with array of globs > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with array of globs > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with array of globs > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with array of globs > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with directory and ignored option to filter files > should not reload when a non-matching file is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with directory and ignored option to filter files > should not reload when a non-matching file is changed > response status 1`] = ` +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with directory and ignored option to filter files > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with ignored option using glob array > should not reload when an ignored glob file is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with ignored option using glob array > should not reload when an ignored glob file is changed > response status 1`] = ` +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with ignored option using glob array > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with ignored option using glob string > should not reload when an ignored glob file is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with ignored option using glob string > should not reload when an ignored glob file is changed > response status 1`] = ` +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with ignored option using glob string > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with object with multiple paths > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with object with single path > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with object with single path > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with object with single path > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with object with single path > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with object with single path > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with object with single path > should reload when file content is changed > response status 1`] = ` -200 -`; - exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 1`] = ` { "alwaysStat": true, @@ -663,44 +663,44 @@ exports[`watchFiles option > should work with options > {} should reload when fi 200 `; -exports[`watchFiles option > should work with string and glob > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with string and glob > should reload when file content is changed 1`] = ` +200 +`; + +exports[`watchFiles option > should work with string and glob > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with string and glob > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with string and glob > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with string and glob > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with string and path to directory > should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed 1`] = ` 200 `; -exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with string and path to file > should reload when file content is changed 3`] = ` [] `; - -exports[`watchFiles option > should work with string and path to file > should reload when file content is changed > response status 1`] = ` -200 -`; diff --git a/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 index ea9829f59f..de28937f66 100644 --- a/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-communication.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > console messages 1`] = ` +exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -8,11 +8,11 @@ exports[`web socket communication > should work and close web socket client conn ] `; -exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") > page errors 1`] = ` +exports[`web socket communication > should work and close web socket client connection when web socket server closed ("ws") 2`] = ` [] `; -exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > console messages 1`] = ` +exports[`web socket communication > should work and reconnect when the connection is lost ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,11 +30,11 @@ exports[`web socket communication > should work and reconnect when the connectio ] `; -exports[`web socket communication > should work and reconnect when the connection is lost ("ws") > page errors 1`] = ` +exports[`web socket communication > should work and reconnect when the connection is lost ("ws") 2`] = ` [] `; -exports[`web socket communication > should work and terminate client that is not alive ("ws") > console messages 1`] = ` +exports[`web socket communication > should work and terminate client that is not alive ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -42,6 +42,6 @@ exports[`web socket communication > should work and terminate client that is not ] `; -exports[`web socket communication > should work and terminate client that is not alive ("ws") > page errors 1`] = ` +exports[`web socket communication > should work and terminate client that is not alive ("ws") 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 index eabbe65016..0cbebc8b08 100644 --- a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 @@ -1,4 +1,4 @@ -exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") > console messages 1`] = ` +exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -9,23 +9,23 @@ exports[`web socket server URL > should not work and output disconnect wrong web ] `; -exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") > page errors 1`] = ` +exports[`web socket server URL > should not work and output disconnect wrong web socket URL ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", ] `; -exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work and throw an error on invalid web socket URL ("ws") 2`] = ` [ "Failed to construct 'WebSocket': The URL's scheme must be either 'http', 'https', 'ws', or 'wss'. 'unknown' is not allowed.", ] `; -exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -33,11 +33,11 @@ exports[`web socket server URL > should work behind proxy, when hostnames are di ] `; -exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are different ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -45,11 +45,11 @@ exports[`web socket server URL > should work behind proxy, when hostnames are di ] `; -exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are different and ports are same ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -57,11 +57,11 @@ exports[`web socket server URL > should work behind proxy, when hostnames are sa ] `; -exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work behind proxy, when hostnames are same and ports are different ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -69,11 +69,11 @@ exports[`web socket server URL > should work behind proxy, when the "host" optio ] `; -exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work behind proxy, when the "host" option is "local-ip" and the "port" option is "auto" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -81,11 +81,11 @@ exports[`web socket server URL > should work when "host" option is "local-ip" (" ] `; -exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ip" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -93,11 +93,11 @@ exports[`web socket server URL > should work when "host" option is "local-ipv4" ] `; -exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work when "host" option is "local-ipv4" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work when "host" option is IPv4 ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work when "host" option is IPv4 ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -105,11 +105,11 @@ exports[`web socket server URL > should work when "host" option is IPv4 ("ws") > ] `; -exports[`web socket server URL > should work when "host" option is IPv4 ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work when "host" option is IPv4 ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work when "port" option is "auto" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work when "port" option is "auto" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -117,11 +117,11 @@ exports[`web socket server URL > should work when "port" option is "auto" ("ws") ] `; -exports[`web socket server URL > should work when "port" option is "auto" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work when "port" option is "auto" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -129,11 +129,11 @@ exports[`web socket server URL > should work with "client.webSocketURL.*" option ] `; -exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.*" options ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -141,11 +141,11 @@ exports[`web socket server URL > should work with "client.webSocketURL.port" and ] `; -exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with "client.webSocketURL.port" and "webSocketServer.options.port" options as string ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with "server: 'https'" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with "server: 'https'" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -153,11 +153,11 @@ exports[`web socket server URL > should work with "server: 'https'" option ("ws" ] `; -exports[`web socket server URL > should work with "server: 'https'" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with "server: 'https'" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -165,11 +165,11 @@ exports[`web socket server URL > should work with default "/ws" value of the "cl ] `; -exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with default "/ws" value of the "client.webSocketURL.pathname" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -177,11 +177,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL" opti ] `; -exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL" option as "string" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -189,11 +189,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.host" ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -201,11 +201,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.host" ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.host" option using "0.0.0.0" value ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -213,11 +213,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.passw ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.password" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -225,7 +225,7 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > console messages 2`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -233,15 +233,15 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") > page errors 2`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -249,11 +249,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -261,11 +261,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending with slash ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -273,11 +273,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" ending without slash ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -285,11 +285,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option and the custom web socket server "path" using empty value ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -297,11 +297,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.port" ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -309,11 +309,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.port" ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option as string ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -321,11 +321,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.port" ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.port" option using "0" value ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -333,11 +333,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.proto ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -345,11 +345,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.proto ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "auto:" value ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -357,11 +357,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.proto ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.protocol" option using "http:" value and convert to "ws:" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -369,11 +369,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.usern ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" and "client.webSocketURL.password" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -381,11 +381,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.usern ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.username" option ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the custom web socket server "path" ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -393,11 +393,11 @@ exports[`web socket server URL > should work with the custom web socket server " ] `; -exports[`web socket server URL > should work with the custom web socket server "path" ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" ("ws") 2`] = ` [] `; -exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") > console messages 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -405,6 +405,6 @@ exports[`web socket server URL > should work with the custom web socket server " ] `; -exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") > page errors 1`] = ` +exports[`web socket server URL > should work with the custom web socket server "path" using empty value ("ws") 2`] = ` [] `; diff --git a/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 index 595665ebd9..d8505a22f4 100644 --- a/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server.test.js.snap.webpack5 @@ -1,9 +1,9 @@ -exports[`web socket server > should work allow to disable > console messages 1`] = ` +exports[`web socket server > should work allow to disable 1`] = ` [ "Hey.", ] `; -exports[`web socket server > should work allow to disable > page errors 1`] = ` +exports[`web socket server > should work allow to disable 2`] = ` [] `; diff --git a/test/e2e/allowed-hosts.test.js b/test/e2e/allowed-hosts.test.js index c2d5016faa..47f403eaf4 100644 --- a/test/e2e/allowed-hosts.test.js +++ b/test/e2e/allowed-hosts.test.js @@ -75,10 +75,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -148,10 +146,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -221,10 +217,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -295,10 +289,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -369,10 +361,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -444,10 +434,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -523,10 +511,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -602,10 +588,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -682,10 +666,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -762,10 +744,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -842,10 +822,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -922,10 +900,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1005,10 +981,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1085,10 +1059,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1165,12 +1137,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("(work) console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("(work) page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1247,10 +1215,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1330,10 +1296,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1410,10 +1374,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1493,11 +1455,9 @@ describe("allowed hosts", () => { const html = await page.content(); - await t.test("html", async (t) => t.assert.snapshot(html)); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(html); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1574,12 +1534,8 @@ describe("allowed hosts", () => { waitUntil: "networkidle0", }); - await t.test("(work) console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("(work) page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -1640,15 +1596,11 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should always allow `localhost` subdomain if options.allowedHosts is auto", async (t) => { @@ -1683,15 +1635,11 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should always allow value from the `host` options if options.allowedHosts is auto", async (t) => { @@ -1728,15 +1676,11 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should always allow value of the `host` option from the `client.webSocketURL` option if options.allowedHosts is auto", async (t) => { @@ -1774,15 +1718,11 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should always allow any host if options.allowedHosts is all", async (t) => { @@ -1816,15 +1756,11 @@ describe("allowed hosts", () => { throw new Error("Validation didn't fail"); } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should allow hosts in allowedHosts", async (t) => { @@ -1860,15 +1796,11 @@ describe("allowed hosts", () => { } } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should allow hosts that pass a wildcard in allowedHosts", async (t) => { @@ -1912,15 +1844,11 @@ describe("allowed hosts", () => { } } - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/api.test.js b/test/e2e/api.test.js index 42e82bce9d..462fc70d7c 100644 --- a/test/e2e/api.test.js +++ b/test/e2e/api.test.js @@ -65,15 +65,11 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -102,10 +98,8 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -140,10 +134,8 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await new Promise((resolve) => { @@ -211,10 +203,8 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -245,14 +235,10 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot( - firstConsoleMessages.map((message) => message.text()), - ), - ); - await t.test("page errors", async (t) => - t.assert.snapshot(firstPageErrors), + t.assert.snapshot( + firstConsoleMessages.map((message) => message.text()), ); + t.assert.snapshot(firstPageErrors); } finally { await server.stop(); } @@ -277,14 +263,10 @@ describe("API", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot( - secondConsoleMessages.map((message) => message.text()), - ), - ); - await t.test("page errors", async (t) => - t.assert.snapshot(secondPageErrors), + t.assert.snapshot( + secondConsoleMessages.map((message) => message.text()), ); + t.assert.snapshot(secondPageErrors); } finally { await browser.close(); await server.stop(); @@ -337,14 +319,10 @@ describe("API", () => { }); expect(callback).toHaveBeenCalledTimes(1); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); it("should use the provided `callback` function", async (t) => { @@ -357,15 +335,11 @@ describe("API", () => { }); expect(callback).toHaveBeenCalledTimes(1); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -482,17 +456,11 @@ describe("API", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -562,17 +530,11 @@ describe("API", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -642,17 +604,11 @@ describe("API", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -723,17 +679,11 @@ describe("API", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -806,17 +756,11 @@ describe("API", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors @@ -982,23 +926,15 @@ describe("API", () => { }, 100); }); - await t.test("web socket URL", async (t) => - t.assert.snapshot(webSocketRequests[0].url), - ); + t.assert.snapshot(webSocketRequests[0].url); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot( - consoleMessages.map((message) => message.text()).slice(0, 7), - ), + t.assert.snapshot( + consoleMessages.map((message) => message.text()).slice(0, 7), ); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } catch (error) { if (error.code === "EACCES") { // Retry mechanism for EACCES errors diff --git a/test/e2e/bonjour.test.js b/test/e2e/bonjour.test.js index f21cf78378..5b2711e23b 100644 --- a/test/e2e/bonjour.test.js +++ b/test/e2e/bonjour.test.js @@ -90,15 +90,11 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -165,15 +161,11 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -250,15 +242,11 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -338,15 +326,11 @@ describe("bonjour option", () => { expect(mockUnpublishAll).toHaveBeenCalledTimes(0); expect(mockDestroy).toHaveBeenCalledTimes(0); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/built-in-routes.test.js b/test/e2e/built-in-routes.test.js index abf2608d34..85f5825e97 100644 --- a/test/e2e/built-in-routes.test.js +++ b/test/e2e/built-in-routes.test.js @@ -53,15 +53,11 @@ describe("Built in routes", () => { expect(response.headers()["content-type"]).not.toBe("text/html"); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle GET request to directory index and list all middleware directories", async (t) => { @@ -80,23 +76,15 @@ describe("Built in routes", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("directory list", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle HEAD request to directory index", async (t) => { @@ -120,23 +108,15 @@ describe("Built in routes", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("directory list", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle GET request to magic async chunk", async (t) => { @@ -152,17 +132,11 @@ describe("Built in routes", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); }); it("should handle HEAD request to magic async chunk", async (t) => { @@ -183,17 +157,11 @@ describe("Built in routes", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); }); }); @@ -238,23 +206,15 @@ describe("Built in routes", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("directory list", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/client-reconnect.test.js b/test/e2e/client-reconnect.test.js index c39c0a35f7..e39a482df1 100644 --- a/test/e2e/client-reconnect.test.js +++ b/test/e2e/client-reconnect.test.js @@ -48,9 +48,7 @@ describe("client.reconnect option", () => { }); try { - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); } finally { await server.stop(); } @@ -71,7 +69,7 @@ describe("client.reconnect option", () => { }, 1000); }); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -114,9 +112,7 @@ describe("client.reconnect option", () => { }); try { - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); } finally { await server.stop(); } @@ -131,11 +127,9 @@ describe("client.reconnect option", () => { ); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -178,9 +172,7 @@ describe("client.reconnect option", () => { }); try { - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); } finally { await server.stop(); } @@ -195,11 +187,9 @@ describe("client.reconnect option", () => { ); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/client.test.js b/test/e2e/client.test.js index 02e4410f96..eab2ce7051 100644 --- a/test/e2e/client.test.js +++ b/test/e2e/client.test.js @@ -76,19 +76,13 @@ describe("client option", () => { // overlay should be true by default expect(server.options.client.overlay).toBe(true); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("webSockets", async (t) => - t.assert.snapshot(webSocketRequests.map((request) => request.url)), - ); + t.assert.snapshot(webSocketRequests.map((request) => request.url)); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -164,15 +158,11 @@ describe("client option", () => { waitUntil: "networkidle0", }); - await t.test("webSockets", async (t) => - t.assert.snapshot(webSocketRequests.map((request) => request.url)), - ); + t.assert.snapshot(webSocketRequests.map((request) => request.url)); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -236,21 +226,15 @@ describe("client option", () => { waitUntil: "networkidle0", }); - await t.test("webSockets", async (t) => - t.assert.snapshot(webSocketRequests), - ); + t.assert.snapshot(webSocketRequests); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); expect(await response.text()).not.toMatch(/client\/index\.js/); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -299,9 +283,7 @@ describe("client option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); const content = await response.text(); expect(content).toContain("CustomClientEntry.js"); diff --git a/test/e2e/compress.test.js b/test/e2e/compress.test.js index 50b3748133..d938eb88db 100644 --- a/test/e2e/compress.test.js +++ b/test/e2e/compress.test.js @@ -48,19 +48,13 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response headers content-encoding", async (t) => - t.assert.snapshot(response.headers()["content-encoding"]), - ); + t.assert.snapshot(response.headers()["content-encoding"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -109,19 +103,13 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response headers content-encoding", async (t) => - t.assert.snapshot(response.headers()["content-encoding"]), - ); + t.assert.snapshot(response.headers()["content-encoding"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -170,19 +158,13 @@ describe("compress option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response headers content-encoding", async (t) => - t.assert.snapshot(response.headers()["content-encoding"]), - ); + t.assert.snapshot(response.headers()["content-encoding"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/entry.test.js b/test/e2e/entry.test.js index 2639c91802..b7d9fa673f 100644 --- a/test/e2e/entry.test.js +++ b/test/e2e/entry.test.js @@ -61,10 +61,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -98,10 +96,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -140,10 +136,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -177,10 +171,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -220,10 +212,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -271,10 +261,8 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/foo.js` }); await waitForConsoleLogFinished(consoleMessages); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -322,10 +310,8 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/bar.js` }); await waitForConsoleLogFinished(consoleMessages); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -371,10 +357,8 @@ describe("entry", () => { await page.addScriptTag({ url: `http://localhost:${port}/foo.js` }); await waitForConsoleLogFinished(consoleMessages); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -416,10 +400,8 @@ describe("entry", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/headers.test.js b/test/e2e/headers.test.js index 67400fd7d0..bbd195fa26 100644 --- a/test/e2e/headers.test.js +++ b/test/e2e/headers.test.js @@ -55,19 +55,13 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-foo", async (t) => - t.assert.snapshot(response.headers()["x-foo"]), - ); + t.assert.snapshot(response.headers()["x-foo"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -125,23 +119,15 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-foo", async (t) => - t.assert.snapshot(response.headers()["x-foo"]), - ); + t.assert.snapshot(response.headers()["x-foo"]); - await t.test("response headers x-bar", async (t) => - t.assert.snapshot(response.headers()["x-bar"]), - ); + t.assert.snapshot(response.headers()["x-bar"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -190,19 +176,13 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-bar", async (t) => - t.assert.snapshot(response.headers()["x-bar"]), - ); + t.assert.snapshot(response.headers()["x-bar"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -251,19 +231,13 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-bar", async (t) => - t.assert.snapshot(response.headers()["x-bar"]), - ); + t.assert.snapshot(response.headers()["x-bar"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -321,23 +295,15 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-foo", async (t) => - t.assert.snapshot(response.headers()["x-foo"]), - ); + t.assert.snapshot(response.headers()["x-foo"]); - await t.test("response headers x-bar", async (t) => - t.assert.snapshot(response.headers()["x-bar"]), - ); + t.assert.snapshot(response.headers()["x-bar"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -389,19 +355,13 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-foo", async (t) => - t.assert.snapshot(response.headers()["x-foo"]), - ); + t.assert.snapshot(response.headers()["x-foo"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -453,16 +413,10 @@ describe("headers option", () => { waitUntil: "networkidle0", }); - await t.test("response headers x-foo", async (t) => - t.assert.snapshot(response.headers()["x-foo"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(response.headers()["x-foo"]); + t.assert.snapshot(response.status()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); const responseForHead = await req.get("/"); diff --git a/test/e2e/history-api-fallback.test.js b/test/e2e/history-api-fallback.test.js index 25e76571f2..9c992e70dd 100644 --- a/test/e2e/history-api-fallback.test.js +++ b/test/e2e/history-api-fallback.test.js @@ -58,23 +58,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -125,23 +117,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -196,23 +180,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should prefer static file over historyApiFallback", async (t) => { @@ -231,23 +207,15 @@ describe("historyApiFallback option", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -299,23 +267,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -379,23 +339,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("historyApiFallback respect rewrites and shows index for unknown urls", async (t) => { @@ -411,23 +363,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("historyApiFallback respect any other specified rewrites", async (t) => { @@ -443,23 +387,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -515,17 +451,11 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); expect(consoleSpy).toHaveBeenCalledWith( "Rewriting", @@ -535,11 +465,9 @@ describe("historyApiFallback option", () => { "/bar.html", ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -595,17 +523,11 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); expect(consoleSpy).toHaveBeenCalledWith( "Rewriting", @@ -615,11 +537,9 @@ describe("historyApiFallback option", () => { "/bar.html", ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -672,23 +592,15 @@ describe("historyApiFallback option", () => { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should perform HEAD request in same way as GET", async (t) => { @@ -706,17 +618,11 @@ describe("historyApiFallback option", () => { }; }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(responseGet.contentType), - ); + t.assert.snapshot(responseGet.contentType); - await t.test("response status", async (t) => - t.assert.snapshot(responseGet.statusText), - ); + t.assert.snapshot(responseGet.statusText); - await t.test("response text", async (t) => - t.assert.snapshot(responseGet.text), - ); + t.assert.snapshot(responseGet.text); const responseHead = await page.evaluate(async () => { const response = await fetch("/foo", { method: "HEAD" }); diff --git a/test/e2e/host.test.js b/test/e2e/host.test.js index 865a8c23e2..d7a875a75e 100644 --- a/test/e2e/host.test.js +++ b/test/e2e/host.test.js @@ -136,11 +136,9 @@ describe("host", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -210,11 +208,9 @@ describe("host", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -288,11 +284,9 @@ describe("host", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); } finally { delete process.env.WEBPACK_DEV_SERVER_BASE_PORT; diff --git a/test/e2e/hot-and-live-reload.test.js b/test/e2e/hot-and-live-reload.test.js index b112bc89d2..7b56ea840b 100644 --- a/test/e2e/hot-and-live-reload.test.js +++ b/test/e2e/hot-and-live-reload.test.js @@ -451,10 +451,8 @@ describe("hot and live reload", () => { expect(backgroundColorAfter).toBe("rgb(255, 0, 0)"); } - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); }); } }); @@ -515,15 +513,11 @@ describe("simple hot config HMR plugin", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -584,15 +578,11 @@ describe("simple hot config HMR plugin with already added HMR plugin", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -716,15 +706,11 @@ describe("multi compiler hot config HMR plugin", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -781,14 +767,10 @@ describe("hot disabled HMR plugin", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); diff --git a/test/e2e/ipc.test.js b/test/e2e/ipc.test.js index 60ff6fc5f3..cf82afa22a 100644 --- a/test/e2e/ipc.test.js +++ b/test/e2e/ipc.test.js @@ -97,10 +97,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -191,10 +189,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -303,10 +299,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${proxyPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); diff --git a/test/e2e/lazy-compilation.test.js b/test/e2e/lazy-compilation.test.js index f9b82e7be3..9ec482edc0 100644 --- a/test/e2e/lazy-compilation.test.js +++ b/test/e2e/lazy-compilation.test.js @@ -44,10 +44,8 @@ describe("lazy compilation", () => { }, 100); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -102,10 +100,8 @@ describe("lazy compilation", () => { }, 100); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/mime-types.test.js b/test/e2e/mime-types.test.js index c37e957467..5dfe513fbc 100644 --- a/test/e2e/mime-types.test.js +++ b/test/e2e/mime-types.test.js @@ -58,19 +58,13 @@ describe("mimeTypes option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -123,19 +117,13 @@ describe("mimeTypes option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/module-federation.test.js b/test/e2e/module-federation.test.js index c50007e152..73ed96ef7b 100644 --- a/test/e2e/module-federation.test.js +++ b/test/e2e/module-federation.test.js @@ -63,11 +63,9 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -121,11 +119,9 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should support the named entry export", async (t) => { @@ -153,11 +149,9 @@ describe("Module federation", () => { expect(exports).toBe("entry1"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -211,11 +205,9 @@ describe("Module federation", () => { expect(exports).toBe("entry2"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -264,11 +256,9 @@ describe("Module federation", () => { expect(remoteEntryTextContent).toMatch(/webpack\/hot\/dev-server\.js/); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should contain hot script in main.js", async (t) => { @@ -288,11 +278,9 @@ describe("Module federation", () => { expect(mainEntryTextContent).toMatch(/webpack\/hot\/dev-server\.js/); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/multi-compiler.test.js b/test/e2e/multi-compiler.test.js index 4de69e4296..a5f5d893c8 100644 --- a/test/e2e/multi-compiler.test.js +++ b/test/e2e/multi-compiler.test.js @@ -40,10 +40,8 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -78,10 +76,8 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -90,10 +86,8 @@ describe("multi compiler", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -152,10 +146,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -168,10 +160,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -233,10 +223,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -249,10 +237,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -306,10 +292,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -322,10 +306,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -379,10 +361,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -395,10 +375,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -450,10 +428,8 @@ describe("multi compiler", () => { await server.stop(); } - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); }); it("should work with universal configuration when hot and live reloads are enabled, and do hot reload for browser compiler by default when browser entry changed", async (t) => { @@ -523,10 +499,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -598,10 +572,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -669,10 +641,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -688,10 +658,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -760,10 +728,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); pageErrors = []; consoleMessages = []; @@ -779,10 +745,8 @@ describe("multi compiler", () => { await page.waitForNavigation({ waitUntil: "networkidle0" }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/on-listening.test.js b/test/e2e/on-listening.test.js index 87d1d97207..14c5ac231a 100644 --- a/test/e2e/on-listening.test.js +++ b/test/e2e/on-listening.test.js @@ -78,23 +78,15 @@ describe("onListening option", () => { expect(onListeningIsRunning).toBe(true); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle POST request to /listening/some/path route", async (t) => { @@ -122,22 +114,14 @@ describe("onListening option", () => { expect(onListeningIsRunning).toBe(true); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); diff --git a/test/e2e/overlay.test.js b/test/e2e/overlay.test.js index fc2512e069..349eac3ece 100644 --- a/test/e2e/overlay.test.js +++ b/test/e2e/overlay.test.js @@ -102,19 +102,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -151,19 +147,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -204,19 +196,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -255,19 +243,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -305,19 +289,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -345,12 +325,10 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html initial", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); const pathToFile = path.resolve( @@ -371,19 +349,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html with error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); fs.writeFileSync(pathToFile, originalCode); @@ -396,12 +370,10 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html after fix error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -429,12 +401,10 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html initial", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); const pathToFile = path.resolve( @@ -455,19 +425,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html with error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); fs.writeFileSync(pathToFile, "`;a"); @@ -483,19 +449,15 @@ describe("overlay", () => { overlayFrame = await overlayHandle.contentFrame(); overlayHtml = await overlayFrame.evaluate(() => document.body.outerHTML); - await t.test("page html with other error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); fs.writeFileSync(pathToFile, originalCode); @@ -508,12 +470,10 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html after fix error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -541,12 +501,10 @@ describe("overlay", () => { let overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html initial", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); const pathToFile = path.resolve( @@ -567,19 +525,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html with error", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); const frame = await page @@ -598,12 +552,10 @@ describe("overlay", () => { overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html after close", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); fs.writeFileSync(pathToFile, originalCode); @@ -693,12 +645,10 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -737,12 +687,10 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -828,19 +776,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -880,19 +824,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -934,19 +874,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -988,19 +924,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1037,12 +969,10 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1081,12 +1011,10 @@ describe("overlay", () => { const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1173,19 +1101,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1225,19 +1149,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1290,19 +1210,15 @@ describe("overlay", () => { /requires 'TrustedHTML' assignment/.test(item), ), ).toHaveLength(0); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1365,19 +1281,15 @@ describe("overlay", () => { /requires 'TrustedHTML' assignment/.test(item), ), ).toHaveLength(0); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1415,12 +1327,10 @@ describe("overlay", () => { const pageHtml = await page.evaluate(() => document.body.outerHTML); const overlayHandle = await page.$("#webpack-dev-server-client-overlay"); expect(overlayHandle).toBeNull(); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1462,19 +1372,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1516,19 +1422,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1569,19 +1471,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); await server.stop(); @@ -1600,12 +1498,10 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtmlAfterClose, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtmlAfterClose, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1655,19 +1551,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1718,19 +1610,15 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1772,12 +1660,10 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -1863,12 +1749,10 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format(overlayHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(overlayHtml, { + parser: "html", + }), ); } finally { await browser.close(); @@ -2006,24 +1890,20 @@ describe("overlay", () => { () => document.body.outerHTML, ); - await t.test("page html", async (t) => - t.assert.snapshot( - await prettier.format(pageHtml, { - parser: "html", - }), - ), + t.assert.snapshot( + await prettier.format(pageHtml, { + parser: "html", + }), ); - await t.test("overlay html", async (t) => - t.assert.snapshot( - await prettier.format( - overlayHtml.replace( - /", - ), - { - parser: "html", - }, + t.assert.snapshot( + await prettier.format( + overlayHtml.replace( + /", ), + { + parser: "html", + }, ), ); } finally { diff --git a/test/e2e/port.test.js b/test/e2e/port.test.js index 64bb3895bb..c179eea6df 100644 --- a/test/e2e/port.test.js +++ b/test/e2e/port.test.js @@ -91,10 +91,8 @@ describe("port", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/server.test.js b/test/e2e/server.test.js index 32c93ff9c2..bee4ca3b2a 100644 --- a/test/e2e/server.test.js +++ b/test/e2e/server.test.js @@ -83,19 +83,13 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -147,19 +141,13 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -211,19 +199,13 @@ describe("server option", () => { expect(HTTPVersion).not.toBe("h2"); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); @@ -300,19 +282,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -395,19 +369,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -488,19 +454,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -590,19 +548,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -669,19 +619,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -748,19 +690,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -920,19 +854,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -1020,19 +946,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -1108,19 +1026,11 @@ describe("server option", () => { waitUntil: "networkidle0", }); - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); @@ -1175,20 +1085,14 @@ describe("server option", () => { }); it("should pass options to the 'https.createServer' method", async (t) => { - await t.test("https options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); }); it("should handle GET request to index route (/)", async (t) => { const response = await req.get("/"); - await t.test("response status", async (t) => - t.assert.snapshot(response.status), - ); - await t.test("response text", async (t) => - t.assert.snapshot(response.text), - ); + t.assert.snapshot(response.status); + t.assert.snapshot(response.text); }); }); @@ -1256,19 +1160,11 @@ describe("server option", () => { ); expect(HTTPVersion).toBe("http/1.1"); - await t.test("http options", async (t) => - t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(normalizeOptions(createServerSpy.mock.calls[0][0])); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/setup-exit-signals.test.js b/test/e2e/setup-exit-signals.test.js index 618cd3cfbf..a4cd43509a 100644 --- a/test/e2e/setup-exit-signals.test.js +++ b/test/e2e/setup-exit-signals.test.js @@ -85,9 +85,7 @@ describe("setupExitSignals option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); process.emit(signal); @@ -115,11 +113,9 @@ describe("setupExitSignals option", () => { ), ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); } }); diff --git a/test/e2e/setup-middlewares.test.js b/test/e2e/setup-middlewares.test.js index 6b086b4e72..6b0426711f 100644 --- a/test/e2e/setup-middlewares.test.js +++ b/test/e2e/setup-middlewares.test.js @@ -100,43 +100,25 @@ describe("setupMiddlewares option", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(response.headers()["content-type"]); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); const response1 = await page.goto(`http://localhost:${port}/foo/bar`, { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response1.headers()["content-type"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response1.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response1.text()), - ); + t.assert.snapshot(response1.headers()["content-type"]); + t.assert.snapshot(response1.status()); + t.assert.snapshot(await response1.text()); const response2 = await page.goto(`http://localhost:${port}/foo/bar/baz`, { waitUntil: "networkidle0", }); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response2.headers()["content-type"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response2.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response2.text()), - ); + t.assert.snapshot(response2.headers()["content-type"]); + t.assert.snapshot(response2.status()); + t.assert.snapshot(await response2.text()); const response3 = await page.goto( `http://localhost:${port}/setup-middleware/unknown`, @@ -145,20 +127,12 @@ describe("setupMiddlewares option", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response3.headers()["content-type"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response3.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response3.text()), - ); + t.assert.snapshot(response3.headers()["content-type"]); + t.assert.snapshot(response3.status()); + t.assert.snapshot(await response3.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); it("should handle POST request to /setup-middleware/some/path route", async (t) => { @@ -184,18 +158,10 @@ describe("setupMiddlewares option", () => { }, ); - await t.test("response headers content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(response.headers()["content-type"]); + t.assert.snapshot(response.status()); + t.assert.snapshot(await response.text()); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); }); }); diff --git a/test/e2e/static-directory.test.js b/test/e2e/static-directory.test.js index b1c2453e6b..480cb2a85a 100644 --- a/test/e2e/static-directory.test.js +++ b/test/e2e/static-directory.test.js @@ -68,19 +68,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to other file", async (t) => { @@ -96,19 +90,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("watches folder recursively", () => @@ -202,19 +190,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -230,19 +212,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -297,18 +273,14 @@ describe("static.directory option", () => { const text = await response.text(); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); expect(text).toContain("example.txt"); expect(text).toContain("other.txt"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -324,19 +296,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -390,18 +356,14 @@ describe("static.directory option", () => { const text = await response.text(); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); expect(text).toContain("example.txt"); expect(text).toContain("other.txt"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -417,19 +379,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -478,19 +434,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to second directory", async (t) => { @@ -506,19 +456,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -678,19 +622,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -743,19 +681,13 @@ describe("static.directory option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/static-public-path.test.js b/test/e2e/static-public-path.test.js index 19136c414d..c080d880e6 100644 --- a/test/e2e/static-public-path.test.js +++ b/test/e2e/static-public-path.test.js @@ -69,19 +69,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to other file", async (t) => { @@ -100,19 +94,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -169,19 +157,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -200,19 +182,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -269,17 +245,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); expect(await response.text()).toContain("other.txt"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -298,19 +270,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -367,17 +333,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); expect(await response.text()).toContain("other.txt"); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should show Heyo. because bar has index.html inside it (200)", async (t) => { @@ -396,19 +358,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -469,19 +425,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to second directory", async (t) => { @@ -500,19 +450,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -571,19 +515,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -638,19 +576,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response header content-type", async (t) => - t.assert.snapshot(response.headers()["content-type"]), - ); + t.assert.snapshot(response.headers()["content-type"]); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -705,15 +637,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle HEAD request", async (t) => { @@ -737,15 +665,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should not handle POST request", async (t) => { @@ -769,15 +693,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should not handle PUT request", async (t) => { @@ -801,15 +721,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should not handle DELETE request", async (t) => { @@ -833,15 +749,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should not handle PATCH request", async (t) => { @@ -865,15 +777,11 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -936,19 +844,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to the other file of first path", async (t) => { @@ -967,19 +869,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to the /foo route of second path", async (t) => { @@ -998,19 +894,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); @@ -1073,19 +963,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to the other file of first path", async (t) => { @@ -1104,19 +988,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to the /foo route of first path", async (t) => { @@ -1135,19 +1013,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); it("should handle request to the /foo route of second path", async (t) => { @@ -1166,19 +1038,13 @@ describe("static.publicPath option", () => { }, ); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("response text", async (t) => - t.assert.snapshot(await response.text()), - ); + t.assert.snapshot(await response.text()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); }); }); }); diff --git a/test/e2e/target.test.js b/test/e2e/target.test.js index 10e3e7a4e8..1b902a591b 100644 --- a/test/e2e/target.test.js +++ b/test/e2e/target.test.js @@ -68,9 +68,7 @@ describe("target", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); if ( target === "node" || @@ -88,9 +86,7 @@ describe("target", () => { expect(hasRequireOrGlobalError).toBe(true); } else { - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); } } finally { await browser.close(); @@ -123,16 +119,14 @@ describe("target", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot( - sortByTerm( - consoleMessages.map((message) => message.text()), - "Worker said:", - ), + t.assert.snapshot( + sortByTerm( + consoleMessages.map((message) => message.text()), + "Worker said:", ), ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -174,16 +168,14 @@ describe("target", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot( - sortByTerm( - consoleMessages.map((message) => message.text()), - "Worker said:", - ), + t.assert.snapshot( + sortByTerm( + consoleMessages.map((message) => message.text()), + "Worker said:", ), ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/watch-files.test.js b/test/e2e/watch-files.test.js index 98a45a2944..c95170139c 100644 --- a/test/e2e/watch-files.test.js +++ b/test/e2e/watch-files.test.js @@ -63,15 +63,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -136,15 +132,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -209,15 +201,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -284,15 +272,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -363,15 +347,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -403,9 +383,7 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -482,15 +460,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -520,9 +494,7 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -599,15 +571,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -637,9 +605,7 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); // change ignored file content fs.writeFileSync(ignoredFile, "// changed", "utf8"); @@ -715,15 +681,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); await new Promise((resolve) => { server.staticWatchers[0].on("change", async (changedPath) => { @@ -793,15 +755,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); @@ -868,15 +826,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "foo", "utf8"); @@ -951,15 +905,11 @@ describe("watchFiles option", () => { waitUntil: "networkidle0", }); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "foo", "utf8"); @@ -1117,17 +1067,11 @@ describe("watchFiles option", () => { // should pass correct options to chokidar config t.assert.snapshot(server.staticWatchers[0].options); - await t.test("response status", async (t) => - t.assert.snapshot(response.status()), - ); + t.assert.snapshot(response.status()); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); + t.assert.snapshot(consoleMessages.map((message) => message.text())); - await t.test("page errors", async (t) => - t.assert.snapshot(pageErrors), - ); + t.assert.snapshot(pageErrors); // change file content fs.writeFileSync(file, "Kurosaki Ichigo", "utf8"); diff --git a/test/e2e/web-socket-communication.test.js b/test/e2e/web-socket-communication.test.js index 3bddd20424..43adb64875 100644 --- a/test/e2e/web-socket-communication.test.js +++ b/test/e2e/web-socket-communication.test.js @@ -57,10 +57,8 @@ describe("web socket communication", () => { }, 100); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages); + t.assert.snapshot(pageErrors); } finally { await browser.close(); } @@ -105,10 +103,8 @@ describe("web socket communication", () => { }); expect(server.webSocketServer.clients).toHaveLength(0); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await server.stop(); } @@ -151,10 +147,8 @@ describe("web socket communication", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); diff --git a/test/e2e/web-socket-server-url.test.js b/test/e2e/web-socket-server-url.test.js index 8b4d1729a1..fe399668c3 100644 --- a/test/e2e/web-socket-server-url.test.js +++ b/test/e2e/web-socket-server-url.test.js @@ -93,10 +93,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); await browser.close(); @@ -181,10 +179,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); await browser.close(); @@ -273,10 +269,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${devServerHost}:${devServerPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -366,10 +360,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${resolvedHost}:${resolvedPort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { proxy.close(); @@ -436,10 +428,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -502,10 +492,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -568,10 +556,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://localhost:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -634,10 +620,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -699,10 +683,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -765,10 +747,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -831,10 +811,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -903,10 +881,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port2}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -968,10 +944,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1033,10 +1007,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1094,10 +1066,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1159,10 +1129,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://zenitsu@127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1225,10 +1193,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://foo:chuntaro@127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1292,10 +1258,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://zenitsu:chuntaro@127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1358,10 +1322,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/foo/bar`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1425,10 +1387,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1496,10 +1456,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/foo/bar`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1567,10 +1525,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1638,10 +1594,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws/`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1710,10 +1664,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1779,10 +1731,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/custom-ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1839,10 +1789,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1900,10 +1848,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -1960,10 +1906,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://${hostname}:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -2020,10 +1964,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain(`wss://${hostname}:${port1}/ws`); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -2085,10 +2027,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${resolvedFreePort}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -2156,10 +2096,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -2220,10 +2158,8 @@ describe("web socket server URL", () => { expect(webSocketRequest.url).toContain( `${websocketURLProtocol}://127.0.0.1:${port1}/ws`, ); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); @@ -2263,14 +2199,10 @@ describe("web socket server URL", () => { waitUntil: "networkidle0", }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => - t.assert.snapshot( - pageErrors.map((pageError) => - pageError.message.split("\n")[0].replace("SyntaxError: ", ""), - ), + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot( + pageErrors.map((pageError) => + pageError.message.split("\n")[0].replace("SyntaxError: ", ""), ), ); } finally { @@ -2331,13 +2263,9 @@ describe("web socket server URL", () => { }, 100); }); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages), - ); - await t.test("page errors", async (t) => - t.assert.snapshot( - pageErrors.map((pageError) => pageError.message.split("\n")[0]), - ), + t.assert.snapshot(consoleMessages); + t.assert.snapshot( + pageErrors.map((pageError) => pageError.message.split("\n")[0]), ); } finally { await browser.close(); diff --git a/test/e2e/web-socket-server.test.js b/test/e2e/web-socket-server.test.js index a8136a6cd4..80cbbeb34d 100644 --- a/test/e2e/web-socket-server.test.js +++ b/test/e2e/web-socket-server.test.js @@ -56,10 +56,8 @@ describe("web socket server", () => { }); expect(webSocketRequests).toHaveLength(0); - await t.test("console messages", async (t) => - t.assert.snapshot(consoleMessages.map((message) => message.text())), - ); - await t.test("page errors", async (t) => t.assert.snapshot(pageErrors)); + t.assert.snapshot(consoleMessages.map((message) => message.text())); + t.assert.snapshot(pageErrors); } finally { await browser.close(); await server.stop(); From 8b3dd34c6f23a695ff6c4f3757457c09fd013cf1 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 14:18:39 -0500 Subject: [PATCH 16/22] fixup! --- .../validate-options.test.js.snap.webpack5 | 232 ++++++++-------- .../allowed-hosts.test.js.snap.webpack5 | 4 +- .../__snapshots__/api.test.js.snap.webpack5 | 8 +- .../multi-compiler.test.js.snap.webpack5 | 56 ++-- .../overlay.test.js.snap.webpack5 | 14 +- .../__snapshots__/port.test.js.snap.webpack5 | 12 +- .../setup-middlewares.test.js.snap.webpack5 | 38 +-- .../__snapshots__/stats.test.js.snap.webpack5 | 14 +- .../watch-files.test.js.snap.webpack5 | 260 +++++++++--------- ...eb-socket-server-url.test.js.snap.webpack5 | 6 +- 10 files changed, 322 insertions(+), 322 deletions(-) diff --git a/test/__snapshots__/validate-options.test.js.snap.webpack5 b/test/__snapshots__/validate-options.test.js.snap.webpack5 index ec0a5112f4..43dbda2f6b 100644 --- a/test/__snapshots__/validate-options.test.js.snap.webpack5 +++ b/test/__snapshots__/validate-options.test.js.snap.webpack5 @@ -1,13 +1,3 @@ -exports[`options > validate > should throw an error on the "allowedHosts" option with '[""]' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.allowedHosts[0] should be a non-empty string." -`; - -exports[`options > validate > should throw an error on the "allowedHosts" option with '[]' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.allowedHosts should be a non-empty array." -`; - exports[`options > validate > should throw an error on the "allowedHosts" option with '123' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be one of these: @@ -22,6 +12,16 @@ exports[`options > validate > should throw an error on the "allowedHosts" option * options.allowedHosts should be a non-empty string." `; +exports[`options > validate > should throw an error on the "allowedHosts" option with '[""]' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.allowedHosts[0] should be a non-empty string." +`; + +exports[`options > validate > should throw an error on the "allowedHosts" option with '[]' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.allowedHosts should be a non-empty array." +`; + exports[`options > validate > should throw an error on the "allowedHosts" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.allowedHosts should be one of these: @@ -78,6 +78,18 @@ exports[`options > validate > should throw an error on the "bonjour" option with -> Read more at https://github.com/watson/bonjour#initializing" `; +exports[`options > validate > should throw an error on the "client" option with 'whoops!' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.client should be one of these: + false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } + -> Allows to specify options for client script in the browser or disable client script. + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverclient + Details: + * options.client should be false. + * options.client should be an object: + object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? }" +`; + exports[`options > validate > should throw an error on the "client" option with '{"logging":"silent"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.client.logging should be one of these: @@ -246,18 +258,6 @@ exports[`options > validate > should throw an error on the "client" option with -> Tells clients connected to devServer to use the provided username to authenticate." `; -exports[`options > validate > should throw an error on the "client" option with 'whoops!' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.client should be one of these: - false | object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? } - -> Allows to specify options for client script in the browser or disable client script. - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverclient - Details: - * options.client should be false. - * options.client should be an object: - object { logging?, overlay?, progress?, reconnect?, webSocketTransport?, webSocketURL? }" -`; - exports[`options > validate > should throw an error on the "compress" option with '' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.compress should be a boolean. @@ -273,17 +273,6 @@ exports[`options > validate > should throw an error on the "devMiddleware" optio -> Read more at https://webpack.js.org/configuration/dev-server/#devserverdevmiddleware" `; -exports[`options > validate > should throw an error on the "headers" option with '[]' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.headers should be a non-empty array." -`; - -exports[`options > validate > should throw an error on the "headers" option with '[{"foo":"bar"}]' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.headers[0] has an unknown property 'foo'. These properties are valid: - object { key?, value? }" -`; - exports[`options > validate > should throw an error on the "headers" option with '1' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers should be one of these: @@ -298,6 +287,17 @@ exports[`options > validate > should throw an error on the "headers" option with * options.headers should be an instance of function." `; +exports[`options > validate > should throw an error on the "headers" option with '[]' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.headers should be a non-empty array." +`; + +exports[`options > validate > should throw an error on the "headers" option with '[{"foo":"bar"}]' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.headers[0] has an unknown property 'foo'. These properties are valid: + object { key?, value? }" +`; + exports[`options > validate > should throw an error on the "headers" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.headers should be one of these: @@ -377,7 +377,7 @@ exports[`options > validate > should throw an error on the "hot" option with 'fo * options.hot should be "only"." `; -exports[`options > validate > should throw an error on the "ipc" option with '{}' value 1`] = ` +exports[`options > validate > should throw an error on the "ipc" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.ipc should be one of these: non-empty string | true @@ -385,11 +385,10 @@ exports[`options > validate > should throw an error on the "ipc" option with '{} -> Read more at https://webpack.js.org/configuration/dev-server/#devserveripc Details: * options.ipc should be a non-empty string. - * options.ipc should be a true. * options.ipc should be true." `; -exports[`options > validate > should throw an error on the "ipc" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "ipc" option with '{}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.ipc should be one of these: non-empty string | true @@ -397,6 +396,7 @@ exports[`options > validate > should throw an error on the "ipc" option with 'fa -> Read more at https://webpack.js.org/configuration/dev-server/#devserveripc Details: * options.ipc should be a non-empty string. + * options.ipc should be a true. * options.ipc should be true." `; @@ -505,7 +505,7 @@ exports[`options > validate > should throw an error on the "proxy" option with ' -> Read more at https://webpack.js.org/configuration/dev-server/#devserverproxy" `; -exports[`options > validate > should throw an error on the "proxy" option with '{"/api":"http://localhost:3000"}' value 1`] = ` +exports[`options > validate > should throw an error on the "proxy" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.proxy should be an array: [object { … } | function, ...] @@ -513,7 +513,7 @@ exports[`options > validate > should throw an error on the "proxy" option with ' -> Read more at https://webpack.js.org/configuration/dev-server/#devserverproxy" `; -exports[`options > validate > should throw an error on the "proxy" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "proxy" option with '{"/api":"http://localhost:3000"}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.proxy should be an array: [object { … } | function, ...] @@ -633,6 +633,36 @@ exports[`options > validate > should throw an error on the "static" option with - options.static should be a non-empty string." `; +exports[`options > validate > should throw an error on the "static" option with '0' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.static should be one of these: + [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } + -> Allows to configure options for serving static files from directory (by default 'public' directory). + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverstatic + Details: + * options.static should be an array: + [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] + * options.static should be a boolean. + * options.static should be a non-empty string. + * options.static should be an object: + object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" +`; + +exports[`options > validate > should throw an error on the "static" option with 'null' value 1`] = ` +"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. + - options.static should be one of these: + [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } + -> Allows to configure options for serving static files from directory (by default 'public' directory). + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverstatic + Details: + * options.static should be an array: + [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] + * options.static should be a boolean. + * options.static should be a non-empty string. + * options.static should be an object: + object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" +`; + exports[`options > validate > should throw an error on the "static" option with '{"directory":false}' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - options.static.directory should be a non-empty string. @@ -693,34 +723,32 @@ exports[`options > validate > should throw an error on the "static" option with -> Read more at https://github.com/paulmillr/chokidar#api" `; -exports[`options > validate > should throw an error on the "static" option with '0' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with '123' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.static should be one of these: - [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } - -> Allows to configure options for serving static files from directory (by default 'public' directory). - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverstatic + - options.watchFiles should be one of these: + [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } + -> Allows to configure list of globs/directories/files to watch for file changes. + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwatchfiles Details: - * options.static should be an array: - [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] - * options.static should be a boolean. - * options.static should be a non-empty string. - * options.static should be an object: - object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" + * options.watchFiles should be an array: + [non-empty string | object { paths?, options? }, ...] + * options.watchFiles should be a non-empty string. + * options.watchFiles should be an object: + object { paths?, options? }" `; -exports[`options > validate > should throw an error on the "static" option with 'null' value 1`] = ` +exports[`options > validate > should throw an error on the "watchFiles" option with 'false' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.static should be one of these: - [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] | boolean | non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? } - -> Allows to configure options for serving static files from directory (by default 'public' directory). - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverstatic + - options.watchFiles should be one of these: + [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } + -> Allows to configure list of globs/directories/files to watch for file changes. + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwatchfiles Details: - * options.static should be an array: - [non-empty string | object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }, ...] - * options.static should be a boolean. - * options.static should be a non-empty string. - * options.static should be an object: - object { directory?, staticOptions?, publicPath?, serveIndex?, watch? }" + * options.watchFiles should be an array: + [non-empty string | object { paths?, options? }, ...] + * options.watchFiles should be a non-empty string. + * options.watchFiles should be an object: + object { paths?, options? }" `; exports[`options > validate > should throw an error on the "watchFiles" option with '{"options":false}' value 1`] = ` @@ -747,32 +775,40 @@ exports[`options > validate > should throw an error on the "watchFiles" option w * options.watchFiles.paths should be a non-empty string." `; -exports[`options > validate > should throw an error on the "watchFiles" option with '123' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with 'null' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.watchFiles should be one of these: - [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } - -> Allows to configure list of globs/directories/files to watch for file changes. - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwatchfiles + - options.webSocketServer should be one of these: + false | "ws" | non-empty string | function | object { type?, options? } + -> Allows to set web socket server and options (by default 'ws'). + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwebsocketserver Details: - * options.watchFiles should be an array: - [non-empty string | object { paths?, options? }, ...] - * options.watchFiles should be a non-empty string. - * options.watchFiles should be an object: - object { paths?, options? }" + * options.webSocketServer should be one of these: + false | "ws" + Details: + * options.webSocketServer should be false. + * options.webSocketServer should be "ws". + * options.webSocketServer should be a non-empty string. + * options.webSocketServer should be an instance of function. + * options.webSocketServer should be an object: + object { type?, options? }" `; -exports[`options > validate > should throw an error on the "watchFiles" option with 'false' value 1`] = ` +exports[`options > validate > should throw an error on the "webSocketServer" option with 'true' value 1`] = ` "ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.watchFiles should be one of these: - [non-empty string | object { paths?, options? }, ...] | non-empty string | object { paths?, options? } - -> Allows to configure list of globs/directories/files to watch for file changes. - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwatchfiles + - options.webSocketServer should be one of these: + false | "ws" | non-empty string | function | object { type?, options? } + -> Allows to set web socket server and options (by default 'ws'). + -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwebsocketserver Details: - * options.watchFiles should be an array: - [non-empty string | object { paths?, options? }, ...] - * options.watchFiles should be a non-empty string. - * options.watchFiles should be an object: - object { paths?, options? }" + * options.webSocketServer should be one of these: + false | "ws" + Details: + * options.webSocketServer should be false. + * options.webSocketServer should be "ws". + * options.webSocketServer should be a non-empty string. + * options.webSocketServer should be an instance of function. + * options.webSocketServer should be an object: + object { type?, options? }" `; exports[`options > validate > should throw an error on the "webSocketServer" option with '{"notAnOption":true}' value 1`] = ` @@ -810,39 +846,3 @@ exports[`options > validate > should throw an error on the "webSocketServer" opt * options.webSocketServer.type should be a non-empty string. * options.webSocketServer.type should be an instance of function." `; - -exports[`options > validate > should throw an error on the "webSocketServer" option with 'null' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.webSocketServer should be one of these: - false | "ws" | non-empty string | function | object { type?, options? } - -> Allows to set web socket server and options (by default 'ws'). - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwebsocketserver - Details: - * options.webSocketServer should be one of these: - false | "ws" - Details: - * options.webSocketServer should be false. - * options.webSocketServer should be "ws". - * options.webSocketServer should be a non-empty string. - * options.webSocketServer should be an instance of function. - * options.webSocketServer should be an object: - object { type?, options? }" -`; - -exports[`options > validate > should throw an error on the "webSocketServer" option with 'true' value 1`] = ` -"ValidationError: Invalid options object. Dev Server has been initialized using an options object that does not match the API schema. - - options.webSocketServer should be one of these: - false | "ws" | non-empty string | function | object { type?, options? } - -> Allows to set web socket server and options (by default 'ws'). - -> Read more at https://webpack.js.org/configuration/dev-server/#devserverwebsocketserver - Details: - * options.webSocketServer should be one of these: - false | "ws" - Details: - * options.webSocketServer should be false. - * options.webSocketServer should be "ws". - * options.webSocketServer should be a non-empty string. - * options.webSocketServer should be an instance of function. - * options.webSocketServer should be an object: - object { type?, options? }" -`; diff --git a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 index 8fb03e2b2e..df84660c11 100644 --- a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 @@ -268,11 +268,11 @@ exports[`allowed hosts > should disconnect web client using localhost to web soc ] `; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 1`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 2`] = ` "
Invalid Host header
" `; -exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 2`] = ` +exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 3`] = ` [] `; diff --git a/test/e2e/__snapshots__/api.test.js.snap.webpack5 b/test/e2e/__snapshots__/api.test.js.snap.webpack5 index 6b5d925211..9a55574007 100644 --- a/test/e2e/__snapshots__/api.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/api.test.js.snap.webpack5 @@ -154,7 +154,7 @@ exports[`API > WEBPACK_SERVE environment variable > should be present 3`] = ` [] `; -exports[`API > latest async API > should work and allow to rerun dev server multiple times 3`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -162,11 +162,11 @@ exports[`API > latest async API > should work and allow to rerun dev server mult ] `; -exports[`API > latest async API > should work and allow to rerun dev server multiple times 4`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times 2`] = ` [] `; -exports[`API > latest async API > should work and allow to rerun dev server multiple times > console messages 2`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -174,7 +174,7 @@ exports[`API > latest async API > should work and allow to rerun dev server mult ] `; -exports[`API > latest async API > should work and allow to rerun dev server multiple times > page errors 2`] = ` +exports[`API > latest async API > should work and allow to rerun dev server multiple times 4`] = ` [] `; diff --git a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 index 3b683a907e..58509f79ac 100644 --- a/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/multi-compiler.test.js.snap.webpack5 @@ -66,7 +66,7 @@ exports[`multi compiler > should work with universal configuration when only hot [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 3`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -77,11 +77,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 4`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > console messages 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -92,11 +92,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries > page errors 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing browser and server entries 4`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 3`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -107,11 +107,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 4`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 2`] = ` [] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > console messages 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "Hello from the browser", @@ -122,11 +122,11 @@ exports[`multi compiler > should work with universal configuration when only liv ] `; -exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries > page errors 2`] = ` +exports[`multi compiler > should work with universal configuration when only live reload is enabled, and do live reload for browser compiler when changing server and browser entries 4`] = ` [] `; -exports[`multi compiler > should work with web target configurations and do nothing 3`] = ` +exports[`multi compiler > should work with web target configurations and do nothing 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -134,11 +134,11 @@ exports[`multi compiler > should work with web target configurations and do noth ] `; -exports[`multi compiler > should work with web target configurations and do nothing 4`] = ` +exports[`multi compiler > should work with web target configurations and do nothing 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations and do nothing > console messages 2`] = ` +exports[`multi compiler > should work with web target configurations and do nothing 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -146,11 +146,11 @@ exports[`multi compiler > should work with web target configurations and do noth ] `; -exports[`multi compiler > should work with web target configurations and do nothing > page errors 2`] = ` +exports[`multi compiler > should work with web target configurations and do nothing 4`] = ` [] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 3`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -168,11 +168,11 @@ Update propagation: ./one.js ] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 4`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -190,11 +190,11 @@ Update propagation: ./two.js ] `; -exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries > page errors 2`] = ` +exports[`multi compiler > should work with web target configurations when hot and live reloads are enabled, and do hot reload by default when changing own entries 4`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 3`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -212,11 +212,11 @@ Update propagation: ./one.js ] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 4`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading disabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -234,11 +234,11 @@ Update propagation: ./two.js ] `; -exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries > page errors 2`] = ` +exports[`multi compiler > should work with web target configurations when only hot reload is enabled, and do hot reload when changing own entries 4`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 3`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -249,11 +249,11 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 4`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "two", @@ -264,11 +264,11 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries > page errors 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled and do live reload when changing other entries 4`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 3`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "one", @@ -279,11 +279,11 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 4`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 2`] = ` [] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > console messages 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement disabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "two", @@ -294,6 +294,6 @@ exports[`multi compiler > should work with web target configurations when only l ] `; -exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries > page errors 2`] = ` +exports[`multi compiler > should work with web target configurations when only live reload is enabled, and do live reload when changing own entries 4`] = ` [] `; diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 index cd0561c532..219be3f95e 100644 --- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 @@ -311,7 +311,7 @@ exports[`overlay > should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 4`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 3`] = ` "

webpack-dev-server is running...

@@ -332,7 +332,7 @@ exports[`overlay > should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 5`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 4`] = ` "
should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 6`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 5`] = ` "

webpack-dev-server is running...

@@ -429,7 +429,7 @@ exports[`overlay > should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix > overlay html 2`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 6`] = ` "
should show a warning and error for initial compilation and p " `; -exports[`overlay > should show a warning and hide them after closing connection 2`] = ` +exports[`overlay > should show a warning and hide them after closing connection 1`] = ` "
should show a warning and hide them after closing connection " `; -exports[`overlay > should show a warning and hide them after closing connection 3`] = ` +exports[`overlay > should show a warning and hide them after closing connection 2`] = ` "

webpack-dev-server is running...

@@ -1081,7 +1081,7 @@ exports[`overlay > should show a warning and hide them after closing connection " `; -exports[`overlay > should show a warning and hide them after closing connection > page html 2`] = ` +exports[`overlay > should show a warning and hide them after closing connection 3`] = ` "

webpack-dev-server is running...

diff --git a/test/e2e/__snapshots__/port.test.js.snap.webpack5 b/test/e2e/__snapshots__/port.test.js.snap.webpack5 index 5fe3a13b5c..317910202e 100644 --- a/test/e2e/__snapshots__/port.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/port.test.js.snap.webpack5 @@ -18,7 +18,11 @@ exports[`port > should work using "8159" port 1`] = ` ] `; -exports[`port > should work using "8159" port 1`] = ` +exports[`port > should work using "8159" port 2`] = ` +[] +`; + +exports[`port > should work using "8159" port 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -26,11 +30,7 @@ exports[`port > should work using "8159" port 1`] = ` ] `; -exports[`port > should work using "8159" port 2`] = ` -[] -`; - -exports[`port > should work using "8159" port 2`] = ` +exports[`port > should work using "8159" port 4`] = ` [] `; diff --git a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 index be66f185f5..b48d87ad15 100644 --- a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 @@ -1,59 +1,59 @@ -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 10`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 1`] = ` "text/html; charset=utf-8" `; +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 10`] = ` +"Hello World without path!" +`; + exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 11`] = ` -200 +"Hello World as function!" `; exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 12`] = ` -"setup-middlewares option GET" +200 `; exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 13`] = ` -[] +"setup-middlewares option GET" `; exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 14`] = ` [] `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 2`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 2`] = ` +[] +`; + +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 3`] = ` "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 3`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 4`] = ` "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response headers content-type 4`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 5`] = ` "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 2`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 6`] = ` 200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 3`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 7`] = ` 200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response status 4`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 8`] = ` 200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 2`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 9`] = ` "Hello World with path!" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 3`] = ` -"Hello World without path!" -`; - -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route > response text 4`] = ` -"Hello World as function!" -`; - exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 1`] = ` "text/html; charset=utf-8" `; diff --git a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 index 8fa3ad04b2..a17c9cbb67 100644 --- a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 @@ -6,7 +6,7 @@ exports[`stats > should work and respect the "ignoreWarnings" option 1`] = ` ] `; -exports[`stats > should work using "{ assets > false }" value for the "stats" option 1`] = ` +exports[`stats > should work using "errors-only" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -14,7 +14,7 @@ exports[`stats > should work using "{ assets > false }" value for the "stats" op ] `; -exports[`stats > should work using "{ assets > false }" value for the "stats" option 2`] = ` +exports[`stats > should work using "false" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -22,7 +22,7 @@ exports[`stats > should work using "{ assets > false }" value for the "stats" op ] `; -exports[`stats > should work using "{ warningsFilter > 'test' }" value for the "stats" option 1`] = ` +exports[`stats > should work using "undefined" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -30,7 +30,7 @@ exports[`stats > should work using "{ warningsFilter > 'test' }" value for the " ] `; -exports[`stats > should work using "{}" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ assets > false }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,7 +38,7 @@ exports[`stats > should work using "{}" value for the "stats" option 1`] = ` ] `; -exports[`stats > should work using "errors-only" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ assets > false }" value for the "stats" option 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -46,7 +46,7 @@ exports[`stats > should work using "errors-only" value for the "stats" option 1` ] `; -exports[`stats > should work using "false" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ warningsFilter > 'test' }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -54,7 +54,7 @@ exports[`stats > should work using "false" value for the "stats" option 1`] = ` ] `; -exports[`stats > should work using "undefined" value for the "stats" option 1`] = ` +exports[`stats > should work using "{}" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", diff --git a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 index ce5944ccb0..7dc5c586e8 100644 --- a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 @@ -138,17 +138,17 @@ exports[`watchFiles option > should work with options > {"interval":400,"poll":2 } `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 4`] = ` 200 `; @@ -168,17 +168,17 @@ exports[`watchFiles option > should work with options > {"poll":200} should relo } `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 4`] = ` 200 `; @@ -198,17 +198,17 @@ exports[`watchFiles option > should work with options > {"poll":true} should rel } `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 4`] = ` 200 `; @@ -228,17 +228,17 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"int } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 4`] = ` 200 `; @@ -258,17 +258,17 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"pol } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 4`] = ` 200 `; @@ -288,17 +288,17 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"pol } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 4`] = ` 200 `; @@ -318,17 +318,17 @@ exports[`watchFiles option > should work with options > {"usePolling":false} sho } `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 4`] = ` 200 `; @@ -348,17 +348,17 @@ exports[`watchFiles option > should work with options > {"usePolling":true,"inte } `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 4`] = ` 200 `; @@ -378,17 +378,17 @@ exports[`watchFiles option > should work with options > {"usePolling":true,"poll } `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 4`] = ` 200 `; @@ -408,17 +408,17 @@ exports[`watchFiles option > should work with options > {"usePolling":true} shou } `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > console messages 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > page errors 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed > response status 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 4`] = ` 200 `; @@ -438,13 +438,25 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 10`] = ` +200 +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 11`] = ` +[] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 12`] = ` +200 +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 13`] = ` { "alwaysStat": true, "atomic": false, "awaitWriteFinish": false, "binaryInterval": 300, - "followSymlinks": false, + "followSymlinks": undefined, "ignoreInitial": true, "ignorePermissionErrors": true, "ignored": [], @@ -454,7 +466,11 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 14`] = ` +[] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 15`] = ` { "alwaysStat": true, "atomic": false, @@ -470,13 +486,25 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 16`] = ` +[ + "Hey.", +] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 17`] = ` +[ + "Hey.", +] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 18`] = ` { - "alwaysStat": true, + "alwaysStat": undefined, "atomic": false, "awaitWriteFinish": false, "binaryInterval": 300, - "followSymlinks": undefined, + "followSymlinks": false, "ignoreInitial": true, "ignorePermissionErrors": true, "ignored": [], @@ -486,15 +514,15 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 5`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 19`] = ` { "alwaysStat": true, - "atomic": true, + "atomic": false, "awaitWriteFinish": false, "binaryInterval": 300, "followSymlinks": false, "ignoreInitial": true, - "ignorePermissionErrors": true, + "ignorePermissionErrors": undefined, "ignored": [], "interval": 100, "persistent": true, @@ -502,9 +530,19 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 6`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 2`] = ` +[ + "Hey.", +] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 20`] = ` +[] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 21`] = ` { - "alwaysStat": undefined, + "alwaysStat": true, "atomic": false, "awaitWriteFinish": false, "binaryInterval": 300, @@ -518,13 +556,44 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 7`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 22`] = ` +[ + "Hey.", +] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 23`] = ` +[ + "Hey.", +] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 24`] = ` +200 +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 25`] = ` +200 +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 26`] = ` +[] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 27`] = ` +[] +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 28`] = ` +200 +`; + +exports[`watchFiles option > should work with options > {} should reload when file content is changed 29`] = ` { "alwaysStat": true, - "atomic": false, + "atomic": true, "awaitWriteFinish": false, "binaryInterval": 300, - "depth": undefined, "followSymlinks": false, "ignoreInitial": true, "ignorePermissionErrors": true, @@ -535,15 +604,16 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 8`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 3`] = ` { "alwaysStat": true, "atomic": false, "awaitWriteFinish": false, "binaryInterval": 300, + "depth": undefined, "followSymlinks": false, "ignoreInitial": true, - "ignorePermissionErrors": undefined, + "ignorePermissionErrors": true, "ignored": [], "interval": 100, "persistent": true, @@ -551,115 +621,45 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 1`] = ` -[ - "Hey.", -] +exports[`watchFiles option > should work with options > {} should reload when file content is changed 30`] = ` +200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 2`] = ` -[ - "Hey.", -] +exports[`watchFiles option > should work with options > {} should reload when file content is changed 31`] = ` +[] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 3`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 32`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 4`] = ` -[ - "Hey.", -] +exports[`watchFiles option > should work with options > {} should reload when file content is changed 4`] = ` +200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 5`] = ` -[ - "Hey.", -] +exports[`watchFiles option > should work with options > {} should reload when file content is changed 5`] = ` +[] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 6`] = ` -[ - "Hey.", -] +exports[`watchFiles option > should work with options > {} should reload when file content is changed 6`] = ` +[] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 7`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 7`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > console messages 8`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 8`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 1`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 2`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 3`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 4`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 5`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 6`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 7`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > page errors 8`] = ` -[] -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 1`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 2`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 3`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 4`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 5`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 6`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 7`] = ` -200 -`; - -exports[`watchFiles option > should work with options > {} should reload when file content is changed > response status 8`] = ` +exports[`watchFiles option > should work with options > {} should reload when file content is changed 9`] = ` 200 `; diff --git a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 index 0cbebc8b08..d5f83584f9 100644 --- a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 @@ -225,7 +225,7 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 1`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -233,11 +233,11 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 3`] = ` [] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 4`] = ` [] `; From 0e71cd6ab8477fb401799859a6c6ec37b132eab1 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 14:34:48 -0500 Subject: [PATCH 17/22] fixup! --- package.json | 2 +- .../overlay.test.js.snap.webpack5 | 46 +++++++++---------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index f371a51783..ff4fda342c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit", + "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit test/cli test/client test/e2e test/server test/normalize-options.test.js test/validate-options.test.js", "test:coverage": "npm run test:only -- --experimental-test-coverage", "test:watch": "npm run test:only -- --watch", "test": "npm run test:coverage", diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 index 219be3f95e..cb0548599d 100644 --- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 @@ -312,27 +312,6 @@ exports[`overlay > should not show initially, then show on an error, then show o `; exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 3`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; - -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 4`] = ` "
should not show initially, then show on an error, then show o " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 5`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 4`] = ` "

webpack-dev-server is running...

+ + " `; -exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 6`] = ` +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 5`] = ` "
should not show initially, then show on an error, then show o " `; +exports[`overlay > should not show initially, then show on an error, then show other error, then hide on fix 6`] = ` +" +

webpack-dev-server is running...

+ + +" +`; + exports[`overlay > should not show overlay when Trusted Types are enabled, but policy is not allowed 1`] = ` "

webpack-dev-server is running...

From 549ca507d061282e950a850593fc85a536c87ac9 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 14:45:08 -0500 Subject: [PATCH 18/22] chore: update test runner --- package.json | 2 +- scripts/run-tests.mjs | 48 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 scripts/run-tests.mjs diff --git a/package.json b/package.json index ff4fda342c..ab5627e7f8 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "build:client": "rimraf -g ./client/* && babel client-src/ --out-dir client/ --ignore \"client-src/webpack.config.js\" --ignore \"client-src/modules\" && webpack --config client-src/webpack.config.js", "build:types": "rimraf -g ./types/* && tsc --declaration --emitDeclarationOnly --outDir types && node ./scripts/extend-webpack-types.js && prettier \"types/**/*.ts\" --write && prettier \"types/**/*.ts\" --write", "build": "npm-run-all -p \"build:**\"", - "test:only": "node ./scripts/check-test-ports.mjs && node --import ./scripts/node-test-setup.mjs --experimental-test-module-mocks --test --test-timeout=400000 --test-force-exit test/cli test/client test/e2e test/server test/normalize-options.test.js test/validate-options.test.js", + "test:only": "node ./scripts/check-test-ports.mjs && node ./scripts/run-tests.mjs", "test:coverage": "npm run test:only -- --experimental-test-coverage", "test:watch": "npm run test:only -- --watch", "test": "npm run test:coverage", diff --git a/scripts/run-tests.mjs b/scripts/run-tests.mjs new file mode 100644 index 0000000000..4b869ab1a2 --- /dev/null +++ b/scripts/run-tests.mjs @@ -0,0 +1,48 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; +import { glob } from "node:fs/promises"; +import path from "node:path"; + +const ROOT = path.resolve(import.meta.dirname, ".."); + +const PATTERNS = [ + "test/*.test.js", + "test/cli/**/*.test.js", + "test/client/**/*.test.js", + "test/e2e/**/*.test.js", + "test/server/**/*.test.js", +]; + +const files = new Set(); +for (const pattern of PATTERNS) { + for await (const file of glob(pattern, { cwd: ROOT })) { + files.add(file); + } +} + +const testFiles = [...files].sort(); + +const nodeArgs = [ + "--import", + "./scripts/node-test-setup.mjs", + "--experimental-test-module-mocks", + "--test", + "--test-timeout=400000", + "--test-force-exit", + ...process.argv.slice(2), + ...testFiles, +]; + +const child = spawn(process.execPath, nodeArgs, { + cwd: ROOT, + stdio: "inherit", +}); + +child.on("exit", (code, signal) => { + if (signal) { + process.kill(process.pid, signal); + } else { + process.exit(code ?? 1); + } +}); From 2a53caa5ee4d15b7627a98d03e2cbfa3b7b580c5 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 14:52:13 -0500 Subject: [PATCH 19/22] fixup! --- .../__snapshots__/bonjour-option.test.js.snap.webpack5 | 3 +-- .../__snapshots__/server-option.test.js.snap.webpack5 | 9 +++------ test/helpers/test-bin.js | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 b/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 index 62f0c7d0b2..bfbb3207cf 100644 --- a/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/bonjour-option.test.js.snap.webpack5 @@ -1,6 +1,5 @@ exports[`"bonjour" CLI option > should work using "--bonjour and --server-type=https" 1`] = ` -" [webpack-dev-server] Generating SSL certificate... - [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem +" [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ diff --git a/test/cli/__snapshots__/server-option.test.js.snap.webpack5 b/test/cli/__snapshots__/server-option.test.js.snap.webpack5 index 1e8cfa6fca..3205463969 100644 --- a/test/cli/__snapshots__/server-option.test.js.snap.webpack5 +++ b/test/cli/__snapshots__/server-option.test.js.snap.webpack5 @@ -1,6 +1,5 @@ exports[`"server" CLI options > should work using "--no-server-options-request-cert" 1`] = ` -" [webpack-dev-server] Generating SSL certificate... - [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem +" [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ @@ -33,8 +32,7 @@ exports[`"server" CLI options > should work using "--server-options-key-reset -- `; exports[`"server" CLI options > should work using "--server-options-request-cert" 1`] = ` -" [webpack-dev-server] Generating SSL certificate... - [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem +" [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ @@ -51,8 +49,7 @@ exports[`"server" CLI options > should work using "--server-type http" 1`] = ` `; exports[`"server" CLI options > should work using "--server-type https" 1`] = ` -" [webpack-dev-server] Generating SSL certificate... - [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem +" [webpack-dev-server] SSL certificate: /node_modules/.cache/webpack-dev-server/server.pem [webpack-dev-server] Project is running at: Loopback: https://localhost:/, https://:/, https://[]:/ [webpack-dev-server] On Your Network (IPv4): https://:/ diff --git a/test/helpers/test-bin.js b/test/helpers/test-bin.js index 15667fe59e..ecec46868b 100644 --- a/test/helpers/test-bin.js +++ b/test/helpers/test-bin.js @@ -159,7 +159,7 @@ const normalizeStderr = (stderr, options = {}) => { // We have deprecation warning on windows in some cases normalizedStderr = normalizedStderr.split("\n"); normalizedStderr = normalizedStderr.filter( - (item) => !/Generating SSL Certificate/g.test(item), + (item) => !/Generating SSL certificate/gi.test(item), ); normalizedStderr = normalizedStderr.filter( (item) => From 9ab7262c1564d4e929668674081eead47b2aa3d4 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 15:02:00 -0500 Subject: [PATCH 20/22] chore: update snapshots and fix module path in API tests --- .../setup-middlewares.test.js.snap.webpack5 | 48 +++++++++---------- test/e2e/api.test.js | 7 +-- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 index b48d87ad15..7407c58602 100644 --- a/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/setup-middlewares.test.js.snap.webpack5 @@ -2,56 +2,56 @@ exports[`setupMiddlewares option > should handle GET request to /setup-middlewar "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 10`] = ` -"Hello World without path!" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 2`] = ` +200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 11`] = ` -"Hello World as function!" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 3`] = ` +"setup-middlewares option GET" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 12`] = ` -200 +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 4`] = ` +"text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 13`] = ` -"setup-middlewares option GET" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 5`] = ` +200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 14`] = ` -[] +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 6`] = ` +"Hello World with path!" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 2`] = ` -[] +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 7`] = ` +"text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 3`] = ` -"text/html; charset=utf-8" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 8`] = ` +200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 4`] = ` -"text/html; charset=utf-8" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 9`] = ` +"Hello World without path!" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 5`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 10`] = ` "text/html; charset=utf-8" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 6`] = ` +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 11`] = ` 200 `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 7`] = ` -200 +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 12`] = ` +"Hello World as function!" `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 8`] = ` -200 +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 13`] = ` +[] `; -exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 9`] = ` -"Hello World with path!" +exports[`setupMiddlewares option > should handle GET request to /setup-middleware/some/path route 14`] = ` +[] `; exports[`setupMiddlewares option > should handle POST request to /setup-middleware/some/path route 1`] = ` diff --git a/test/e2e/api.test.js b/test/e2e/api.test.js index 462fc70d7c..f32094d8d0 100644 --- a/test/e2e/api.test.js +++ b/test/e2e/api.test.js @@ -21,13 +21,10 @@ describe("API", () => { let consoleMessages; beforeEach(async () => { - // Note: jest.resetModules() removed during migration to node:test. - // It cleared require.cache between tests; mock.module() restoration - // (in afterEach / try-finally) replaces that role. - process.env = { ...OLD_ENV }; delete process.env.WEBPACK_SERVE; + delete require.cache[require.resolve("../../lib/Server")]; ({ page, browser } = await runBrowser()); @@ -808,7 +805,7 @@ describe("API", () => { it("should throw the error when the port isn't found", async (t) => { expect.assertions(1); - const getPortMock = mock.module("../../lib/getPort", { + const getPortMock = mock.module("../../lib/getPort.js", { defaultExport: () => Promise.reject(new Error("busy")), }); From 43dd601d23f96f834d027887ab5127a5f884eda0 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 15:11:01 -0500 Subject: [PATCH 21/22] fixup! --- .../e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 | 8 ++++---- test/e2e/__snapshots__/stats.test.js.snap.webpack5 | 6 +++--- .../web-socket-server-url.test.js.snap.webpack5 | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 index df84660c11..73a5c5325c 100644 --- a/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/allowed-hosts.test.js.snap.webpack5 @@ -263,13 +263,13 @@ exports[`allowed hosts > should connect web socket client using origin header co `; exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 1`] = ` -[ - "Failed to load resource: the server responded with a status of 403 (Forbidden)", -] +"
Invalid Host header
" `; exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 2`] = ` -"
Invalid Host header
" +[ + "Failed to load resource: the server responded with a status of 403 (Forbidden)", +] `; exports[`allowed hosts > should disconnect web client using localhost to web socket server with the "auto" value ("ws") 3`] = ` diff --git a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 index a17c9cbb67..b055692428 100644 --- a/test/e2e/__snapshots__/stats.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/stats.test.js.snap.webpack5 @@ -30,7 +30,7 @@ exports[`stats > should work using "undefined" value for the "stats" option 1`] ] `; -exports[`stats > should work using "{ assets > false }" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ assets: false }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -38,7 +38,7 @@ exports[`stats > should work using "{ assets > false }" value for the "stats" op ] `; -exports[`stats > should work using "{ assets > false }" value for the "stats" option 2`] = ` +exports[`stats > should work using "{ assets: false }" value for the "stats" option 2`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -46,7 +46,7 @@ exports[`stats > should work using "{ assets > false }" value for the "stats" op ] `; -exports[`stats > should work using "{ warningsFilter > 'test' }" value for the "stats" option 1`] = ` +exports[`stats > should work using "{ warningsFilter: 'test' }" value for the "stats" option 1`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", diff --git a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 index d5f83584f9..64c7eaadb1 100644 --- a/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/web-socket-server-url.test.js.snap.webpack5 @@ -226,6 +226,10 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn `; exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 2`] = ` +[] +`; + +exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 3`] = ` [ "[webpack-dev-server] Server started: Hot Module Replacement enabled, Live Reloading enabled, Progress disabled, Overlay enabled.", "[HMR] Waiting for update signal from WDS...", @@ -233,10 +237,6 @@ exports[`web socket server URL > should work with the "client.webSocketURL.pathn ] `; -exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 3`] = ` -[] -`; - exports[`web socket server URL > should work with the "client.webSocketURL.pathname" option ("ws") 4`] = ` [] `; From f25b68fbff82d1c3a4d5d64e6851d433ee05b856 Mon Sep 17 00:00:00 2001 From: Sebastian Beltran Date: Sun, 10 May 2026 15:20:17 -0500 Subject: [PATCH 22/22] fixup! --- .../overlay.test.js.snap.webpack5 | 42 ++--- .../watch-files.test.js.snap.webpack5 | 144 +++++++++--------- test/e2e/overlay.test.js | 1 + test/e2e/server-and-client-transport.test.js | 26 ++-- 4 files changed, 110 insertions(+), 103 deletions(-) diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 index cb0548599d..90edcf521b 100644 --- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 @@ -977,6 +977,27 @@ exports[`overlay > should show a warning and error for initial compilation and p `; exports[`overlay > should show a warning and hide them after closing connection 1`] = ` +" +

webpack-dev-server is running...

+ + + + +" +`; + +exports[`overlay > should show a warning and hide them after closing connection 2`] = ` "
should show a warning and hide them after closing connection " `; -exports[`overlay > should show a warning and hide them after closing connection 2`] = ` -" -

webpack-dev-server is running...

- - - - -" -`; - exports[`overlay > should show a warning and hide them after closing connection 3`] = ` "

webpack-dev-server is running...

diff --git a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 index 7dc5c586e8..8664dbc3c0 100644 --- a/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 +++ b/test/e2e/__snapshots__/watch-files.test.js.snap.webpack5 @@ -122,7 +122,7 @@ exports[`watchFiles option > should work with object with single path > should r [] `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -138,21 +138,21 @@ exports[`watchFiles option > should work with options > {"interval":400,"poll":2 } `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"interval":400,"poll":200} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"interval":400,"poll":200} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"poll":200} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -168,21 +168,21 @@ exports[`watchFiles option > should work with options > {"poll":200} should relo } `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"poll":200} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"poll":200} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"poll":200} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"poll":200} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"poll":true} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -198,21 +198,21 @@ exports[`watchFiles option > should work with options > {"poll":true} should rel } `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"poll":true} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"poll":true} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"poll":true} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"poll":true} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -228,21 +228,21 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"int } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"interval":200,"poll":400} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -258,21 +258,21 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"pol } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":200} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -288,21 +288,21 @@ exports[`watchFiles option > should work with options > {"usePolling":false,"pol } `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false,"poll":true} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -318,21 +318,21 @@ exports[`watchFiles option > should work with options > {"usePolling":false} sho } `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":false} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":false} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -348,21 +348,21 @@ exports[`watchFiles option > should work with options > {"usePolling":true,"inte } `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"interval":200,"poll":400} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -378,21 +378,21 @@ exports[`watchFiles option > should work with options > {"usePolling":true,"poll } `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true,"poll":200} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -408,21 +408,21 @@ exports[`watchFiles option > should work with options > {"usePolling":true} shou } `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} > should reload when file content is changed 3`] = ` [] `; -exports[`watchFiles option > should work with options > {"usePolling":true} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {"usePolling":true} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 1`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 1`] = ` { "alwaysStat": true, "atomic": false, @@ -438,19 +438,19 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 10`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 10`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 11`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 11`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 12`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 12`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 13`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 13`] = ` { "alwaysStat": true, "atomic": false, @@ -466,11 +466,11 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 14`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 14`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 15`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 15`] = ` { "alwaysStat": true, "atomic": false, @@ -486,19 +486,19 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 16`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 16`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 17`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 17`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 18`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 18`] = ` { "alwaysStat": undefined, "atomic": false, @@ -514,7 +514,7 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 19`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 19`] = ` { "alwaysStat": true, "atomic": false, @@ -530,17 +530,17 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 2`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 2`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 20`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 20`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 21`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 21`] = ` { "alwaysStat": true, "atomic": false, @@ -556,39 +556,39 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 22`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 22`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 23`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 23`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 24`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 24`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 25`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 25`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 26`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 26`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 27`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 27`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 28`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 28`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 29`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 29`] = ` { "alwaysStat": true, "atomic": true, @@ -604,7 +604,7 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 3`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 3`] = ` { "alwaysStat": true, "atomic": false, @@ -621,45 +621,45 @@ exports[`watchFiles option > should work with options > {} should reload when fi } `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 30`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 30`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 31`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 31`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 32`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 32`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 4`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 4`] = ` 200 `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 5`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 5`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 6`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 6`] = ` [] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 7`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 7`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 8`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 8`] = ` [ "Hey.", ] `; -exports[`watchFiles option > should work with options > {} should reload when file content is changed 9`] = ` +exports[`watchFiles option > should work with options > {} > should reload when file content is changed 9`] = ` 200 `; diff --git a/test/e2e/overlay.test.js b/test/e2e/overlay.test.js index 349eac3ece..f7bdbbba72 100644 --- a/test/e2e/overlay.test.js +++ b/test/e2e/overlay.test.js @@ -1505,6 +1505,7 @@ describe("overlay", () => { ); } finally { await browser.close(); + await server.stop(); } }); diff --git a/test/e2e/server-and-client-transport.test.js b/test/e2e/server-and-client-transport.test.js index a3bb071c3b..5403dbfe90 100644 --- a/test/e2e/server-and-client-transport.test.js +++ b/test/e2e/server-and-client-transport.test.js @@ -369,7 +369,7 @@ describe("server and client transport", () => { } }); - it("should throw an error on invalid path to server transport", async () => { + it("should throw an error on invalid path to server transport", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -378,14 +378,17 @@ describe("server and client transport", () => { }, }; const server = new Server(devServerOptions, compiler); - await expect(async () => { + try { await server.start(); - }).rejects.toThrowErrorMatchingSnapshot(); - - await server.stop(); + throw new Error("server.start() should have thrown"); + } catch (error) { + t.assert.snapshot(error.message); + } finally { + await server.stop(); + } }); - it("should throw an error on invalid path to client transport", async () => { + it("should throw an error on invalid path to client transport", async (t) => { const compiler = webpack(defaultConfig); const devServerOptions = { port, @@ -394,10 +397,13 @@ describe("server and client transport", () => { }, }; const server = new Server(devServerOptions, compiler); - await expect(async () => { + try { await server.start(); - }).rejects.toThrowErrorMatchingSnapshot(); - - await server.stop(); + throw new Error("server.start() should have thrown"); + } catch (error) { + t.assert.snapshot(error.message); + } finally { + await server.stop(); + } }); });