diff --git a/.cspell.json b/.cspell.json
new file mode 100644
index 0000000000..77c778432f
--- /dev/null
+++ b/.cspell.json
@@ -0,0 +1,81 @@
+{
+ "version": "0.2",
+ "language": "en,en-gb",
+ "words": [
+ "camelcase",
+ "tapable",
+ "sockjs",
+ "spdy",
+ "memfs",
+ "execa",
+ "networkidle",
+ "ipaddr",
+ "pageerror",
+ "unmock",
+ "testhost",
+ "USEPOLLING",
+ "colorette",
+ "selfsigned",
+ "portfinder",
+ "xlink",
+ "instanceof",
+ "Heyo",
+ "domcontentloaded",
+ "historyapifallback",
+ "pems",
+ "localdomain",
+ "unshift",
+ "Zeroconf",
+ "webworker",
+ "devserver",
+ "logspam",
+ "Sindre",
+ "Sorhus",
+ "esmodules",
+ "CAFC",
+ "FACCA",
+ "darkgrey",
+ "Consolas",
+ "peerigon",
+ "Ichigo",
+ "Kurosaki",
+ "typeof",
+ "parseable",
+ "proxyfalse",
+ "klona",
+ "sessionattached",
+ "zenitsu",
+ "chuntaro",
+ "nwjs",
+ "myhost",
+ "ƕrrn",
+ "Fƅsq",
+ "G'RД",
+ "ECONNREFUSED",
+ "taskkill",
+ "testhouse",
+ "mwarn",
+ "mansi",
+ "nosources",
+ "Heyyy",
+ "oipqj",
+ "breakpad",
+ "infobars",
+ "omnibox",
+ "swiftshader",
+ "hoge",
+ "subsubcomain"
+ ],
+ "ignorePaths": [
+ "CHANGELOG.md",
+ "coverage",
+ "package.json",
+ "dist/**",
+ "client/**",
+ "**/__snapshots__/**",
+ "package-lock.json",
+ "node_modules",
+ "coverage",
+ "*.log"
+ ]
+}
diff --git a/.eslintignore b/.eslintignore
index 861faf369b..9bc9ffb002 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -3,3 +3,6 @@
!/test/client
coverage
node_modules
+examples/**/main.js
+examples/client/trusted-types-overlay/app.js
+test/fixtures/reload-config/foo.js
diff --git a/.gitignore b/.gitignore
index 2245f4db71..389040450b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,7 @@ yarn.lock
yarn-error.log
.eslintcache
+.cspellcache
test/fixtures/static-config/public/assets/non-exist.txt
test/fixtures/watch-files-config/public/assets/non-exist.txt
diff --git a/.prettierignore b/.prettierignore
index 236cbcb571..65cd2f21a9 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -3,3 +3,4 @@
coverage
node_modules
CHANGELOG.md
+examples/client/trusted-types-overlay/app.js
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f6f967b8a..13fb8367cf 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,14 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
+### [5.0.1](https://github.com/webpack/webpack-dev-server/compare/v5.0.0...v5.0.1) (2024-02-13)
+
+
+### Bug Fixes
+
+* avoid using eval in client ([#5045](https://github.com/webpack/webpack-dev-server/issues/5045)) ([7681477](https://github.com/webpack/webpack-dev-server/commit/76814771dcebe80628b4462f5e1d30064ae226d5))
+* overlay and `require-trusted-types-for` ([#5046](https://github.com/webpack/webpack-dev-server/issues/5046)) ([e115436](https://github.com/webpack/webpack-dev-server/commit/e11543677120b004d1f20e11fdf34c07897c7b0c))
+
## [5.0.0](https://github.com/webpack/webpack-dev-server/compare/v4.15.1...v5.0.0) (2024-02-12)
[Migration Guide and Changes](https://github.com/webpack/webpack-dev-server/blob/master/migration-v5.md).
diff --git a/README.md b/README.md
index b432c7aaf5..37221aaa30 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
[![node][node]][node-url]
[![tests][tests]][tests-url]
[![coverage][cover]][cover-url]
-[![chat][chat]][chat-url]
+[![discussion][discussion]][discussion-url]
[![downloads][downloads]][npm-url]
[![contributors][contributors]][contributors-url]
@@ -279,7 +279,7 @@ Your first-stop-shop for support for webpack-dev-server should be the excellent
of those docs, please head over to the [webpack.js.org repo][wjo-url] and open a
pull request.
-From there, we encourage users to visit the [webpack Gitter chat][chat-url] and
+From there, we encourage users to visit the [webpack discussions][discussion-url] and
talk to the fine folks there. If your quest for answers comes up dry in chat,
head over to [StackOverflow][stack-url] and do a quick search or open a new
question. Remember; It's always much easier to answer questions that include your
@@ -313,8 +313,8 @@ This project is heavily inspired by [peerigon/nof5](https://github.com/peerigon/
[tests-url]: https://github.com/webpack/webpack-dev-server/actions?query=workflow%3Awebpack-dev-server
[cover]: https://codecov.io/gh/webpack/webpack-dev-server/branch/master/graph/badge.svg
[cover-url]: https://codecov.io/gh/webpack/webpack-dev-server
-[chat]: https://badges.gitter.im/webpack/webpack.svg
-[chat-url]: https://gitter.im/webpack/webpack
+[discussion]: https://img.shields.io/github/discussions/webpack/webpack
+[discussion-url]: https://github.com/webpack/webpack/discussions
[docs-url]: https://webpack.js.org/configuration/dev-server/#devserver
[hash-url]: https://twitter.com/search?q=webpack
[middleware-url]: https://github.com/webpack/webpack-dev-middleware
diff --git a/client-src/modules/logger/SyncBailHookFake.js b/client-src/modules/logger/SyncBailHookFake.js
deleted file mode 100644
index ae6e5321de..0000000000
--- a/client-src/modules/logger/SyncBailHookFake.js
+++ /dev/null
@@ -1,10 +0,0 @@
-"use strict";
-
-/**
- * Client stub for tapable SyncBailHook
- */
-module.exports = function clientTapableSyncBailHook() {
- return {
- call() {},
- };
-};
diff --git a/client-src/modules/logger/tapable.js b/client-src/modules/logger/tapable.js
new file mode 100644
index 0000000000..2ee5f3accf
--- /dev/null
+++ b/client-src/modules/logger/tapable.js
@@ -0,0 +1,11 @@
+function SyncBailHook() {
+ return {
+ call() {},
+ };
+}
+
+/**
+ * Client stub for tapable SyncBailHook
+ */
+// eslint-disable-next-line import/prefer-default-export
+export { SyncBailHook };
diff --git a/client-src/overlay.js b/client-src/overlay.js
index 7c20687749..04670df2c0 100644
--- a/client-src/overlay.js
+++ b/client-src/overlay.js
@@ -189,7 +189,9 @@ const createOverlay = (options) => {
*/
function ensureOverlayExists(callback, trustedTypesPolicyName) {
if (containerElement) {
- containerElement.innerHTML = "";
+ containerElement.innerHTML = overlayTrustedTypesPolicy
+ ? overlayTrustedTypesPolicy.createHTML("")
+ : "";
// Everything is ready, call the callback right away.
callback(containerElement);
diff --git a/client-src/webpack.config.js b/client-src/webpack.config.js
index 94a123b286..3e44675239 100644
--- a/client-src/webpack.config.js
+++ b/client-src/webpack.config.js
@@ -4,15 +4,12 @@ const path = require("path");
const webpack = require("webpack");
const { merge } = require("webpack-merge");
-// @ts-ignore
-const library = webpack.webpack
- ? {
- library: {
- // type: "module",
- type: "commonjs",
- },
- }
- : { libraryTarget: "umd" };
+const library = {
+ library: {
+ // type: "module",
+ type: "commonjs",
+ },
+};
const baseForModules = {
devtool: false,
@@ -28,8 +25,7 @@ const baseForModules = {
optimization: {
minimize: false,
},
- // @ts-ignore
- target: webpack.webpack ? ["web", "es5"] : "web",
+ target: ["web", "es5"],
module: {
rules: [
{
@@ -73,8 +69,8 @@ module.exports = [
'(typeof Symbol !== "undefined" ? Symbol : function (i) { return i; })',
}),
new webpack.NormalModuleReplacementPlugin(
- /^tapable\/lib\/SyncBailHook/,
- path.join(__dirname, "modules/logger/SyncBailHookFake.js"),
+ /^tapable$/,
+ path.join(__dirname, "modules/logger/tapable.js"),
),
],
}),
diff --git a/examples/.assets/layout.html b/examples/.assets/layout.html
index 5be419cd91..1350dc5f3a 100644
--- a/examples/.assets/layout.html
+++ b/examples/.assets/layout.html
@@ -1,4 +1,4 @@
-
+
WDS ▻ <%= htmlWebpackPlugin.options.title %>
diff --git a/examples/client/trusted-types-overlay/app.js b/examples/client/trusted-types-overlay/app.js
index 0c5dbd0635..130fdcd715 100644
--- a/examples/client/trusted-types-overlay/app.js
+++ b/examples/client/trusted-types-overlay/app.js
@@ -4,3 +4,6 @@ const target = document.querySelector("#target");
target.classList.add("pass");
target.textContent = "Success!";
+
+// To display an overlay with an error
+(
diff --git a/examples/client/trusted-types-overlay/layout.html b/examples/client/trusted-types-overlay/layout.html
index b71ee9a7cf..58aa8348eb 100644
--- a/examples/client/trusted-types-overlay/layout.html
+++ b/examples/client/trusted-types-overlay/layout.html
@@ -1,5 +1,5 @@
-
+
diff --git a/examples/client/trusted-types-overlay/webpack.config.js b/examples/client/trusted-types-overlay/webpack.config.js
index 3009abed0c..7399f26646 100644
--- a/examples/client/trusted-types-overlay/webpack.config.js
+++ b/examples/client/trusted-types-overlay/webpack.config.js
@@ -9,11 +9,14 @@ const { setup } = require("../../util");
const config = setup({
context: __dirname,
// create error for overlay
- entry: "./invalid.js",
+ entry: "./app.js",
output: {
trustedTypes: { policyName: "webpack" },
},
devServer: {
+ headers: {
+ "Content-Security-Policy": "require-trusted-types-for 'script'",
+ },
client: {
overlay: {
trustedTypesPolicyName: "webpack#dev-overlay",
diff --git a/examples/client/web-socket-url/index.html b/examples/client/web-socket-url/index.html
index df17bc03d7..8d47ea3c16 100644
--- a/examples/client/web-socket-url/index.html
+++ b/examples/client/web-socket-url/index.html
@@ -1,4 +1,4 @@
-
+
diff --git a/examples/general/config-promise/index.html b/examples/general/config-promise/index.html
index 45e5548d39..44b4767fb5 100644
--- a/examples/general/config-promise/index.html
+++ b/examples/general/config-promise/index.html
@@ -1,4 +1,4 @@
-
+
Promise Config Example
diff --git a/examples/general/proxy-advanced/bypass.html b/examples/general/proxy-advanced/bypass.html
index 564f37cb8e..9fc9317298 100644
--- a/examples/general/proxy-advanced/bypass.html
+++ b/examples/general/proxy-advanced/bypass.html
@@ -1,4 +1,4 @@
-
+
Example: proxy advanced
diff --git a/examples/watch-static/assets/index.html b/examples/watch-static/assets/index.html
index 6bcb27eb2e..614b34494f 100644
--- a/examples/watch-static/assets/index.html
+++ b/examples/watch-static/assets/index.html
@@ -1,4 +1,4 @@
-
+
diff --git a/lib/getPort.js b/lib/getPort.js
index 2ae4eee824..11cfb9dfe0 100644
--- a/lib/getPort.js
+++ b/lib/getPort.js
@@ -46,7 +46,7 @@ const checkAvailablePort = (basePort, host) =>
server.on("error", reject);
server.listen(basePort, host, () => {
- // Next line should return AdressInfo because we're calling it after listen() and before close()
+ // Next line should return AddressInfo because we're calling it after listen() and before close()
const { port } = /** @type {import("net").AddressInfo} */ (
server.address()
);
diff --git a/lint-staged.config.js b/lint-staged.config.js
index 7f787b4a0b..2d40a32b75 100644
--- a/lint-staged.config.js
+++ b/lint-staged.config.js
@@ -1,6 +1,9 @@
"use strict";
module.exports = {
- "*": ["prettier --write --ignore-unknown"],
+ "*": [
+ "prettier --cache --write --ignore-unknown",
+ "cspell --cache --no-must-find-files",
+ ],
"*.js": ["eslint --cache --fix"],
};
diff --git a/package-lock.json b/package-lock.json
index a9f36c8e89..be8ba04c01 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "webpack-dev-server",
- "version": "5.0.0",
+ "version": "5.0.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "webpack-dev-server",
- "version": "5.0.0",
+ "version": "5.0.1",
"license": "MIT",
"dependencies": {
"@types/bonjour": "^3.5.13",
@@ -64,6 +64,7 @@
"babel-loader": "^9.1.0",
"body-parser": "^1.19.2",
"core-js": "^3.31.0",
+ "cspell": "^8.3.2",
"css-loader": "^6.8.1",
"eslint": "^8.43.0",
"eslint-config-prettier": "^9.1.0",
@@ -2408,6 +2409,434 @@
"node": ">=8"
}
},
+ "node_modules/@cspell/cspell-bundled-dicts": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-bundled-dicts/-/cspell-bundled-dicts-8.3.2.tgz",
+ "integrity": "sha512-3ubOgz1/MDixJbq//0rQ2omB3cSdhVJDviERZeiREGz4HOq84aaK1Fqbw5SjNZHvhpoq+AYXm6kJbIAH8YhKgg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-ada": "^4.0.2",
+ "@cspell/dict-aws": "^4.0.1",
+ "@cspell/dict-bash": "^4.1.3",
+ "@cspell/dict-companies": "^3.0.29",
+ "@cspell/dict-cpp": "^5.0.10",
+ "@cspell/dict-cryptocurrencies": "^5.0.0",
+ "@cspell/dict-csharp": "^4.0.2",
+ "@cspell/dict-css": "^4.0.12",
+ "@cspell/dict-dart": "^2.0.3",
+ "@cspell/dict-django": "^4.1.0",
+ "@cspell/dict-docker": "^1.1.7",
+ "@cspell/dict-dotnet": "^5.0.0",
+ "@cspell/dict-elixir": "^4.0.3",
+ "@cspell/dict-en_us": "^4.3.13",
+ "@cspell/dict-en-common-misspellings": "^2.0.0",
+ "@cspell/dict-en-gb": "1.1.33",
+ "@cspell/dict-filetypes": "^3.0.3",
+ "@cspell/dict-fonts": "^4.0.0",
+ "@cspell/dict-fsharp": "^1.0.1",
+ "@cspell/dict-fullstack": "^3.1.5",
+ "@cspell/dict-gaming-terms": "^1.0.4",
+ "@cspell/dict-git": "^3.0.0",
+ "@cspell/dict-golang": "^6.0.5",
+ "@cspell/dict-haskell": "^4.0.1",
+ "@cspell/dict-html": "^4.0.5",
+ "@cspell/dict-html-symbol-entities": "^4.0.0",
+ "@cspell/dict-java": "^5.0.6",
+ "@cspell/dict-k8s": "^1.0.2",
+ "@cspell/dict-latex": "^4.0.0",
+ "@cspell/dict-lorem-ipsum": "^4.0.0",
+ "@cspell/dict-lua": "^4.0.3",
+ "@cspell/dict-makefile": "^1.0.0",
+ "@cspell/dict-node": "^4.0.3",
+ "@cspell/dict-npm": "^5.0.14",
+ "@cspell/dict-php": "^4.0.5",
+ "@cspell/dict-powershell": "^5.0.3",
+ "@cspell/dict-public-licenses": "^2.0.5",
+ "@cspell/dict-python": "^4.1.11",
+ "@cspell/dict-r": "^2.0.1",
+ "@cspell/dict-ruby": "^5.0.2",
+ "@cspell/dict-rust": "^4.0.1",
+ "@cspell/dict-scala": "^5.0.0",
+ "@cspell/dict-software-terms": "^3.3.15",
+ "@cspell/dict-sql": "^2.1.3",
+ "@cspell/dict-svelte": "^1.0.2",
+ "@cspell/dict-swift": "^2.0.1",
+ "@cspell/dict-typescript": "^3.1.2",
+ "@cspell/dict-vue": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-json-reporter": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-json-reporter/-/cspell-json-reporter-8.3.2.tgz",
+ "integrity": "sha512-gHSz4jXMJPcxx+lOGfXhHuoyenAWQ8PVA/atHFrWYKo1LzKTbpkEkrsDnlX8QNJubc3EMH63Uy+lOIaFDVyHiQ==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-types": "8.3.2"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-pipe": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-pipe/-/cspell-pipe-8.3.2.tgz",
+ "integrity": "sha512-GZmDwvQGOjQi3IjD4k9xXeVTDANczksOsgVKb3v2QZk9mR4Qj8c6Uarjd4AgSiIhu/wBliJfzr5rWFJu4X2VfQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-resolver": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-resolver/-/cspell-resolver-8.3.2.tgz",
+ "integrity": "sha512-w2Tmb95bzdEz9L4W5qvsP5raZbyEzKL7N2ksU/+yh8NEJcTuExmAl/nMnb3aIk7m2b+kPHnMOcJuwfUMLmyv4A==",
+ "dev": true,
+ "dependencies": {
+ "global-directory": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-service-bus": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-service-bus/-/cspell-service-bus-8.3.2.tgz",
+ "integrity": "sha512-skTHNyVi74//W/O+f4IauDhm6twA9S2whkylonsIzPxEl4Pn3y2ZEMXNki/MWUwZfDIzKKSxlcREH61g7zCvhg==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/cspell-types": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/cspell-types/-/cspell-types-8.3.2.tgz",
+ "integrity": "sha512-qS/gWd9ItOrN6ZX5pwC9lJjnBoyiAyhxYq0GUXuV892LQvwrBmECGk6KhsA1lPW7JJS7o57YTAS1jmXnmXMEpg==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@cspell/dict-ada": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ada/-/dict-ada-4.0.2.tgz",
+ "integrity": "sha512-0kENOWQeHjUlfyId/aCM/mKXtkEgV0Zu2RhUXCBr4hHo9F9vph+Uu8Ww2b0i5a4ZixoIkudGA+eJvyxrG1jUpA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-aws": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-aws/-/dict-aws-4.0.1.tgz",
+ "integrity": "sha512-NXO+kTPQGqaaJKa4kO92NAXoqS+i99dQzf3/L1BxxWVSBS3/k1f3uhmqIh7Crb/n22W793lOm0D9x952BFga3Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-bash": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-bash/-/dict-bash-4.1.3.tgz",
+ "integrity": "sha512-tOdI3QVJDbQSwPjUkOiQFhYcu2eedmX/PtEpVWg0aFps/r6AyjUQINtTgpqMYnYuq8O1QUIQqnpx21aovcgZCw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-companies": {
+ "version": "3.0.31",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-companies/-/dict-companies-3.0.31.tgz",
+ "integrity": "sha512-hKVpV/lcGKP4/DpEPS8P4osPvFH/YVLJaDn9cBIOH6/HSmL5LbFgJNKpMGaYRbhm2FEX56MKE3yn/MNeNYuesQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-cpp": {
+ "version": "5.1.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cpp/-/dict-cpp-5.1.3.tgz",
+ "integrity": "sha512-sqnriXRAInZH9W75C+APBh6dtben9filPqVbIsiRMUXGg+s02ekz0z6LbS7kXeJ5mD2qXoMLBrv13qH2eIwutQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-cryptocurrencies": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-cryptocurrencies/-/dict-cryptocurrencies-5.0.0.tgz",
+ "integrity": "sha512-Z4ARIw5+bvmShL+4ZrhDzGhnc9znaAGHOEMaB/GURdS/jdoreEDY34wdN0NtdLHDO5KO7GduZnZyqGdRoiSmYA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-csharp": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-csharp/-/dict-csharp-4.0.2.tgz",
+ "integrity": "sha512-1JMofhLK+4p4KairF75D3A924m5ERMgd1GvzhwK2geuYgd2ZKuGW72gvXpIV7aGf52E3Uu1kDXxxGAiZ5uVG7g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-css": {
+ "version": "4.0.12",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-css/-/dict-css-4.0.12.tgz",
+ "integrity": "sha512-vGBgPM92MkHQF5/2jsWcnaahOZ+C6OE/fPvd5ScBP72oFY9tn5GLuomcyO0z8vWCr2e0nUSX1OGimPtcQAlvSw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-dart": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dart/-/dict-dart-2.0.3.tgz",
+ "integrity": "sha512-cLkwo1KT5CJY5N5RJVHks2genFkNCl/WLfj+0fFjqNR+tk3tBI1LY7ldr9piCtSFSm4x9pO1x6IV3kRUY1lLiw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-data-science": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-data-science/-/dict-data-science-1.0.11.tgz",
+ "integrity": "sha512-TaHAZRVe0Zlcc3C23StZqqbzC0NrodRwoSAc8dis+5qLeLLnOCtagYQeROQvDlcDg3X/VVEO9Whh4W/z4PAmYQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-django": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-django/-/dict-django-4.1.0.tgz",
+ "integrity": "sha512-bKJ4gPyrf+1c78Z0Oc4trEB9MuhcB+Yg+uTTWsvhY6O2ncFYbB/LbEZfqhfmmuK/XJJixXfI1laF2zicyf+l0w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-docker": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-docker/-/dict-docker-1.1.7.tgz",
+ "integrity": "sha512-XlXHAr822euV36GGsl2J1CkBIVg3fZ6879ZOg5dxTIssuhUOCiV2BuzKZmt6aIFmcdPmR14+9i9Xq+3zuxeX0A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-dotnet": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-dotnet/-/dict-dotnet-5.0.0.tgz",
+ "integrity": "sha512-EOwGd533v47aP5QYV8GlSSKkmM9Eq8P3G/eBzSpH3Nl2+IneDOYOBLEUraHuiCtnOkNsz0xtZHArYhAB2bHWAw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-elixir": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-elixir/-/dict-elixir-4.0.3.tgz",
+ "integrity": "sha512-g+uKLWvOp9IEZvrIvBPTr/oaO6619uH/wyqypqvwpmnmpjcfi8+/hqZH8YNKt15oviK8k4CkINIqNhyndG9d9Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en_us": {
+ "version": "4.3.16",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en_us/-/dict-en_us-4.3.16.tgz",
+ "integrity": "sha512-fyNuAvYpkllmsMpfAJaMip250LRAnEDp2EZbkjYwAJXXjtgQ4/1yh6sLityxPMDtJZN65Eko+8rJzGJHez4zbA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en-common-misspellings": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-common-misspellings/-/dict-en-common-misspellings-2.0.0.tgz",
+ "integrity": "sha512-NOg8dlv37/YqLkCfBs5OXeJm/Wcfb/CzeOmOZJ2ZXRuxwsNuolb4TREUce0yAXRqMhawahY5TSDRJJBgKjBOdw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-en-gb": {
+ "version": "1.1.33",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-en-gb/-/dict-en-gb-1.1.33.tgz",
+ "integrity": "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-filetypes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-filetypes/-/dict-filetypes-3.0.3.tgz",
+ "integrity": "sha512-J9UP+qwwBLfOQ8Qg9tAsKtSY/WWmjj21uj6zXTI9hRLD1eG1uUOLcfVovAmtmVqUWziPSKMr87F6SXI3xmJXgw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fonts": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fonts/-/dict-fonts-4.0.0.tgz",
+ "integrity": "sha512-t9V4GeN/m517UZn63kZPUYP3OQg5f0OBLSd3Md5CU3eH1IFogSvTzHHnz4Wqqbv8NNRiBZ3HfdY/pqREZ6br3Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fsharp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fsharp/-/dict-fsharp-1.0.1.tgz",
+ "integrity": "sha512-23xyPcD+j+NnqOjRHgW3IU7Li912SX9wmeefcY0QxukbAxJ/vAN4rBpjSwwYZeQPAn3fxdfdNZs03fg+UM+4yQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-fullstack": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-fullstack/-/dict-fullstack-3.1.5.tgz",
+ "integrity": "sha512-6ppvo1dkXUZ3fbYn/wwzERxCa76RtDDl5Afzv2lijLoijGGUw5yYdLBKJnx8PJBGNLh829X352ftE7BElG4leA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-gaming-terms": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-gaming-terms/-/dict-gaming-terms-1.0.5.tgz",
+ "integrity": "sha512-C3riccZDD3d9caJQQs1+MPfrUrQ+0KHdlj9iUR1QD92FgTOF6UxoBpvHUUZ9YSezslcmpFQK4xQQ5FUGS7uWfw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-git": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-git/-/dict-git-3.0.0.tgz",
+ "integrity": "sha512-simGS/lIiXbEaqJu9E2VPoYW1OTC2xrwPPXNXFMa2uo/50av56qOuaxDrZ5eH1LidFXwoc8HROCHYeKoNrDLSw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-golang": {
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-golang/-/dict-golang-6.0.5.tgz",
+ "integrity": "sha512-w4mEqGz4/wV+BBljLxduFNkMrd3rstBNDXmoX5kD4UTzIb4Sy0QybWCtg2iVT+R0KWiRRA56QKOvBsgXiddksA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-haskell": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-haskell/-/dict-haskell-4.0.1.tgz",
+ "integrity": "sha512-uRrl65mGrOmwT7NxspB4xKXFUenNC7IikmpRZW8Uzqbqcu7ZRCUfstuVH7T1rmjRgRkjcIjE4PC11luDou4wEQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-html": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html/-/dict-html-4.0.5.tgz",
+ "integrity": "sha512-p0brEnRybzSSWi8sGbuVEf7jSTDmXPx7XhQUb5bgG6b54uj+Z0Qf0V2n8b/LWwIPJNd1GygaO9l8k3HTCy1h4w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-html-symbol-entities": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-html-symbol-entities/-/dict-html-symbol-entities-4.0.0.tgz",
+ "integrity": "sha512-HGRu+48ErJjoweR5IbcixxETRewrBb0uxQBd6xFGcxbEYCX8CnQFTAmKI5xNaIt2PKaZiJH3ijodGSqbKdsxhw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-java": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-java/-/dict-java-5.0.6.tgz",
+ "integrity": "sha512-kdE4AHHHrixyZ5p6zyms1SLoYpaJarPxrz8Tveo6gddszBVVwIUZ+JkQE1bWNLK740GWzIXdkznpUfw1hP9nXw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-k8s": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-k8s/-/dict-k8s-1.0.2.tgz",
+ "integrity": "sha512-tLT7gZpNPnGa+IIFvK9SP1LrSpPpJ94a/DulzAPOb1Q2UBFwdpFd82UWhio0RNShduvKG/WiMZf/wGl98pn+VQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-latex": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-latex/-/dict-latex-4.0.0.tgz",
+ "integrity": "sha512-LPY4y6D5oI7D3d+5JMJHK/wxYTQa2lJMSNxps2JtuF8hbAnBQb3igoWEjEbIbRRH1XBM0X8dQqemnjQNCiAtxQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-lorem-ipsum": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lorem-ipsum/-/dict-lorem-ipsum-4.0.0.tgz",
+ "integrity": "sha512-1l3yjfNvMzZPibW8A7mQU4kTozwVZVw0AvFEdy+NcqtbxH+TvbSkNMqROOFWrkD2PjnKG0+Ea0tHI2Pi6Gchnw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-lua": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-lua/-/dict-lua-4.0.3.tgz",
+ "integrity": "sha512-lDHKjsrrbqPaea13+G9s0rtXjMO06gPXPYRjRYawbNmo4E/e3XFfVzeci3OQDQNDmf2cPOwt9Ef5lu2lDmwfJg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-makefile": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-makefile/-/dict-makefile-1.0.0.tgz",
+ "integrity": "sha512-3W9tHPcSbJa6s0bcqWo6VisEDTSN5zOtDbnPabF7rbyjRpNo0uHXHRJQF8gAbFzoTzBBhgkTmrfSiuyQm7vBUQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-node": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-node/-/dict-node-4.0.3.tgz",
+ "integrity": "sha512-sFlUNI5kOogy49KtPg8SMQYirDGIAoKBO3+cDLIwD4MLdsWy1q0upc7pzGht3mrjuyMiPRUV14Bb0rkVLrxOhg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-npm": {
+ "version": "5.0.15",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-npm/-/dict-npm-5.0.15.tgz",
+ "integrity": "sha512-sX0X5YWNW54F4baW7b5JJB6705OCBIZtUqjOghlJNORS5No7QY1IX1zc5FxNNu4gsaCZITAmfMi4ityXEsEThA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-php": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-php/-/dict-php-4.0.6.tgz",
+ "integrity": "sha512-ySAXisf7twoVFZqBV2o/DKiCLIDTHNqfnj0EfH9OoOUR7HL3rb6zJkm0viLUFDO2G/8SyIi6YrN/6KX+Scjjjg==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-powershell": {
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-powershell/-/dict-powershell-5.0.3.tgz",
+ "integrity": "sha512-lEdzrcyau6mgzu1ie98GjOEegwVHvoaWtzQnm1ie4DyZgMr+N6D0Iyj1lzvtmt0snvsDFa5F2bsYzf3IMKcpcA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-public-licenses": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-public-licenses/-/dict-public-licenses-2.0.5.tgz",
+ "integrity": "sha512-91HK4dSRri/HqzAypHgduRMarJAleOX5NugoI8SjDLPzWYkwZ1ftuCXSk+fy8DLc3wK7iOaFcZAvbjmnLhVs4A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-python": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-python/-/dict-python-4.1.11.tgz",
+ "integrity": "sha512-XG+v3PumfzUW38huSbfT15Vqt3ihNb462ulfXifpQllPok5OWynhszCLCRQjQReV+dgz784ST4ggRxW452/kVg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/dict-data-science": "^1.0.11"
+ }
+ },
+ "node_modules/@cspell/dict-r": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-r/-/dict-r-2.0.1.tgz",
+ "integrity": "sha512-KCmKaeYMLm2Ip79mlYPc8p+B2uzwBp4KMkzeLd5E6jUlCL93Y5Nvq68wV5fRLDRTf7N1LvofkVFWfDcednFOgA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-ruby": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-ruby/-/dict-ruby-5.0.2.tgz",
+ "integrity": "sha512-cIh8KTjpldzFzKGgrqUX4bFyav5lC52hXDKo4LbRuMVncs3zg4hcSf4HtURY+f2AfEZzN6ZKzXafQpThq3dl2g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-rust": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-rust/-/dict-rust-4.0.2.tgz",
+ "integrity": "sha512-RhziKDrklzOntxAbY3AvNR58wnFGIo3YS8+dNeLY36GFuWOvXDHFStYw5Pod4f/VXbO/+1tXtywCC4zWfB2p1w==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-scala": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-scala/-/dict-scala-5.0.0.tgz",
+ "integrity": "sha512-ph0twaRoV+ylui022clEO1dZ35QbeEQaKTaV2sPOsdwIokABPIiK09oWwGK9qg7jRGQwVaRPEq0Vp+IG1GpqSQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-software-terms": {
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-software-terms/-/dict-software-terms-3.3.18.tgz",
+ "integrity": "sha512-LJZGGMGqS8KzgXJrSMs3T+6GoqHG9z8Bc+rqLzLzbtoR3FbsMasE9U8oP2PmS3q7jJLFjQkzmg508DrcuZuo2g==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-sql": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-sql/-/dict-sql-2.1.3.tgz",
+ "integrity": "sha512-SEyTNKJrjqD6PAzZ9WpdSu6P7wgdNtGV2RV8Kpuw1x6bV+YsSptuClYG+JSdRExBTE6LwIe1bTklejUp3ZP8TQ==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-svelte": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-svelte/-/dict-svelte-1.0.2.tgz",
+ "integrity": "sha512-rPJmnn/GsDs0btNvrRBciOhngKV98yZ9SHmg8qI6HLS8hZKvcXc0LMsf9LLuMK1TmS2+WQFAan6qeqg6bBxL2Q==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-swift": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-swift/-/dict-swift-2.0.1.tgz",
+ "integrity": "sha512-gxrCMUOndOk7xZFmXNtkCEeroZRnS2VbeaIPiymGRHj5H+qfTAzAKxtv7jJbVA3YYvEzWcVE2oKDP4wcbhIERw==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-typescript": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-typescript/-/dict-typescript-3.1.2.tgz",
+ "integrity": "sha512-lcNOYWjLUvDZdLa0UMNd/LwfVdxhE9rKA+agZBGjL3lTA3uNvH7IUqSJM/IXhJoBpLLMVEOk8v1N9xi+vDuCdA==",
+ "dev": true
+ },
+ "node_modules/@cspell/dict-vue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/@cspell/dict-vue/-/dict-vue-3.0.0.tgz",
+ "integrity": "sha512-niiEMPWPV9IeRBRzZ0TBZmNnkK3olkOPYxC1Ny2AX4TGlYRajcW0WUtoSHmvvjZNfWLSg2L6ruiBeuPSbjnG6A==",
+ "dev": true
+ },
+ "node_modules/@cspell/dynamic-import": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/dynamic-import/-/dynamic-import-8.3.2.tgz",
+ "integrity": "sha512-4t0xM5luA3yQhar2xWvYK4wQSDB2r0u8XkpzzJqd57MnJXd7uIAxI0awGUrDXukadRaCo0tDIlMUBemH48SNVg==",
+ "dev": true,
+ "dependencies": {
+ "import-meta-resolve": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=18.0"
+ }
+ },
+ "node_modules/@cspell/strong-weak-map": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/@cspell/strong-weak-map/-/strong-weak-map-8.3.2.tgz",
+ "integrity": "sha512-Mte/2000ap278kRYOUhiGWI7MNr1+A7WSWJmlcdP4CAH5SO20sZI3/cyZLjJJEyapdhK5vaP1L5J9sUcVDHd3A==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -3889,9 +4318,9 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.11.16",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz",
- "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==",
+ "version": "20.11.17",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.17.tgz",
+ "integrity": "sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==",
"dependencies": {
"undici-types": "~5.26.4"
}
@@ -4483,6 +4912,12 @@
"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
+ },
"node_modules/array.prototype.filter": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz",
@@ -5176,6 +5611,33 @@
"node": ">=4"
}
},
+ "node_modules/chalk-template": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-1.1.0.tgz",
+ "integrity": "sha512-T2VJbcDuZQ0Tb2EWwSotMPJjgpy1/tGee1BTpUNsGZ/qgNjV2t7Mvu+d4600U564nbLesN1x2dPL+xii174Ekg==",
+ "dev": true,
+ "dependencies": {
+ "chalk": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14.16"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk-template?sponsor=1"
+ }
+ },
+ "node_modules/chalk-template/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
"node_modules/char-regex": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -5263,6 +5725,34 @@
"node": ">= 10.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,
+ "dependencies": {
+ "parent-module": "^2.0.0",
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/clear-module/node_modules/parent-module": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-2.0.0.tgz",
+ "integrity": "sha512-uo0Z9JJeWzv8BG+tRcapBKNJ0dro9cLyczGzulS6EfeyAdeC9sbojtW6XwvYxJkEne9En+J2XEl4zyglVeIwFg==",
+ "dev": true,
+ "dependencies": {
+ "callsites": "^3.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/cli-cursor": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz",
@@ -5458,6 +5948,22 @@
"node": ">= 6"
}
},
+ "node_modules/comment-json": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz",
+ "integrity": "sha512-SsxdiOf064DWoZLH799Ata6u7iV658A11PlWtZATDlXPpKGJnbJZ5Z24ybixAi+LUUqJ/GKowAejtC5GFUG7Tw==",
+ "dev": true,
+ "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/common-path-prefix": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz",
@@ -5567,6 +6073,52 @@
"node": ">= 6"
}
},
+ "node_modules/configstore": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz",
+ "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==",
+ "dev": true,
+ "dependencies": {
+ "dot-prop": "^6.0.1",
+ "graceful-fs": "^4.2.6",
+ "unique-string": "^3.0.0",
+ "write-file-atomic": "^3.0.3",
+ "xdg-basedir": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/yeoman/configstore?sponsor=1"
+ }
+ },
+ "node_modules/configstore/node_modules/dot-prop": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
+ "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==",
+ "dev": true,
+ "dependencies": {
+ "is-obj": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/configstore/node_modules/write-file-atomic": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
+ "dev": true,
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
+ }
+ },
"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",
@@ -6835,131 +7387,433 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"dev": true
},
- "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/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,
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/create-jest": {
+ "version": "29.7.0",
+ "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
+ "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+ "dev": true,
+ "dependencies": {
+ "@jest/types": "^29.6.3",
+ "chalk": "^4.0.0",
+ "exit": "^0.1.2",
+ "graceful-fs": "^4.2.9",
+ "jest-config": "^29.7.0",
+ "jest-util": "^29.7.0",
+ "prompts": "^2.0.1"
+ },
+ "bin": {
+ "create-jest": "bin/create-jest.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ }
+ },
+ "node_modules/create-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,
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/create-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,
+ "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/create-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,
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/create-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
+ },
+ "node_modules/create-jest/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==",
+ "dev": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/create-jest/node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cross-fetch": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
+ "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "dev": true,
+ "dependencies": {
+ "node-fetch": "^2.6.12"
+ }
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/crypto-random-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz",
+ "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==",
+ "dev": true,
+ "dependencies": {
+ "type-fest": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/crypto-random-string/node_modules/type-fest": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz",
+ "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==",
+ "dev": true,
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/cspell": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell/-/cspell-8.3.2.tgz",
+ "integrity": "sha512-V8Ub3RO/a5lwSsltW/ib3Z3G/sczKtSpBBN1JChzbSCfEgaY2mJY8JW0BpkSV+Ug6uJitpXNOOaxa3Xr489i7g==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-json-reporter": "8.3.2",
+ "@cspell/cspell-pipe": "8.3.2",
+ "@cspell/cspell-types": "8.3.2",
+ "@cspell/dynamic-import": "8.3.2",
+ "chalk": "^5.3.0",
+ "chalk-template": "^1.1.0",
+ "commander": "^11.1.0",
+ "cspell-gitignore": "8.3.2",
+ "cspell-glob": "8.3.2",
+ "cspell-io": "8.3.2",
+ "cspell-lib": "8.3.2",
+ "fast-glob": "^3.3.2",
+ "fast-json-stable-stringify": "^2.1.0",
+ "file-entry-cache": "^8.0.0",
+ "get-stdin": "^9.0.0",
+ "semver": "^7.5.4",
+ "strip-ansi": "^7.1.0",
+ "vscode-uri": "^3.0.8"
+ },
+ "bin": {
+ "cspell": "bin.mjs",
+ "cspell-esm": "bin.mjs"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/streetsidesoftware/cspell?sponsor=1"
+ }
+ },
+ "node_modules/cspell-config-lib": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-config-lib/-/cspell-config-lib-8.3.2.tgz",
+ "integrity": "sha512-Wc98XhBNLwDxnxCzMtgRJALI9a69cu3C5Gf1rGjNTKSFo9JYiQmju0Ur3z25Pkx9Sa86f+2IjvNCf33rUDSoBQ==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-types": "8.3.2",
+ "comment-json": "^4.2.3",
+ "yaml": "^2.3.4"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-dictionary": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-dictionary/-/cspell-dictionary-8.3.2.tgz",
+ "integrity": "sha512-xyK95hO2BMPFxIo8zBwGml8035qOxSBdga1BMhwW/p2wDrQP8S4Cdm/54//tCDmKn6uRkFQvyOfWGaX2l8WMEg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-pipe": "8.3.2",
+ "@cspell/cspell-types": "8.3.2",
+ "cspell-trie-lib": "8.3.2",
+ "fast-equals": "^5.0.1",
+ "gensequence": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-gitignore": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-gitignore/-/cspell-gitignore-8.3.2.tgz",
+ "integrity": "sha512-3Qc9P5BVvl/cg//s2s+zIMGKcoH5v7oOtRgwn4UQry8yiyo19h0tiTKkSR574FMhF5NtcShTnwIwPSIXVBPFHA==",
+ "dev": true,
+ "dependencies": {
+ "cspell-glob": "8.3.2",
+ "find-up-simple": "^1.0.0"
+ },
+ "bin": {
+ "cspell-gitignore": "bin.mjs"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-glob": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-glob/-/cspell-glob-8.3.2.tgz",
+ "integrity": "sha512-KtIFxE+3l5dGEofND4/CdZffXP8XN1+XGQKxJ96lIzWsc01mkotfhxTkla6mgvfH039t7BsY/SWv0460KyGslQ==",
"dev": true,
"dependencies": {
- "argparse": "^2.0.1"
+ "micromatch": "^4.0.5"
},
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/create-jest": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz",
- "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==",
+ "node_modules/cspell-grammar": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-grammar/-/cspell-grammar-8.3.2.tgz",
+ "integrity": "sha512-tYCkOmRzJe1a6/R+8QGSwG7TwTgznLPqsHtepKzLmnS4YX54VXjKRI9zMARxXDzUVfyCSVdW5MyiY/0WTNoy+A==",
"dev": true,
"dependencies": {
- "@jest/types": "^29.6.3",
- "chalk": "^4.0.0",
- "exit": "^0.1.2",
- "graceful-fs": "^4.2.9",
- "jest-config": "^29.7.0",
- "jest-util": "^29.7.0",
- "prompts": "^2.0.1"
+ "@cspell/cspell-pipe": "8.3.2",
+ "@cspell/cspell-types": "8.3.2"
},
"bin": {
- "create-jest": "bin/create-jest.js"
+ "cspell-grammar": "bin.mjs"
},
"engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
+ "node": ">=18"
}
},
- "node_modules/create-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==",
+ "node_modules/cspell-io": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-io/-/cspell-io-8.3.2.tgz",
+ "integrity": "sha512-WYpKsyBCQP0SY4gXnhW5fPuxcYchKYKG1PIXVV3ezFU4muSgW6GuLNbGuSfwv/8YNXRgFSN0e3hYH0rdBK2Aow==",
"dev": true,
"dependencies": {
- "color-convert": "^2.0.1"
+ "@cspell/cspell-service-bus": "8.3.2"
},
"engines": {
- "node": ">=8"
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell-lib": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-8.3.2.tgz",
+ "integrity": "sha512-wTvdaev/TyGB/ln6CVD1QbVs2D7/+QiajQ67S7yj1suLHM6YcNQQb/5sPAM8VPtj0E7PgwgPXf3bq18OtPvnFg==",
+ "dev": true,
+ "dependencies": {
+ "@cspell/cspell-bundled-dicts": "8.3.2",
+ "@cspell/cspell-pipe": "8.3.2",
+ "@cspell/cspell-resolver": "8.3.2",
+ "@cspell/cspell-types": "8.3.2",
+ "@cspell/dynamic-import": "8.3.2",
+ "@cspell/strong-weak-map": "8.3.2",
+ "clear-module": "^4.1.2",
+ "comment-json": "^4.2.3",
+ "configstore": "^6.0.0",
+ "cspell-config-lib": "8.3.2",
+ "cspell-dictionary": "8.3.2",
+ "cspell-glob": "8.3.2",
+ "cspell-grammar": "8.3.2",
+ "cspell-io": "8.3.2",
+ "cspell-trie-lib": "8.3.2",
+ "fast-equals": "^5.0.1",
+ "gensequence": "^6.0.0",
+ "import-fresh": "^3.3.0",
+ "resolve-from": "^5.0.0",
+ "vscode-languageserver-textdocument": "^1.0.11",
+ "vscode-uri": "^3.0.8"
},
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/create-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==",
+ "node_modules/cspell-trie-lib": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/cspell-trie-lib/-/cspell-trie-lib-8.3.2.tgz",
+ "integrity": "sha512-8qh2FqzkLMwzlTlvO/5Z+89fhi30rrfekocpight/BmqKbE2XFJQD7wS2ml24e7q/rdHJLXVpJbY/V5mByucCA==",
"dev": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@cspell/cspell-pipe": "8.3.2",
+ "@cspell/cspell-types": "8.3.2",
+ "gensequence": "^6.0.0"
},
"engines": {
- "node": ">=10"
+ "node": ">=18"
+ }
+ },
+ "node_modules/cspell/node_modules/ansi-regex": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/cspell/node_modules/chalk": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz",
+ "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==",
+ "dev": true,
+ "engines": {
+ "node": "^12.17.0 || ^14.13 || >=16.0.0"
},
"funding": {
"url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/create-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==",
+ "node_modules/cspell/node_modules/commander": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz",
+ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/cspell/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,
"dependencies": {
- "color-name": "~1.1.4"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": ">=7.0.0"
+ "node": ">=16.0.0"
}
},
- "node_modules/create-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
- },
- "node_modules/create-jest/node_modules/has-flag": {
+ "node_modules/cspell/node_modules/flat-cache": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.0.tgz",
+ "integrity": "sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==",
"dev": true,
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4",
+ "rimraf": "^5.0.5"
+ },
"engines": {
- "node": ">=8"
+ "node": ">=16"
}
},
- "node_modules/create-jest/node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/cspell/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,
"dependencies": {
- "has-flag": "^4.0.0"
+ "yallist": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=10"
}
},
- "node_modules/cross-fetch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz",
- "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==",
+ "node_modules/cspell/node_modules/semver": {
+ "version": "7.6.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
+ "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dev": true,
"dependencies": {
- "node-fetch": "^2.6.12"
+ "lru-cache": "^6.0.0"
+ },
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "node_modules/cspell/node_modules/strip-ansi": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
+ "dev": true,
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "ansi-regex": "^6.0.1"
},
"engines": {
- "node": ">= 8"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "node_modules/cspell/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
+ },
"node_modules/css-loader": {
"version": "6.10.0",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz",
@@ -8617,12 +9471,37 @@
"integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
"peer": true
},
+ "node_modules/fast-equals": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz",
+ "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==",
+ "dev": true,
+ "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
},
+ "node_modules/fast-glob": {
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
+ "dev": true,
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
"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",
@@ -8788,6 +9667,18 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/find-up-simple": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz",
+ "integrity": "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==",
+ "dev": true,
+ "engines": {
+ "node": ">=18"
+ },
+ "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",
@@ -9005,6 +9896,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/gensequence": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-6.0.0.tgz",
+ "integrity": "sha512-8WwuywE9pokJRAcg2QFR/plk3cVPebSUqRPzpGQh3WQ0wIiHAw+HyOQj5IuHyUTQBHpBKFoB2JUMu9zT3vJ16Q==",
+ "dev": true,
+ "engines": {
+ "node": ">=16"
+ }
+ },
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@@ -9267,6 +10167,18 @@
"node": ">=10"
}
},
+ "node_modules/get-stdin": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz",
+ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -9906,6 +10818,30 @@
"integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
"devOptional": true
},
+ "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,
+ "dependencies": {
+ "ini": "4.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-directory/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,
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+ }
+ },
"node_modules/global-dirs": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
@@ -10017,6 +10953,15 @@
"node": ">=4"
}
},
+ "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,
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/has-property-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
@@ -10553,6 +11498,16 @@
"node": ">=8"
}
},
+ "node_modules/import-meta-resolve": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz",
+ "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==",
+ "dev": true,
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
+ }
+ },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
@@ -10998,6 +11953,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-typedarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
+ "dev": true
+ },
"node_modules/is-url": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz",
@@ -12963,12 +13924,13 @@
"dev": true
},
"node_modules/json-joy": {
- "version": "9.9.1",
- "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-9.9.1.tgz",
- "integrity": "sha512-/d7th2nbQRBQ/nqTkBe6KjjvDciSwn9UICmndwk3Ed/Bk9AqkTRm4PnLVfXG4DKbT0rEY0nKnwE7NqZlqKE6kg==",
+ "version": "11.28.0",
+ "resolved": "https://registry.npmjs.org/json-joy/-/json-joy-11.28.0.tgz",
+ "integrity": "sha512-WTq2tYD2r+0rUFId4gtUjwejV20pArh4q2WRJKxJdwLlPFHyW94HwwB2vUr5lUJTVkehhhWEVLwOUI0MSacNIw==",
"dependencies": {
"arg": "^5.0.2",
- "hyperdyperid": "^1.2.0"
+ "hyperdyperid": "^1.2.0",
+ "thingies": "^1.14.1"
},
"bin": {
"jj": "bin/jj.js",
@@ -13764,11 +14726,11 @@
}
},
"node_modules/memfs": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.6.0.tgz",
- "integrity": "sha512-I6mhA1//KEZfKRQT9LujyW6lRbX7RkC24xKododIDO3AGShcaFAMKElv1yFGWX8fD4UaSiwasr3NeQ5TdtHY1A==",
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.6.1.tgz",
+ "integrity": "sha512-EBR9cb0t/PJjPI7fVx2m9V7iQH8joEgIsrfWW+qam304dK/FvpcTqKdKu3sbcbMmCZMbMwPi76PREoFaGR0Bmw==",
"dependencies": {
- "json-joy": "^9.2.0",
+ "json-joy": "^11.0.0",
"thingies": "^1.11.1"
},
"engines": {
@@ -13813,6 +14775,15 @@
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
+ "node_modules/merge2": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
@@ -15692,6 +16663,15 @@
"strip-ansi": "^6.0.1"
}
},
+ "node_modules/repeat-string": {
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
+ "dev": true,
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -17664,6 +18644,15 @@
"integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
"dev": true
},
+ "node_modules/typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "dev": true,
+ "dependencies": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"node_modules/typescript": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
@@ -17784,6 +18773,21 @@
"node": ">=4"
}
},
+ "node_modules/unique-string": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
+ "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==",
+ "dev": true,
+ "dependencies": {
+ "crypto-random-string": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
@@ -17914,6 +18918,18 @@
"node": ">= 0.8"
}
},
+ "node_modules/vscode-languageserver-textdocument": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz",
+ "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==",
+ "dev": true
+ },
+ "node_modules/vscode-uri": {
+ "version": "3.0.8",
+ "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
+ "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
+ "dev": true
+ },
"node_modules/w3c-xmlserializer": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz",
@@ -18467,6 +19483,18 @@
}
}
},
+ "node_modules/xdg-basedir": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz",
+ "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==",
+ "dev": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/xml-name-validator": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz",
diff --git a/package.json b/package.json
index 0ec052f495..f3fa9ade2f 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "webpack-dev-server",
- "version": "5.0.0",
+ "version": "5.0.1",
"description": "Serves a webpack app. Updates the browser on changes.",
"bin": "bin/webpack-dev-server.js",
"main": "lib/Server.js",
@@ -25,12 +25,14 @@
},
"scripts": {
"fmt:check": "prettier \"{**/*,*}.{js,json,md,yml,css,ts}\" --list-different",
- "lint:js": "eslint . --cache",
+ "lint:prettier": "prettier --cache --list-different .",
+ "lint:js": "eslint --cache .",
"lint:types": "tsc --pretty --noEmit",
- "lint": "npm-run-all -p \"fmt:**\" \"lint:**\"",
- "fmt": "npm run fmt:check -- --write",
+ "lint:spelling": "cspell --cache --no-must-find-files --quiet \"**/*.*\"",
+ "lint": "npm-run-all -l -p \"lint:**\"",
"fix:js": "npm run lint:js -- --fix",
- "fix": "npm-run-all fix:js fmt",
+ "fix:prettier": "npm run lint:prettier -- --write",
+ "fix": "npm-run-all -l fix:js fix:prettier",
"commitlint": "commitlint --from=master",
"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",
@@ -96,6 +98,7 @@
"babel-loader": "^9.1.0",
"body-parser": "^1.19.2",
"core-js": "^3.31.0",
+ "cspell": "^8.3.2",
"css-loader": "^6.8.1",
"eslint": "^8.43.0",
"eslint-config-prettier": "^9.1.0",
diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack4 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack4
deleted file mode 100644
index f61db0a050..0000000000
--- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack4
+++ /dev/null
@@ -1,2517 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`overlay should not show a warning when "client.overlay" is "false": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should not show a warning when "client.overlay.warnings" is "false": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should not show an error when "client.overlay" is "false": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should not show an error when "client.overlay.errors" is "false": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an error and allow to close: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- ./foo.js 1:1 Module parse failed: Unterminated template (1:1) You may
- need an appropriate loader to handle this file type, currently no
- loaders are configured to process this file. See
- https://webpack.js.org/concepts#loaders > \`;
-
-
-
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an error and allow to close: page html after close 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an error and allow to close: page html initial 1`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-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...
-
-
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an error, then hide on fix: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- ./foo.js 1:1 Module parse failed: Unterminated template (1:1) You may
- need an appropriate loader to handle this file type, currently no
- loaders are configured to process this file. See
- https://webpack.js.org/concepts#loaders > \`;
-
-
-
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an 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 hide on fix: page html initial 1`] = `
-"
- 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`] = `
-"
- 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 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- ./foo.js 1:1 Module parse failed: Unterminated template (1:1) You may
- need an appropriate loader to handle this file type, currently no
- loaders are configured to process this file. See
- https://webpack.js.org/concepts#loaders > \`;
-
-
-
-
-
-"
-`;
-
-exports[`overlay should not show initially, then show on an error, then show other error, then hide on fix: overlay html 2`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- ./foo.js 1:1 Module parse failed: Unterminated template (1:1) You may
- need an appropriate loader to handle this file type, currently no
- loaders are configured to process this file. See
- https://webpack.js.org/concepts#loaders > \`;a
-
-
-
-
-
-"
-`;
-
-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`] = `
-"
- 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`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning after invalidation: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning after invalidation: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning and error for initial compilation and protects against xss: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- <strong>strong</strong>
-
-
-
-
- ERROR
-
-
- <strong>strong</strong>
-
-
-
-
-
-"
-`;
-
-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:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Warning from compilation
-
-
-
-
- ERROR
-
-
- Warning from compilation
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
-
-"
-`;
-
-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`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning and hide them after closing connection: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning and hide them after closing connection: page html 2`] = `
-"
- webpack-dev-server is running...
-
-
-"
-`;
-
-exports[`overlay should show a warning for initial compilation: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning for initial compilation: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay" is "true": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay.errors" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay.errors" is "true": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay.warnings" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show a warning when "client.overlay.warnings" is "true": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an ansi formatted error for initial compilation: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
-
- 18 |
- Render
- ansi formatted text
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show an ansi formatted error for initial compilation: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error after invalidation: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Error from compilation
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error after invalidation: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error for initial compilation: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error for initial compilation: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error when "client.overlay" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error when "client.overlay" is "true": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error when "client.overlay.errors" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Error from compilation. Can't find 'test' module.
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error when "client.overlay.errors" is "true": page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show an error when "client.overlay.warnings" is "true": overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Warning from compilation
-
-
-
-
-
-"
-`;
-
-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`] = `
-"
-
-
- Uncaught runtime errors:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Async error at <anonymous>:3:26
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show error for uncaught runtime error: overlay html 1`] = `
-"
-
-
- Uncaught runtime errors:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Injected error at throwError (<anonymous>:2:15) at
- <anonymous>:3:9 at addScriptContent
- (__puppeteer_evaluation_script__:9:27)
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show error when it is not filtered: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- ERROR
-
-
- Unfiltered error
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show error when it is not filtered: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
-
-exports[`overlay should show warning when it is not filtered: overlay html 1`] = `
-"
-
-
- Compiled with problems:
-
-
- ×
-
-
-
-
- WARNING
-
-
- Unfiltered warning
-
-
-
-
-
-"
-`;
-
-exports[`overlay should show warning when it is not filtered: page html 1`] = `
-"
- webpack-dev-server is running...
-
-
-
-
-"
-`;
diff --git a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5 b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5
index 11b52c82a1..2a5c43b68d 100644
--- a/test/e2e/__snapshots__/overlay.test.js.snap.webpack5
+++ b/test/e2e/__snapshots__/overlay.test.js.snap.webpack5
@@ -2426,6 +2426,321 @@ 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`] = `
+"
+
+
+ Compiled with problems:
+
+
+ ×
+
+
+
+
+ ERROR
+
+
+ Error from compilation. Can't find 'test' module.
+
+
+
+
+
+"
+`;
+
+exports[`overlay should show overlay when "Content-Security-Policy" is "default-src 'self'" was used: page html 1`] = `
+"
+ webpack-dev-server is running...
+
+
+
+
+"
+`;
+
+exports[`overlay should show overlay when Trusted Types are enabled and the "require-trusted-types-for 'script'" header was used: overlay html 1`] = `
+"
+
+
+ Compiled with problems:
+
+
+ ×
+
+
+
+
+ ERROR
+
+
+ Error from compilation. Can't find 'test' module.
+
+
+
+
+
+"
+`;
+
+exports[`overlay 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...
+
+
+
+
+"
+`;
+
+exports[`overlay should show overlay when Trusted Types are enabled: overlay html 1`] = `
+"
+
+
+ Compiled with problems:
+
+
+ ×
+
+
+
+
+ ERROR
+
+
+ Error from compilation. Can't find 'test' module.
+
+
+
+
+
+"
+`;
+
+exports[`overlay should show overlay when Trusted Types are enabled: page html 1`] = `
+"
+ webpack-dev-server is running...
+
+
+
+
+"
+`;
+
exports[`overlay should show warning when it is not filtered: overlay html 1`] = `
"
{
}
});
- // TODO fix me https://github.com/webpack/webpack-dev-server/issues/4966
- it.skip("should show overlay when Trusted Types are enabled", async () => {
+ it("should show overlay when Trusted Types are enabled", async () => {
const compiler = webpack(trustedTypesConfig);
new ErrorPlugin().apply(compiler);
@@ -1270,6 +1269,83 @@ describe("overlay", () => {
const { page, browser } = await runBrowser();
try {
+ const consoleMessages = [];
+
+ page.on("console", (message) => {
+ consoleMessages.push(message.text());
+ });
+
+ await page.goto(`http://localhost:${port}/`, {
+ waitUntil: "networkidle0",
+ });
+
+ // Delay for the overlay to appear
+ await delay(1000);
+
+ const pageHtml = await page.evaluate(() => document.body.outerHTML);
+ const overlayHandle = await page.$("#webpack-dev-server-client-overlay");
+ const overlayFrame = await overlayHandle.contentFrame();
+ const overlayHtml = await overlayFrame.evaluate(
+ () => document.body.outerHTML,
+ );
+
+ expect(
+ consoleMessages.filter((item) =>
+ /requires 'TrustedHTML' assignment/.test(item),
+ ),
+ ).toHaveLength(0);
+ expect(
+ await prettier.format(pageHtml, {
+ parser: "html",
+ plugins: [prettierHTML, prettierCSS],
+ }),
+ ).toMatchSnapshot("page html");
+ expect(
+ await prettier.format(overlayHtml, {
+ parser: "html",
+ plugins: [prettierHTML, prettierCSS],
+ }),
+ ).toMatchSnapshot("overlay html");
+ } catch (error) {
+ throw error;
+ } 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 () => {
+ const compiler = webpack(trustedTypesConfig);
+
+ new ErrorPlugin().apply(compiler);
+
+ const devServerOptions = {
+ port,
+ headers: [
+ {
+ key: "Content-Security-Policy",
+ value: "require-trusted-types-for 'script'",
+ },
+ ],
+ client: {
+ overlay: {
+ trustedTypesPolicyName: "webpack#dev-overlay",
+ },
+ },
+ };
+ const server = new Server(devServerOptions, compiler);
+
+ await server.start();
+
+ const { page, browser } = await runBrowser();
+
+ try {
+ const consoleMessages = [];
+
+ page.on("console", (message) => {
+ consoleMessages.push(message.text());
+ });
+
await page.goto(`http://localhost:${port}/`, {
waitUntil: "networkidle0",
});
@@ -1284,6 +1360,15 @@ describe("overlay", () => {
() => document.body.outerHTML,
);
+ await page.goto(`http://localhost:${port}/`, {
+ waitUntil: "networkidle0",
+ });
+
+ expect(
+ consoleMessages.filter((item) =>
+ /requires 'TrustedHTML' assignment/.test(item),
+ ),
+ ).toHaveLength(0);
expect(
await prettier.format(pageHtml, {
parser: "html",
@@ -1844,4 +1929,65 @@ describe("overlay", () => {
await server.stop();
}
});
+
+ it('should show overlay when "Content-Security-Policy" is "default-src \'self\'" was used', async () => {
+ const compiler = webpack({ ...config, devtool: false });
+
+ new ErrorPlugin().apply(compiler);
+
+ const devServerOptions = {
+ port,
+ headers: [
+ {
+ key: "Content-Security-Policy",
+ value: "default-src 'self'",
+ },
+ ],
+ };
+ const server = new Server(devServerOptions, compiler);
+
+ await server.start();
+
+ const { page, browser } = await runBrowser();
+
+ try {
+ const consoleMessages = [];
+
+ page.on("console", (message) => {
+ consoleMessages.push(message.text());
+ });
+
+ await page.goto(`http://localhost:${port}/`, {
+ waitUntil: "networkidle0",
+ });
+
+ // Delay for the overlay to appear
+ await delay(1000);
+
+ const pageHtml = await page.evaluate(() => document.body.outerHTML);
+ const overlayHandle = await page.$("#webpack-dev-server-client-overlay");
+ const overlayFrame = await overlayHandle.contentFrame();
+ const overlayHtml = await overlayFrame.evaluate(
+ () => document.body.outerHTML,
+ );
+
+ expect(
+ await prettier.format(pageHtml, {
+ parser: "html",
+ plugins: [prettierHTML, prettierCSS],
+ }),
+ ).toMatchSnapshot("page html");
+ expect(
+ await prettier.format(overlayHtml, {
+ parser: "html",
+ plugins: [prettierHTML, prettierCSS],
+ }),
+ ).toMatchSnapshot("overlay html");
+ } catch (error) {
+ throw error;
+ } finally {
+ await browser.close();
+ await server.stop();
+ }
+ });
});
diff --git a/test/fixtures/reload-config/foo.js b/test/fixtures/reload-config/foo.js
index 37887d2535..68ad7bddf6 100644
--- a/test/fixtures/reload-config/foo.js
+++ b/test/fixtures/reload-config/foo.js
@@ -1,4 +1,3 @@
"use strict";
-// eslint-disable-next-line import/no-unresolved
require("./main.css");
diff --git a/test/fixtures/static/static/index.html b/test/fixtures/static/static/index.html
index 3a990c0653..22f7f2b53f 100644
--- a/test/fixtures/static/static/index.html
+++ b/test/fixtures/static/static/index.html
@@ -1,4 +1,4 @@
-
+
diff --git a/test/validate-options.test.js b/test/validate-options.test.js
index 0377f6cfa7..72bf4c933e 100644
--- a/test/validate-options.test.js
+++ b/test/validate-options.test.js
@@ -99,7 +99,7 @@ const tests = {
},
},
{
- webSocketURL: { username: "zoro", password: "roronoa" },
+ webSocketURL: { username: "username", password: "password" },
},
],
failure: [