From 96741372b228901f27b90a3efd3b25929a1f769c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9goire=20Delattre?= Date: Sun, 22 Aug 2021 17:47:30 -1000 Subject: [PATCH] Make the app more "PWA" Add maskable icons and service worker. --- frontend/img/maskable_icon_x512.png | Bin 0 -> 13332 bytes frontend/js/app.js | 6 + frontend/package-lock.json | 1471 ++++++++++++++++++++++++++- frontend/package.json | 3 +- frontend/webpack.config.js | 7 + 5 files changed, 1485 insertions(+), 2 deletions(-) create mode 100644 frontend/img/maskable_icon_x512.png diff --git a/frontend/img/maskable_icon_x512.png b/frontend/img/maskable_icon_x512.png new file mode 100644 index 0000000000000000000000000000000000000000..aea4d5bfaf7a78437dd4bf5bba698cbcb3480f62 GIT binary patch literal 13332 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 LELHye)tmnU1lp|# literal 0 HcmV?d00001 diff --git a/frontend/js/app.js b/frontend/js/app.js index c5e2a17..93673a3 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -91,6 +91,12 @@ const App = () => ( ); +if ("serviceWorker" in navigator) { + window.addEventListener("load", () => { + navigator.serviceWorker.register("/service-worker.js"); + }); +} + ReactDOM.render( diff --git a/frontend/package-lock.json b/frontend/package-lock.json index a86ca57..4d4bf31 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -57,7 +57,8 @@ "universal-cookie": "^4.0.4", "webpack": "^5.50.0", "webpack-cli": "^4.7.2", - "webpack-pwa-manifest": "^4.3.0" + "webpack-pwa-manifest": "^4.3.0", + "workbox-webpack-plugin": "^6.2.4" } }, "node_modules/@babel/code-frame": { @@ -2226,6 +2227,95 @@ "react": ">=16.8.0" } }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/pluginutils/node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "dev": true, + "dependencies": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, "node_modules/@types/cookie": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", @@ -2346,6 +2436,15 @@ "@types/react": "*" } }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -2363,6 +2462,12 @@ "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", "dev": true }, + "node_modules/@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "dev": true + }, "node_modules/@types/uglify-js": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", @@ -2811,6 +2916,15 @@ "node": ">=8" } }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/autoprefixer": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", @@ -3093,6 +3207,18 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -3265,6 +3391,15 @@ "node": ">= 6" } }, + "node_modules/common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -3348,6 +3483,15 @@ "node": ">= 8" } }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/css-color-names": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", @@ -3471,6 +3615,15 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -3610,6 +3763,16 @@ "tslib": "^2.0.3" } }, + "node_modules/ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true, + "hasInstallScript": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.3.804", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.804.tgz", @@ -4253,6 +4416,12 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -4549,6 +4718,21 @@ "url": "https://www.patreon.com/infusion" } }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4612,6 +4796,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -4894,6 +5084,12 @@ "postcss": "^8.1.0" } }, + "node_modules/idb": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.2.tgz", + "integrity": "sha512-1DNDVu3yDhAZkFDlJf0t7r+GLZ248F5pTAtA7V0oVG3yjmV125qZOx3g0XpAEkGZVYQiFDAsSOnGet2bhugc3w==", + "dev": true + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -5232,6 +5428,12 @@ "node": ">=0.10.0" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "node_modules/is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -5268,6 +5470,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -5329,6 +5540,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -5495,6 +5715,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "node_modules/json-schema": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.3.0.tgz", + "integrity": "sha512-TYfxx36xfl52Rf1LU9HyWSLGPdYLL+SQ8/E/0yVyKG8wCCDaSrhPap0vEdlsZWRaS6tnKKLPGiEJGiREVC8kxQ==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -5522,6 +5748,27 @@ "node": ">=6" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonpointer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", @@ -5558,6 +5805,15 @@ "node": ">= 8" } }, + "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, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -5714,6 +5970,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -5752,6 +6014,15 @@ "node": ">=10" } }, + "node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -6575,6 +6846,18 @@ "node": ">=6.0.0" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pretty-error": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", @@ -7196,6 +7479,112 @@ "rimraf": "bin.js" } }, + "node_modules/rollup": { + "version": "2.56.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz", + "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/rollup-plugin-terser/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/rollup-plugin-terser/node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/rollup-plugin-terser/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/rollup-plugin-terser/node_modules/terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -7405,6 +7794,12 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -7442,6 +7837,18 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "node_modules/spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -7539,6 +7946,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "dependencies": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -7560,6 +7981,15 @@ "node": ">=4" } }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -7657,6 +8087,45 @@ "node": ">=6" } }, + "node_modules/temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tempy/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -7847,6 +8316,15 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/tsconfig-paths": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", @@ -7975,6 +8453,18 @@ "node": ">=4" } }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/universal-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", @@ -7985,6 +8475,25 @@ "cookie": "^0.4.0" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -8057,6 +8566,12 @@ "node": ">=10.13.0" } }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "node_modules/webpack": { "version": "5.50.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", @@ -8232,6 +8747,17 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8278,6 +8804,288 @@ "node": ">=0.10.0" } }, + "node_modules/workbox-background-sync": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.2.4.tgz", + "integrity": "sha512-uoGgm1PZU6THRzXKlMEntrdA4Xkp6SCfxI7re4heN+yGrtAZq6zMKYhZmsdeW+YGnXS3y5xj7WV03b5TDgLh6A==", + "dev": true, + "dependencies": { + "idb": "^6.0.0", + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.2.4.tgz", + "integrity": "sha512-0EpML2lbxNkiZUoap4BJDA0Hfz36MhtUd/rRhFvF6YWoRbTQ8tc6tMaRgM1EBIUmIN2OX9qQlkqe5SGGt4lfXQ==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-build": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.2.4.tgz", + "integrity": "sha512-01ZbY1BHi+yYvu4yDGZBw9xm1bWyZW0QGWPxiksvSPAsNH/z/NwgtWW14YEroFyG98mmXb7pufWlwl40zE1KTw==", + "dev": true, + "dependencies": { + "@apideck/better-ajv-errors": "^0.2.4", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.2.4", + "workbox-broadcast-update": "6.2.4", + "workbox-cacheable-response": "6.2.4", + "workbox-core": "6.2.4", + "workbox-expiration": "6.2.4", + "workbox-google-analytics": "6.2.4", + "workbox-navigation-preload": "6.2.4", + "workbox-precaching": "6.2.4", + "workbox-range-requests": "6.2.4", + "workbox-recipes": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4", + "workbox-streams": "6.2.4", + "workbox-sw": "6.2.4", + "workbox-window": "6.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.2.5.tgz", + "integrity": "sha512-Pm1fAqCT8OEfBVLddU3fWZ/URWpGGhkvlsBIgn9Y2jJlcNumo0gNzPsQswDJTiA8HcKpCjOhWQOgkA9kXR4Ghg==", + "dev": true, + "dependencies": { + "json-schema": "^0.3.0", + "jsonpointer": "^4.1.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.2.4.tgz", + "integrity": "sha512-KZSzAOmgWsrk15Wu+geCUSGLIyyzHaORKjH5JnR6qcVZAsm0JXUu2m2OZGqjQ+/eyQwrGdXXqAMW+4wQvTXccg==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-core": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.2.4.tgz", + "integrity": "sha512-Nu8X4R4Is3g8uzEJ6qwbW2CGVpzntW/cSf8OfsQGIKQR0nt84FAKzP2cLDaNLp3L/iV9TuhZgCTZzkMiap5/OQ==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.2.4.tgz", + "integrity": "sha512-EdOBLunrE3+Ff50y7AYDbiwtiLDvB+oEIkL1Wd9G5d176YVqFfgPfMRzJQ7fN+Yy2NfmsFME0Bw+dQruYekWsQ==", + "dev": true, + "dependencies": { + "idb": "^6.0.0", + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.2.4.tgz", + "integrity": "sha512-+PWmTouoGGcDupaxM193F2NmgrF597Pyt9eHIDxfed+x+JSSeUkETlbAKwB8rnBHkAjs8JQcvStEP/IpueNKpQ==", + "dev": true, + "dependencies": { + "workbox-background-sync": "6.2.4", + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.2.4.tgz", + "integrity": "sha512-y2dOSsaSdEimqhCmBIFR6kBp+GZbtNtWCBaMFwfKxTAul2uyllKcTKBHnZ9IzxULue6o6voV+I2U8Y8tO8n+eA==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-precaching": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.2.4.tgz", + "integrity": "sha512-7POznbVc8EG/mkbXzeb94x3B1VJruPgXvXFgS0NJ3GRugkO4ULs/DpIIb+ycs7uJIKY9EzLS7VXvElr3rMSozQ==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.2.4.tgz", + "integrity": "sha512-q4jjTXD1QOKbrHnzV3nxdZtIpOiVoIP5QyVmjuJrybVnAZurtyKcqirTQcAcT/zlTvgwm07zcTTk9o/zIB6DmA==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-recipes": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.2.4.tgz", + "integrity": "sha512-z7oECGrt940dw1Bv0xIDJEXY1xARiaxsIedeJOutZFkbgaC/yWG61VTr/hmkeJ8Nx6jnY6W7Rc0iOUvg4sePag==", + "dev": true, + "dependencies": { + "workbox-cacheable-response": "6.2.4", + "workbox-core": "6.2.4", + "workbox-expiration": "6.2.4", + "workbox-precaching": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "node_modules/workbox-routing": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.2.4.tgz", + "integrity": "sha512-jHnOmpeH4MOWR4eXv6l608npD2y6IFv7yFJ1bT9/RbB8wq2vXHXJQ0ExTZRTWGbVltSG22wEU+MQ8VebDDwDeg==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-strategies": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.2.4.tgz", + "integrity": "sha512-DKgGC3ruceDuu2o+Ae5qmJy0p0q21mFP+RrkdqKrjyf2u8cJvvtvt1eIt4nevKc5BESiKxmhC2h+TZpOSzUDvA==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4" + } + }, + "node_modules/workbox-streams": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.2.4.tgz", + "integrity": "sha512-yG6zV7S2NmYT6koyb7/DoPsyUAat9kD+rOmjP2SbBCtJdLu6ZIi1lgN4/rOkxEby/+Xb4OE4RmCSIZdMyjEmhQ==", + "dev": true, + "dependencies": { + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4" + } + }, + "node_modules/workbox-sw": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.2.4.tgz", + "integrity": "sha512-OlWLHNNM+j44sN2OaVXnVcf2wwhJUzcHlXrTrbWDu1JWnrQJ/rLicdc/sbxkZoyE0EbQm7Xr1BXcOjsB7PNlXQ==", + "dev": true + }, + "node_modules/workbox-webpack-plugin": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.2.4.tgz", + "integrity": "sha512-G6yeOZDYEbtqgNasqwxHFnma0Vp237kMxpsf8JV/YIhvhUuMwnh1WKv4VnFeqmYaWW/ITx0qj92IEMWB/O1mAA==", + "dev": true, + "dependencies": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.2.4" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.9.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workbox-webpack-plugin/node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/workbox-window": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.2.4.tgz", + "integrity": "sha512-9jD6THkwGEASj1YP56ZBHYJ147733FoGpJlMamYk38k/EBFE75oc6K3Vs2tGOBx5ZGq54+mHSStnlrtFG3IiOg==", + "dev": true, + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.2.4" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -9904,6 +10712,69 @@ "dequal": "^2.0.2" } }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + } + } + }, + "@surma/rollup-plugin-off-main-thread": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz", + "integrity": "sha512-yBMPqmd1yEJo/280PAMkychuaALyQ9Lkb5q1ck3mjJrFuEobIfhnQ4J3mbvBoISmR3SWMWV+cGB/I0lCQee79A==", + "dev": true, + "requires": { + "ejs": "^2.6.1", + "magic-string": "^0.25.0" + } + }, "@types/cookie": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.3.3.tgz", @@ -10024,6 +10895,15 @@ "@types/react": "*" } }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/scheduler": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz", @@ -10041,6 +10921,12 @@ "integrity": "sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==", "dev": true }, + "@types/trusted-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.2.tgz", + "integrity": "sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==", + "dev": true + }, "@types/uglify-js": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/@types/uglify-js/-/uglify-js-3.13.1.tgz", @@ -10420,6 +11306,12 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "autoprefixer": { "version": "10.3.1", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.3.1.tgz", @@ -10609,6 +11501,12 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -10744,6 +11642,12 @@ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, "commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", @@ -10813,6 +11717,12 @@ "which": "^2.0.1" } }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "dev": true + }, "css-color-names": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-1.0.1.tgz", @@ -10896,6 +11806,12 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", @@ -11005,6 +11921,12 @@ "tslib": "^2.0.3" } }, + "ejs": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==", + "dev": true + }, "electron-to-chromium": { "version": "1.3.804", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.804.tgz", @@ -11492,6 +12414,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -11705,6 +12633,18 @@ "integrity": "sha512-MHOhvvxHTfRFpF1geTK9czMIZ6xclsEor2wkIGYYq+PxcQqT7vStJqjhe6S1TenZrMZzo+wlqOufBDVepUEgPg==", "dev": true }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -11752,6 +12692,12 @@ "has-symbols": "^1.0.1" } }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -11957,6 +12903,12 @@ "dev": true, "requires": {} }, + "idb": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.2.tgz", + "integrity": "sha512-1DNDVu3yDhAZkFDlJf0t7r+GLZ248F5pTAtA7V0oVG3yjmV125qZOx3g0XpAEkGZVYQiFDAsSOnGet2bhugc3w==", + "dev": true + }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -12192,6 +13144,12 @@ "is-extglob": "^2.1.1" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "is-negative-zero": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", @@ -12213,6 +13171,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, "is-path-cwd": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", @@ -12256,6 +13220,12 @@ "has-tostringtag": "^1.0.0" } }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, "is-stream": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", @@ -12382,6 +13352,12 @@ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", "dev": true }, + "json-schema": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.3.0.tgz", + "integrity": "sha512-TYfxx36xfl52Rf1LU9HyWSLGPdYLL+SQ8/E/0yVyKG8wCCDaSrhPap0vEdlsZWRaS6tnKKLPGiEJGiREVC8kxQ==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -12403,6 +13379,22 @@ "minimist": "^1.2.5" } }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jsonpointer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", + "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", + "dev": true + }, "jsx-ast-utils": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.0.tgz", @@ -12430,6 +13422,12 @@ "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", "dev": true }, + "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 + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -12562,6 +13560,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -12594,6 +13598,15 @@ "yallist": "^4.0.0" } }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, "make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -13200,6 +14213,12 @@ "fast-diff": "^1.1.2" } }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, "pretty-error": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-3.0.4.tgz", @@ -13700,6 +14719,87 @@ "glob": "^7.1.3" } }, + "rollup": { + "version": "2.56.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.56.2.tgz", + "integrity": "sha512-s8H00ZsRi29M2/lGdm1u8DJpJ9ML8SUOpVVBd33XNeEeL3NVaTiUcSBHzBdF3eAyR0l7VSpsuoVUGrRHq7aPwQ==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" + } + }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "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 + }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + }, + "terser": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.7.1.tgz", + "integrity": "sha512-b3e+d5JbHAe/JSjwsC3Zn55wsBIM7AsHLjKxT31kGCldgbpFePaFo+PiddtO6uwRZWRw7sPXmAN8dTW61xmnSg==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.19" + } + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -13844,6 +14944,12 @@ } } }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -13874,6 +14980,18 @@ } } }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -13959,6 +15077,17 @@ "define-properties": "^1.1.3" } }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, "strip-ansi": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", @@ -13974,6 +15103,12 @@ "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -14042,6 +15177,32 @@ "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true }, + "temp-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", + "dev": true + }, + "tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "dependencies": { + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true + } + } + }, "terser": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", @@ -14182,6 +15343,15 @@ "is-number": "^7.0.0" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, "tsconfig-paths": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.10.1.tgz", @@ -14270,6 +15440,15 @@ "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", "dev": true }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dev": true, + "requires": { + "crypto-random-string": "^2.0.0" + } + }, "universal-cookie": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/universal-cookie/-/universal-cookie-4.0.4.tgz", @@ -14280,6 +15459,18 @@ "cookie": "^0.4.0" } }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -14349,6 +15540,12 @@ "graceful-fs": "^4.1.2" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { "version": "5.50.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.50.0.tgz", @@ -14463,6 +15660,17 @@ "integrity": "sha512-fahN08Et7P9trej8xz/Z7eRu8ltyiygEo/hnRi9KqBUs80KeDcnf96ZJo++ewWd84fEf3xSX9bp4ZS9hbw0OBw==", "dev": true }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -14497,6 +15705,267 @@ "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true }, + "workbox-background-sync": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.2.4.tgz", + "integrity": "sha512-uoGgm1PZU6THRzXKlMEntrdA4Xkp6SCfxI7re4heN+yGrtAZq6zMKYhZmsdeW+YGnXS3y5xj7WV03b5TDgLh6A==", + "dev": true, + "requires": { + "idb": "^6.0.0", + "workbox-core": "6.2.4" + } + }, + "workbox-broadcast-update": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.2.4.tgz", + "integrity": "sha512-0EpML2lbxNkiZUoap4BJDA0Hfz36MhtUd/rRhFvF6YWoRbTQ8tc6tMaRgM1EBIUmIN2OX9qQlkqe5SGGt4lfXQ==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-build": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.2.4.tgz", + "integrity": "sha512-01ZbY1BHi+yYvu4yDGZBw9xm1bWyZW0QGWPxiksvSPAsNH/z/NwgtWW14YEroFyG98mmXb7pufWlwl40zE1KTw==", + "dev": true, + "requires": { + "@apideck/better-ajv-errors": "^0.2.4", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^1.4.1", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.2.4", + "workbox-broadcast-update": "6.2.4", + "workbox-cacheable-response": "6.2.4", + "workbox-core": "6.2.4", + "workbox-expiration": "6.2.4", + "workbox-google-analytics": "6.2.4", + "workbox-navigation-preload": "6.2.4", + "workbox-precaching": "6.2.4", + "workbox-range-requests": "6.2.4", + "workbox-recipes": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4", + "workbox-streams": "6.2.4", + "workbox-sw": "6.2.4", + "workbox-window": "6.2.4" + }, + "dependencies": { + "@apideck/better-ajv-errors": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.2.5.tgz", + "integrity": "sha512-Pm1fAqCT8OEfBVLddU3fWZ/URWpGGhkvlsBIgn9Y2jJlcNumo0gNzPsQswDJTiA8HcKpCjOhWQOgkA9kXR4Ghg==", + "dev": true, + "requires": { + "json-schema": "^0.3.0", + "jsonpointer": "^4.1.0", + "leven": "^3.1.0" + } + }, + "ajv": { + "version": "8.6.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", + "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.2.4.tgz", + "integrity": "sha512-KZSzAOmgWsrk15Wu+geCUSGLIyyzHaORKjH5JnR6qcVZAsm0JXUu2m2OZGqjQ+/eyQwrGdXXqAMW+4wQvTXccg==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-core": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.2.4.tgz", + "integrity": "sha512-Nu8X4R4Is3g8uzEJ6qwbW2CGVpzntW/cSf8OfsQGIKQR0nt84FAKzP2cLDaNLp3L/iV9TuhZgCTZzkMiap5/OQ==", + "dev": true + }, + "workbox-expiration": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.2.4.tgz", + "integrity": "sha512-EdOBLunrE3+Ff50y7AYDbiwtiLDvB+oEIkL1Wd9G5d176YVqFfgPfMRzJQ7fN+Yy2NfmsFME0Bw+dQruYekWsQ==", + "dev": true, + "requires": { + "idb": "^6.0.0", + "workbox-core": "6.2.4" + } + }, + "workbox-google-analytics": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.2.4.tgz", + "integrity": "sha512-+PWmTouoGGcDupaxM193F2NmgrF597Pyt9eHIDxfed+x+JSSeUkETlbAKwB8rnBHkAjs8JQcvStEP/IpueNKpQ==", + "dev": true, + "requires": { + "workbox-background-sync": "6.2.4", + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "workbox-navigation-preload": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.2.4.tgz", + "integrity": "sha512-y2dOSsaSdEimqhCmBIFR6kBp+GZbtNtWCBaMFwfKxTAul2uyllKcTKBHnZ9IzxULue6o6voV+I2U8Y8tO8n+eA==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-precaching": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.2.4.tgz", + "integrity": "sha512-7POznbVc8EG/mkbXzeb94x3B1VJruPgXvXFgS0NJ3GRugkO4ULs/DpIIb+ycs7uJIKY9EzLS7VXvElr3rMSozQ==", + "dev": true, + "requires": { + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "workbox-range-requests": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.2.4.tgz", + "integrity": "sha512-q4jjTXD1QOKbrHnzV3nxdZtIpOiVoIP5QyVmjuJrybVnAZurtyKcqirTQcAcT/zlTvgwm07zcTTk9o/zIB6DmA==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-recipes": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.2.4.tgz", + "integrity": "sha512-z7oECGrt940dw1Bv0xIDJEXY1xARiaxsIedeJOutZFkbgaC/yWG61VTr/hmkeJ8Nx6jnY6W7Rc0iOUvg4sePag==", + "dev": true, + "requires": { + "workbox-cacheable-response": "6.2.4", + "workbox-core": "6.2.4", + "workbox-expiration": "6.2.4", + "workbox-precaching": "6.2.4", + "workbox-routing": "6.2.4", + "workbox-strategies": "6.2.4" + } + }, + "workbox-routing": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.2.4.tgz", + "integrity": "sha512-jHnOmpeH4MOWR4eXv6l608npD2y6IFv7yFJ1bT9/RbB8wq2vXHXJQ0ExTZRTWGbVltSG22wEU+MQ8VebDDwDeg==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-strategies": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.2.4.tgz", + "integrity": "sha512-DKgGC3ruceDuu2o+Ae5qmJy0p0q21mFP+RrkdqKrjyf2u8cJvvtvt1eIt4nevKc5BESiKxmhC2h+TZpOSzUDvA==", + "dev": true, + "requires": { + "workbox-core": "6.2.4" + } + }, + "workbox-streams": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.2.4.tgz", + "integrity": "sha512-yG6zV7S2NmYT6koyb7/DoPsyUAat9kD+rOmjP2SbBCtJdLu6ZIi1lgN4/rOkxEby/+Xb4OE4RmCSIZdMyjEmhQ==", + "dev": true, + "requires": { + "workbox-core": "6.2.4", + "workbox-routing": "6.2.4" + } + }, + "workbox-sw": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.2.4.tgz", + "integrity": "sha512-OlWLHNNM+j44sN2OaVXnVcf2wwhJUzcHlXrTrbWDu1JWnrQJ/rLicdc/sbxkZoyE0EbQm7Xr1BXcOjsB7PNlXQ==", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.2.4.tgz", + "integrity": "sha512-G6yeOZDYEbtqgNasqwxHFnma0Vp237kMxpsf8JV/YIhvhUuMwnh1WKv4VnFeqmYaWW/ITx0qj92IEMWB/O1mAA==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "^2.1.0", + "pretty-bytes": "^5.4.1", + "source-map-url": "^0.4.0", + "upath": "^1.2.0", + "webpack-sources": "^1.4.3", + "workbox-build": "6.2.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "workbox-window": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.2.4.tgz", + "integrity": "sha512-9jD6THkwGEASj1YP56ZBHYJ147733FoGpJlMamYk38k/EBFE75oc6K3Vs2tGOBx5ZGq54+mHSStnlrtFG3IiOg==", + "dev": true, + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.2.4" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/frontend/package.json b/frontend/package.json index 6f89d0c..d4a6910 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -57,6 +57,7 @@ "universal-cookie": "^4.0.4", "webpack": "^5.50.0", "webpack-cli": "^4.7.2", - "webpack-pwa-manifest": "^4.3.0" + "webpack-pwa-manifest": "^4.3.0", + "workbox-webpack-plugin": "^6.2.4" } } diff --git a/frontend/webpack.config.js b/frontend/webpack.config.js index f7fba05..a52472f 100644 --- a/frontend/webpack.config.js +++ b/frontend/webpack.config.js @@ -3,6 +3,7 @@ var path = require("path"); var WebpackPwaManifest = require("webpack-pwa-manifest"); var HtmlWebpackPlugin = require("html-webpack-plugin"); var { CleanWebpackPlugin } = require("clean-webpack-plugin"); +const WorkboxPlugin = require("workbox-webpack-plugin"); var mode = "development"; var BUILD_DIR = path.resolve(__dirname, "../build/public/"); @@ -84,6 +85,11 @@ const config = { src: path.resolve(__dirname, "img/android-chrome-512x512.png"), sizes: [96, 128, 192, 256, 384, 512], }, + { + src: path.resolve(__dirname, "img/maskable_icon_x512.png"), + size: "512x512", + purpose: "maskable", + }, { src: path.resolve(__dirname, "img/apple-touch-icon.png"), sizes: [80, 120, 152, 167, 180], @@ -91,6 +97,7 @@ const config = { }, ], }), + new WorkboxPlugin.GenerateSW(), ], resolve: { extensions: [".js"],