diff --git a/babel.config.js b/babel.config.js index bf1aedf..8b149b0 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,4 +1,4 @@ -module.exports = { +export default { presets: ["@babel/preset-env"], plugins: ["angularjs-annotate"], }; diff --git a/eslint.config.mjs b/eslint.config.mjs index 02121a3..d390f65 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,5 +1,5 @@ import globals from "globals"; -import jest from "eslint-plugin-jest"; +import vitest from "eslint-plugin-vitest"; import js from "@eslint/js"; export default [ @@ -24,15 +24,15 @@ export default [ files: ["**/*.spec.js"], languageOptions: { - globals: jest.environments.globals.globals, + globals: vitest.environments.env.globals, }, plugins: { - jest, + vitest, }, rules: { - "jest/prefer-expect-assertions": "off", + ...vitest.configs.recommended.rules, }, }, ]; diff --git a/importMock.js b/importMock.js deleted file mode 100644 index 9882b85..0000000 --- a/importMock.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - process() { - return { code: "" }; - }, -}; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index cd0744b..0000000 --- a/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - testEnvironment: "jsdom", - transform: { - "\\.[jt]sx?$": "babel-jest", - "\\.(scss|woff)$": "./importMock.js", - "^.+\\.html$": "./importMock.js", - }, - transformIgnorePatterns: ["/node_modules/(?!(lato-webfont)/)"], - setupFilesAfterEnv: ["./jest.setup.js"], - moduleNameMapper: { "^uuid$": "uuid" }, -}; diff --git a/jest.setup.js b/jest.setup.js index 0f8ed55..8ed3693 100644 --- a/jest.setup.js +++ b/jest.setup.js @@ -1,27 +1,4 @@ -// This file is an entry point for angular tests -// Avoids some weird issues when using webpack + angular. -window.jasmine = true; -window.VERSION = {}; -window.process = { - env: {}, -}; +import "angular"; +import "angular-mocks/angular-mocks"; -require("jest-fetch-mock").enableMocks(); - -// https://github.com/pouchdb/pouchdb/issues/8383 -window.setImmediate = (fn) => { - setTimeout(fn, 0); -}; -window.process.nextTick = (fn) => { - setTimeout(fn, 0); -}; - -require("angular"); -require("angular-mocks/angular-mocks"); - -const PouchDB = require("pouchdb-browser"); -const memory = require("pouchdb-adapter-memory"); - -PouchDB.plugin(memory); - -require("./src/scripts/app"); +import "./src/scripts/app.js"; diff --git a/package.json b/package.json index 1ec5421..3bbb797 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "financier", "private": true, + "type": "module", "version": "1.8.1", "releaseDate": "2022-04-24", "description": "Straightforward budgeting", @@ -10,9 +11,8 @@ "server": "webpack-dev-server --history-api-fallback --hot --progress", "lint": "eslint --max-warnings=0 src/", "format": "prettier --check src/", - "test": "jest", - "test-watch": "jest --watch", - "test-coverage": "jest --coverage", + "test": "vitest", + "test-coverage": "vitest --coverage", "start": "pnpm run server", "docs": "jsdoc --configure .jsdoc.json", "pull": "docker pull ghcr.io/financier-io/financier", @@ -41,15 +41,12 @@ "css-loader": "^7.1.2", "css-minimizer-webpack-plugin": "^7.0.0", "eslint": "^9.13.0", - "eslint-plugin-jest": "^28.8.3", + "eslint-plugin-vitest": "^0.5.4", "financier-docdash": "^0.7.0", "globals": "^15.11.0", "helmet-csp": "^4.0.0", "html-loader": "^5.1.0", "html-webpack-plugin": "^5.5.0", - "jest": "^29.7.0", - "jest-environment-jsdom": "^29.7.0", - "jest-fetch-mock": "^3.0.3", "jsdoc": "^4.0.4", "mini-css-extract-plugin": "^2.6.0", "nocache": "^4.0.0", @@ -61,6 +58,7 @@ "sass": "^1.50.1", "sass-loader": "^16.0.2", "style-loader": "^4.0.0", + "vitest": "^2.1.4", "webpack": "^5.72.0", "webpack-cli": "^5.1.4", "webpack-dev-server": "^5.1.0", @@ -107,7 +105,8 @@ "st-multi-sort": "^1.1.2", "tether-drop": "^1.4.2", "underscore": "^1.13.2", - "uuid": "^11.0.2" + "uuid": "^11.0.2", + "vitest-angular-mocks": "github:aeharding/vitest-angular-mocks" }, "pnpm": { "allowedDeprecatedVersions": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 68df71b..7ccae6e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,6 +116,9 @@ importers: uuid: specifier: ^11.0.2 version: 11.0.2 + vitest-angular-mocks: + specifier: github:aeharding/vitest-angular-mocks + version: vite-project@https://codeload.github.com/aeharding/vitest-angular-mocks/tar.gz/291a7b1118a50324b0b1ce01e63abe16e32ae529 devDependencies: '@babel/core': specifier: ^7.17.9 @@ -147,9 +150,9 @@ importers: eslint: specifier: ^9.13.0 version: 9.13.0(jiti@1.21.6) - eslint-plugin-jest: - specifier: ^28.8.3 - version: 28.8.3(eslint@9.13.0(jiti@1.21.6))(jest@29.7.0(@types/node@22.8.4))(typescript@5.6.3) + eslint-plugin-vitest: + specifier: ^0.5.4 + version: 0.5.4(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)(vitest@2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0)) financier-docdash: specifier: ^0.7.0 version: 0.7.0 @@ -165,15 +168,6 @@ importers: html-webpack-plugin: specifier: ^5.5.0 version: 5.6.3(webpack@5.95.0) - jest: - specifier: ^29.7.0 - version: 29.7.0(@types/node@22.8.4) - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 - jest-fetch-mock: - specifier: ^3.0.3 - version: 3.0.3 jsdoc: specifier: ^4.0.4 version: 4.0.4 @@ -200,13 +194,16 @@ importers: version: 6.0.1 sass: specifier: ^1.50.1 - version: 1.80.4 + version: 1.80.5 sass-loader: specifier: ^16.0.2 - version: 16.0.2(sass@1.80.4)(webpack@5.95.0) + version: 16.0.2(sass@1.80.5)(webpack@5.95.0) style-loader: specifier: ^4.0.0 version: 4.0.0(webpack@5.95.0) + vitest: + specifier: ^2.1.4 + version: 2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) webpack: specifier: ^5.72.0 version: 5.95.0(webpack-cli@5.1.4) @@ -218,7 +215,7 @@ importers: version: 5.1.0(webpack-cli@5.1.4)(webpack@5.95.0) workbox-webpack-plugin: specifier: ^7.3.0 - version: 7.3.0(@types/babel__core@7.20.5)(webpack@5.95.0) + version: 7.3.0(webpack@5.95.0) packages: @@ -380,27 +377,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.26.0': resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} engines: {node: '>=6.9.0'} @@ -413,70 +389,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} @@ -810,13 +722,148 @@ packages: resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} - '@bcoe/v8-coverage@0.2.3': - resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -871,76 +918,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@istanbuljs/load-nyc-config@1.1.0': - resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} - engines: {node: '>=8'} - - '@istanbuljs/schema@0.1.3': - resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} - engines: {node: '>=8'} - - '@jest/console@29.7.0': - resolution: {integrity: sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/core@29.7.0': - resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@29.7.0': - resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect-utils@29.7.0': - resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/expect@29.7.0': - resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/fake-timers@29.7.0': - resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/globals@29.7.0': - resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/reporters@29.7.0': - resolution: {integrity: sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@29.6.3': - resolution: {integrity: sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-result@29.7.0': - resolution: {integrity: sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/test-sequencer@29.7.0': - resolution: {integrity: sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - '@jest/transform@29.7.0': - resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/types@29.6.3': resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1128,6 +1109,96 @@ packages: rollup: optional: true + '@rollup/rollup-android-arm-eabi@4.24.3': + resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.3': + resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.3': + resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.3': + resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.24.3': + resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.3': + resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.3': + resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.3': + resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.3': + resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.3': + resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.3': + resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.3': + resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.3': + resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.3': + resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.3': + resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.3': + resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} + cpu: [x64] + os: [win32] + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} @@ -1135,19 +1206,9 @@ packages: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} - '@sinonjs/commons@3.0.1': - resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - - '@sinonjs/fake-timers@10.3.0': - resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@surma/rollup-plugin-off-main-thread@2.2.3': resolution: {integrity: sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - '@trysound/sax@0.2.0': resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} engines: {node: '>=10.13.0'} @@ -1155,18 +1216,6 @@ packages: '@types/angular@1.8.9': resolution: {integrity: sha512-Z0HukqZkx0fotsV3QO00yqU9NzcQI+tMcrum+8MvfB4ePqCawZctF/gz6QiuII+T1ax+LitNoPx/eICTgnF4sg==} - '@types/babel__core@7.20.5': - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} - - '@types/babel__template@7.4.4': - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -1194,9 +1243,6 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} - '@types/graceful-fs@4.1.9': - resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/html-minifier-terser@6.1.0': resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} @@ -1215,9 +1261,6 @@ packages: '@types/istanbul-reports@3.0.4': resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} - '@types/jsdom@20.0.1': - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1263,12 +1306,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/stack-utils@2.0.3': - resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} - - '@types/tough-cookie@4.0.5': - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@types/trusted-types@2.0.7': resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} @@ -1281,36 +1318,65 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/scope-manager@8.12.2': - resolution: {integrity: sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.12.2': - resolution: {integrity: sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/typescript-estree@8.12.2': - resolution: {integrity: sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/utils@8.12.2': - resolution: {integrity: sha512-UTTuDIX3fkfAz6iSVa5rTuSfWIYZ6ATtEocQ/umkRSyC9O919lbZ8dcH7mysshrCdrAM03skJOEYaBugxN+M6A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.56.0 - '@typescript-eslint/visitor-keys@8.12.2': - resolution: {integrity: sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} '@uirouter/angularjs@0.4.3': resolution: {integrity: sha512-jLmZ+VcsvS63E01wJWEqNLND6/6Ju9dZP6t21T+v6q8s9+Xzr8RX6QrrnRt35S0ARugFwJxFlmNFZSIef3jvDw==} + '@vitest/expect@2.1.4': + resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} + + '@vitest/mocker@2.1.4': + resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} + + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} + + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} + + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} + + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} + '@webassemblyjs/ast@1.12.1': resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} @@ -1387,10 +1453,6 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - abstract-leveldown@2.7.2: resolution: {integrity: sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==} @@ -1402,9 +1464,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-globals@7.0.1: - resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} - acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -1415,19 +1474,11 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.3.4: - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} - engines: {node: '>=0.4.0'} - acorn@8.14.0: resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -1511,10 +1562,6 @@ packages: resolution: {integrity: sha512-5qjkWIQQVsHj4Sb5TcEs4WZWpFeVFHXwxEBHUhrny41D8UrBAd6T/6nPPAsLngJCReIOqi95W3mxdveveutpZw==} deprecated: For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward. - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - ansi-html-community@0.0.8: resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} engines: {'0': node >= 0.8.0} @@ -1532,10 +1579,6 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} @@ -1544,9 +1587,6 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} - argparse@1.0.10: - resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} - argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1557,16 +1597,21 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - at-least-node@1.0.0: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} @@ -1582,12 +1627,6 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - babel-jest@29.7.0: - resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.8.0 - babel-loader@9.2.1: resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} engines: {node: '>= 14.15.0'} @@ -1598,14 +1637,6 @@ packages: babel-plugin-angularjs-annotate@0.10.0: resolution: {integrity: sha512-NPE7FOAxcLPCUR/kNkrhHIjoScR3RyIlRH3yRn79j8EZWtpILVnCOdA9yKfsOmRh6BHnLHKl8ZAThc+YDd/QwQ==} - babel-plugin-istanbul@6.1.1: - resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} - engines: {node: '>=8'} - - babel-plugin-jest-hoist@29.6.3: - resolution: {integrity: sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - babel-plugin-polyfill-corejs2@0.4.11: resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: @@ -1621,17 +1652,6 @@ packages: peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - babel-preset-current-node-syntax@1.1.0: - resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@29.6.3: - resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@babel/core': ^7.0.0 - balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -1673,9 +1693,6 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -1694,6 +1711,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1705,14 +1726,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} @@ -1723,14 +1736,14 @@ packages: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} engines: {node: '>= 10'} + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} - char-regex@1.0.2: - resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} - engines: {node: '>=10'} - chart.js@2.2.1: resolution: {integrity: sha512-RLxKoSJ25RgqHlHcu2JzOIwMW+10xxI3PDnjv3xdk5Pod7qwIhJS4DC99a0Kiq/z6tRyaRSdSbW11KBV+3Pw+w==} @@ -1740,6 +1753,10 @@ packages: chartjs-color@2.4.1: resolution: {integrity: sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -1763,28 +1780,14 @@ packages: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} - cjs-module-lexer@1.4.1: - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} - clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} - co@4.6.0: - resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} - engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} - - collect-v8-coverage@1.0.2: - resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1804,10 +1807,6 @@ packages: colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - commander@10.0.1: resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} engines: {node: '>=14'} @@ -1884,14 +1883,6 @@ packages: typescript: optional: true - create-jest@29.7.0: - resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - - cross-fetch@3.1.8: - resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} - cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} @@ -1988,20 +1979,6 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - - cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - - cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - - data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -2031,16 +2008,9 @@ packages: supports-color: optional: true - decimal.js@10.4.3: - resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: - optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} @@ -2073,10 +2043,6 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - depd@1.1.2: resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} engines: {node: '>= 0.6'} @@ -2094,16 +2060,12 @@ packages: engines: {node: '>=0.10'} hasBin: true - detect-newline@3.1.0: - resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} - engines: {node: '>=8'} - detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - diff-sequences@29.6.3: - resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} dns-packet@5.6.1: resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} @@ -2121,11 +2083,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} @@ -2160,10 +2117,6 @@ packages: electron-to-chromium@1.5.49: resolution: {integrity: sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==} - emittery@0.13.1: - resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} - engines: {node: '>=12'} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2235,6 +2188,11 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -2250,22 +2208,17 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - escodegen@2.1.0: - resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} - engines: {node: '>=6.0'} - hasBin: true - - eslint-plugin-jest@28.8.3: - resolution: {integrity: sha512-HIQ3t9hASLKm2IhIOqnu+ifw7uLZkIlR7RYNv7fMcEi/p0CIiJmfriStQS2LDkgtY4nyLbIZAD+JL347Yc2ETQ==} - engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} + eslint-plugin-vitest@0.5.4: + resolution: {integrity: sha512-um+odCkccAHU53WdKAw39MY61+1x990uXjSPguUCq3VcEHdqJrOb8OTMrbYlY6f9jAKx7x98kLVlIe3RJeJqoQ==} + engines: {node: ^18.0.0 || >= 20.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 - eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - jest: '*' + '@typescript-eslint/eslint-plugin': '*' + eslint: ^8.57.0 || ^9.0.0 + vitest: '*' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true - jest: + vitest: optional: true eslint-scope@5.1.1: @@ -2298,11 +2251,6 @@ packages: resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - esprima@4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -2325,6 +2273,9 @@ packages: estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -2340,17 +2291,9 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - - exit@0.1.2: - resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} - engines: {node: '>= 0.8.0'} - - expect@29.7.0: - resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} expr-eval@2.0.2: resolution: {integrity: sha512-4EMSHGOPSwAfBiibw3ndnP0AvjDWLsMvGOvWEZ2F96IGk0bIVdjQisOHxReSkE13mHcfbuCiXw+G4y0zv6N8Eg==} @@ -2386,9 +2329,6 @@ packages: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} engines: {node: '>=0.8.0'} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - fetch-cookie@2.2.0: resolution: {integrity: sha512-h9AgfjURuCgA2+2ISl8GbavpUdR+WGAM2McW/ovn4tVccegp8ZqCKWSBR8uRdM8dDNlx5WdKRWxBYUwteLDCNQ==} @@ -2460,10 +2400,6 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - form-data@4.0.1: - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} - engines: {node: '>= 6'} - forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2504,10 +2440,6 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -2515,14 +2447,6 @@ packages: get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} - get-package-type@0.1.0: - resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} - engines: {node: '>=8.0.0'} - - get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -2563,6 +2487,10 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + globby@14.0.2: resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} engines: {node: '>=18'} @@ -2613,16 +2541,9 @@ packages: hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} - html-entities@2.5.2: resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} - html-escaper@2.0.2: - resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-loader@5.1.0: resolution: {integrity: sha512-Jb3xwDbsm0W3qlXrCZwcYqYGnYz55hb6aoKQTlzyZPXsPpi6tHXzAfqalecglMQgNvtEfxrCQPaKT90Irt5XDA==} engines: {node: '>= 18.12.0'} @@ -2671,10 +2592,6 @@ packages: http-parser-js@0.5.8: resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} - http-proxy-middleware@2.0.7: resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} engines: {node: '>=12.0.0'} @@ -2688,14 +2605,6 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} - - human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - hyperdyperid@1.2.0: resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} engines: {node: '>=10.18'} @@ -2819,10 +2728,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-generator-fn@2.1.0: - resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} - engines: {node: '>=6'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2863,9 +2768,6 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -2890,193 +2792,46 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - - is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - - is-wsl@3.1.0: - resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} - engines: {node: '>=16'} - - isarray@0.0.1: - resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - - isarray@1.0.0: - resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - isobject@3.0.1: - resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} - engines: {node: '>=0.10.0'} - - istanbul-lib-coverage@3.2.2: - resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@5.2.1: - resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} - engines: {node: '>=8'} - - istanbul-lib-instrument@6.0.3: - resolution: {integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==} - engines: {node: '>=10'} - - istanbul-lib-report@3.0.1: - resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} - engines: {node: '>=10'} - - istanbul-lib-source-maps@4.0.1: - resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} - engines: {node: '>=10'} - - istanbul-reports@3.1.7: - resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} - engines: {node: '>=8'} - - jackspeak@4.0.2: - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} - engines: {node: 20 || >=22} - - jake@10.9.2: - resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} - engines: {node: '>=10'} - hasBin: true - - jest-changed-files@29.7.0: - resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-circus@29.7.0: - resolution: {integrity: sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-cli@29.7.0: - resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - jest-config@29.7.0: - resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - '@types/node': '*' - ts-node: '>=9.0.0' - peerDependenciesMeta: - '@types/node': - optional: true - ts-node: - optional: true - - jest-diff@29.7.0: - resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-docblock@29.7.0: - resolution: {integrity: sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-each@29.7.0: - resolution: {integrity: sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - - jest-environment-node@29.7.0: - resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-fetch-mock@3.0.3: - resolution: {integrity: sha512-Ux1nWprtLrdrH4XwE7O7InRY6psIi3GOsqNESJgMJ+M5cv4A8Lh7SN9d2V2kKRZ8ebAfcd1LNyZguAOb6JiDqw==} - - jest-get-type@29.6.3: - resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-haste-map@29.7.0: - resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-leak-detector@29.7.0: - resolution: {integrity: sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-matcher-utils@29.7.0: - resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} - jest-message-util@29.7.0: - resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - jest-mock@29.7.0: - resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} - jest-pnp-resolver@1.2.3: - resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} - engines: {node: '>=6'} - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} - jest-regex-util@29.6.3: - resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} - jest-resolve-dependencies@29.7.0: - resolution: {integrity: sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - jest-resolve@29.7.0: - resolution: {integrity: sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jest-runner@29.7.0: - resolution: {integrity: sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} - jest-runtime@29.7.0: - resolution: {integrity: sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jackspeak@4.0.2: + resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} + engines: {node: 20 || >=22} - jest-snapshot@29.7.0: - resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@29.7.0: - resolution: {integrity: sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - - jest-watcher@29.7.0: - resolution: {integrity: sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-worker@27.5.1: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} @@ -3085,16 +2840,6 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@29.7.0: - resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jiti@1.21.6: resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} hasBin: true @@ -3102,10 +2847,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@3.14.1: - resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} - hasBin: true - js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -3118,15 +2859,6 @@ packages: engines: {node: '>=12.0.0'} hasBin: true - jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsesc@3.0.2: resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} engines: {node: '>=6'} @@ -3175,10 +2907,6 @@ packages: klaw@3.0.0: resolution: {integrity: sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==} - kleur@3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - lato-webfont@https://codeload.github.com/aeharding/lato-webfont/tar.gz/5dc2cc85baa73079be07d34d267871ebe2308c9f: resolution: {tarball: https://codeload.github.com/aeharding/lato-webfont/tar.gz/5dc2cc85baa73079be07d34d267871ebe2308c9f} version: 2.15.1 @@ -3265,6 +2993,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -3281,12 +3012,8 @@ packages: magic-string@0.25.9: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} - make-dir@4.0.0: - resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} - engines: {node: '>=10'} - - makeerror@1.0.12: - resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} markdown-it-anchor@8.6.7: resolution: {integrity: sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==} @@ -3358,10 +3085,6 @@ packages: engines: {node: '>=4'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - mini-css-extract-plugin@2.9.1: resolution: {integrity: sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==} engines: {node: '>= 12.13.0'} @@ -3445,22 +3168,10 @@ packages: encoding: optional: true - node-fetch@2.7.0: - resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} - engines: {node: 4.x || >=6.0.0} - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true - node-forge@1.3.1: resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} engines: {node: '>= 6.13.0'} - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} @@ -3475,16 +3186,9 @@ packages: normalize.css@8.0.1: resolution: {integrity: sha512-qizSNPO93t1YUuUhP22btGOo3chcvDFqFaj2TRybP0DMxkHOCTYwp3n34fel4a31ORXy4m1Xq0Gyqpb5m33qIg==} - npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.13: - resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} - object-inspect@1.13.2: resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} engines: {node: '>= 0.4'} @@ -3511,10 +3215,6 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - open@10.1.0: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} @@ -3620,10 +3320,21 @@ packages: path-to-regexp@0.1.10: resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + path-type@5.0.0: resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} engines: {node: '>=12'} + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -3635,10 +3346,6 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -3922,20 +3629,9 @@ packages: pretty-error@4.0.0: resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} - pretty-format@29.7.0: - resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - promise-polyfill@8.3.0: - resolution: {integrity: sha512-H5oELycFml5yto/atYqmjyigJoAo3+OXwolYiH7OfQuYlAqhxNvTfiNMbV9hsC6Yp83yE5r2KTVmtrG6R9i6Pg==} - - prompts@2.4.2: - resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} - engines: {node: '>= 6'} - proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} @@ -3954,9 +3650,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@6.1.0: - resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} - qs@6.13.0: resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} @@ -3978,9 +3671,6 @@ packages: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} - react-is@18.3.1: - resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - readable-stream@1.1.14: resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} @@ -4038,10 +3728,6 @@ packages: renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -4064,10 +3750,6 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve.exports@2.0.2: - resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} - engines: {node: '>=10'} - resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true @@ -4090,6 +3772,11 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + rollup@4.24.3: + resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-applescript@7.0.0: resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} engines: {node: '>=18'} @@ -4135,15 +3822,11 @@ packages: webpack: optional: true - sass@1.80.4: - resolution: {integrity: sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==} + sass@1.80.5: + resolution: {integrity: sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==} engines: {node: '>=14.0.0'} hasBin: true - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} @@ -4222,8 +3905,8 @@ packages: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} @@ -4232,9 +3915,6 @@ packages: simple-is@0.2.0: resolution: {integrity: sha512-GJXhv3r5vdj5tGWO+rcrWgjU2azLB+fb7Ehh3SmZpXE0o4KrrFLti0w4mdDCbR29X/z0Ls20ApjZitlpAXhAeg==} - sisteransi@1.0.5: - resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -4259,9 +3939,6 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map-support@0.5.13: - resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} - source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -4287,15 +3964,11 @@ packages: resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} engines: {node: '>=6.0.0'} - sprintf-js@1.0.3: - resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - st-multi-sort@1.1.2: resolution: {integrity: sha512-GoZatZzvKOjubLjDfHugrUEhvSzj9CijdYg9lM7ogXxRPcy/zfBCq5wyW/rsRgo1kJPkk2nCDDjzcyT++LRTkQ==} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} statuses@1.5.0: resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} @@ -4305,9 +3978,8 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} - string-length@4.0.2: - resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} - engines: {node: '>=10'} + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -4353,18 +4025,10 @@ packages: resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} engines: {node: '>=12'} - strip-bom@4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - strip-comments@2.0.1: resolution: {integrity: sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==} engines: {node: '>=10'} - strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} @@ -4401,9 +4065,6 @@ packages: engines: {node: '>=14.0.0'} hasBin: true - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tapable@2.2.1: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} @@ -4437,10 +4098,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@6.0.0: - resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} - engines: {node: '>=8'} - tether-drop@1.4.2: resolution: {integrity: sha512-qDxl70AY8xy0dsx+2QOuFxDpE3PbyzukF3LiOwv8IKnSD4lDMW0GohV/P9v+uy6L99/NSjCWNEel3xPPyUxzKQ==} @@ -4462,8 +4119,23 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} - tmpl@1.0.5: - resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -4483,10 +4155,6 @@ packages: tr46@1.0.1: resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - tree-dump@1.0.2: resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==} engines: {node: '>=10.0'} @@ -4506,18 +4174,10 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - type-fest@0.16.0: resolution: {integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==} engines: {node: '>=10'} - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -4629,23 +4289,77 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true - v8-to-istanbul@9.3.0: - resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} - engines: {node: '>=10.12.0'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vuvuzela@1.0.3: - resolution: {integrity: sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + vite-project@https://codeload.github.com/aeharding/vitest-angular-mocks/tar.gz/291a7b1118a50324b0b1ce01e63abe16e32ae529: + resolution: {tarball: https://codeload.github.com/aeharding/vitest-angular-mocks/tar.gz/291a7b1118a50324b0b1ce01e63abe16e32ae529} + version: 0.0.0 + + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest@2.1.4: + resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true - walker@1.0.8: - resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + vuvuzela@1.0.3: + resolution: {integrity: sha512-Tm7jR1xTzBbPW+6y1tknKiEhz04Wf/1iZkcTJjSFcpNko43+dFW6+OOeQe9taJIug3NdfUAjFKgUSyQrIKaDvQ==} watchpack@2.4.2: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} @@ -4660,10 +4374,6 @@ packages: webidl-conversions@4.0.2: resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - webpack-cli@5.1.4: resolution: {integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==} engines: {node: '>=14.15.0'} @@ -4732,26 +4442,14 @@ packages: resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} engines: {node: '>=0.8.0'} - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} - whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -4770,6 +4468,11 @@ packages: engines: {node: '>= 8'} hasBin: true + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + wildcard@2.0.1: resolution: {integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==} @@ -4843,10 +4546,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@4.0.2: - resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} - engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} - ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -4859,13 +4558,6 @@ packages: utf-8-validate: optional: true - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xmlcreate@2.0.4: resolution: {integrity: sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==} @@ -4873,21 +4565,9 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -5078,133 +4758,53 @@ snapshots: '@babel/parser@7.26.1': dependencies: - '@babel/types': 7.26.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': - dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': dependencies: '@babel/core': 7.26.0 '@babel/helper-plugin-utils': 7.25.9 @@ -5647,10 +5247,77 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@bcoe/v8-coverage@0.2.3': {} - '@discoveryjs/json-ext@0.5.7': {} + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + '@eslint-community/eslint-utils@4.4.1(eslint@9.13.0(jiti@1.21.6))': dependencies: eslint: 9.13.0(jiti@1.21.6) @@ -5710,169 +5377,10 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': - dependencies: - camelcase: 5.3.1 - find-up: 4.1.0 - get-package-type: 0.1.0 - js-yaml: 3.14.1 - resolve-from: 5.0.0 - - '@istanbuljs/schema@0.1.3': {} - - '@jest/console@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - chalk: 4.1.2 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - - '@jest/core@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/reporters': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - ci-info: 3.9.0 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.8.4) - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-resolve-dependencies: 29.7.0 - jest-runner: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - jest-watcher: 29.7.0 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-ansi: 6.0.1 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - ts-node - - '@jest/environment@29.7.0': - dependencies: - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - jest-mock: 29.7.0 - - '@jest/expect-utils@29.7.0': - dependencies: - jest-get-type: 29.6.3 - - '@jest/expect@29.7.0': - dependencies: - expect: 29.7.0 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/fake-timers@29.7.0': - dependencies: - '@jest/types': 29.6.3 - '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.8.4 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-util: 29.7.0 - - '@jest/globals@29.7.0': - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/types': 29.6.3 - jest-mock: 29.7.0 - transitivePeerDependencies: - - supports-color - - '@jest/reporters@29.7.0': - dependencies: - '@bcoe/v8-coverage': 0.2.3 - '@jest/console': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.8.4 - chalk: 4.1.2 - collect-v8-coverage: 1.0.2 - exit: 0.1.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 6.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - jest-worker: 29.7.0 - slash: 3.0.0 - string-length: 4.0.2 - strip-ansi: 6.0.1 - v8-to-istanbul: 9.3.0 - transitivePeerDependencies: - - supports-color - '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@29.6.3': - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - callsites: 3.1.0 - graceful-fs: 4.2.11 - - '@jest/test-result@29.7.0': - dependencies: - '@jest/console': 29.7.0 - '@jest/types': 29.6.3 - '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 - - '@jest/test-sequencer@29.7.0': - dependencies: - '@jest/test-result': 29.7.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - slash: 3.0.0 - - '@jest/transform@29.7.0': - dependencies: - '@babel/core': 7.26.0 - '@jest/types': 29.6.3 - '@jridgewell/trace-mapping': 0.3.25 - babel-plugin-istanbul: 6.1.1 - chalk: 4.1.2 - convert-source-map: 2.0.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - micromatch: 4.0.8 - pirates: 4.0.6 - slash: 3.0.0 - write-file-atomic: 4.0.2 - transitivePeerDependencies: - - supports-color - '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -5994,14 +5502,12 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(@types/babel__core@7.20.5)(rollup@2.79.2)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.26.0)(rollup@2.79.2)': dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.25.9 '@rollup/pluginutils': 3.1.0(rollup@2.79.2) rollup: 2.79.2 - optionalDependencies: - '@types/babel__core': 7.20.5 transitivePeerDependencies: - supports-color @@ -6044,17 +5550,63 @@ snapshots: optionalDependencies: rollup: 2.79.2 - '@sinclair/typebox@0.27.8': {} + '@rollup/rollup-android-arm-eabi@4.24.3': + optional: true - '@sindresorhus/merge-streams@2.3.0': {} + '@rollup/rollup-android-arm64@4.24.3': + optional: true - '@sinonjs/commons@3.0.1': - dependencies: - type-detect: 4.0.8 + '@rollup/rollup-darwin-arm64@4.24.3': + optional: true - '@sinonjs/fake-timers@10.3.0': - dependencies: - '@sinonjs/commons': 3.0.1 + '@rollup/rollup-darwin-x64@4.24.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.24.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.24.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.3': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.3': + optional: true + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/merge-streams@2.3.0': {} '@surma/rollup-plugin-off-main-thread@2.2.3': dependencies: @@ -6063,33 +5615,10 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.11 - '@tootallnate/once@2.0.0': {} - '@trysound/sax@0.2.0': {} '@types/angular@1.8.9': {} - '@types/babel__core@7.20.5': - dependencies: - '@babel/parser': 7.26.1 - '@babel/types': 7.26.0 - '@types/babel__generator': 7.6.8 - '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 - - '@types/babel__generator@7.6.8': - dependencies: - '@babel/types': 7.26.0 - - '@types/babel__template@7.4.4': - dependencies: - '@babel/parser': 7.26.1 - '@babel/types': 7.26.0 - - '@types/babel__traverse@7.20.6': - dependencies: - '@babel/types': 7.26.0 - '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 @@ -6133,10 +5662,6 @@ snapshots: '@types/qs': 6.9.16 '@types/serve-static': 1.15.7 - '@types/graceful-fs@4.1.9': - dependencies: - '@types/node': 22.8.4 - '@types/html-minifier-terser@6.1.0': {} '@types/http-errors@2.0.4': {} @@ -6155,12 +5680,6 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jsdom@20.0.1': - dependencies: - '@types/node': 22.8.4 - '@types/tough-cookie': 4.0.5 - parse5: 7.2.1 - '@types/json-schema@7.0.15': {} '@types/linkify-it@5.0.0': {} @@ -6209,10 +5728,6 @@ snapshots: dependencies: '@types/node': 22.8.4 - '@types/stack-utils@2.0.3': {} - - '@types/tough-cookie@4.0.5': {} - '@types/trusted-types@2.0.7': {} '@types/ws@8.5.12': @@ -6225,19 +5740,19 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/scope-manager@8.12.2': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/types@8.12.2': {} + '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@8.12.2(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': dependencies: - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/visitor-keys': 8.12.2 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.3.7 - fast-glob: 3.3.2 + globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 @@ -6247,26 +5762,66 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': + '@typescript-eslint/utils@7.18.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)': dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0(jiti@1.21.6)) - '@typescript-eslint/scope-manager': 8.12.2 - '@typescript-eslint/types': 8.12.2 - '@typescript-eslint/typescript-estree': 8.12.2(typescript@5.6.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) eslint: 9.13.0(jiti@1.21.6) transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/visitor-keys@8.12.2': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 8.12.2 + '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 '@uirouter/angularjs@0.4.3': dependencies: angular: 1.8.3 + '@vitest/expect@2.1.4': + dependencies: + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 + tinyrainbow: 1.2.0 + + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0))': + dependencies: + '@vitest/spy': 2.1.4 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + vite: 5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) + + '@vitest/pretty-format@2.1.4': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@2.1.4': + dependencies: + '@vitest/utils': 2.1.4 + pathe: 1.1.2 + + '@vitest/snapshot@2.1.4': + dependencies: + '@vitest/pretty-format': 2.1.4 + magic-string: 0.30.12 + pathe: 1.1.2 + + '@vitest/spy@2.1.4': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@2.1.4': + dependencies: + '@vitest/pretty-format': 2.1.4 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + '@webassemblyjs/ast@1.12.1': dependencies: '@webassemblyjs/helper-numbers': 1.11.6 @@ -6364,8 +5919,6 @@ snapshots: '@xtuc/long@4.2.2': {} - abab@2.0.6: {} - abstract-leveldown@2.7.2: dependencies: xtend: 4.0.2 @@ -6383,11 +5936,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@7.0.1: - dependencies: - acorn: 8.14.0 - acorn-walk: 8.3.4 - acorn-import-attributes@1.9.5(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -6396,18 +5944,8 @@ snapshots: dependencies: acorn: 8.14.0 - acorn-walk@8.3.4: - dependencies: - acorn: 8.14.0 - acorn@8.14.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 @@ -6479,10 +6017,6 @@ snapshots: angular@1.8.3: {} - ansi-escapes@4.3.2: - dependencies: - type-fest: 0.21.3 - ansi-html-community@0.0.8: {} ansi-regex@5.0.1: {} @@ -6493,8 +6027,6 @@ snapshots: dependencies: color-convert: 2.0.1 - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} anymatch@3.1.3: @@ -6502,10 +6034,6 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 - argparse@1.0.10: - dependencies: - sprintf-js: 1.0.3 - argparse@2.0.1: {} array-buffer-byte-length@1.0.1: @@ -6515,6 +6043,8 @@ snapshots: array-flatten@1.1.1: {} + array-union@2.1.0: {} + arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -6526,9 +6056,9 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - async@3.2.6: {} + assertion-error@2.0.1: {} - asynckit@0.4.0: {} + async@3.2.6: {} at-least-node@1.0.0: {} @@ -6546,19 +6076,6 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 - babel-jest@29.7.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.26.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.95.0): dependencies: '@babel/core': 7.26.0 @@ -6572,23 +6089,6 @@ snapshots: '@babel/types': 7.26.0 simple-is: 0.2.0 - babel-plugin-istanbul@6.1.1: - dependencies: - '@babel/helper-plugin-utils': 7.25.9 - '@istanbuljs/load-nyc-config': 1.1.0 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-instrument: 5.2.1 - test-exclude: 6.0.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-jest-hoist@29.6.3: - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): dependencies: '@babel/compat-data': 7.26.0 @@ -6613,31 +6113,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - - babel-preset-jest@29.6.3(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) - balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -6692,10 +6167,6 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - buffer-from@1.1.2: {} buffer@5.7.1: @@ -6711,6 +6182,8 @@ snapshots: bytes@3.1.2: {} + cac@6.7.14: {} + call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -6726,10 +6199,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.0 - camelcase@5.3.1: {} - - camelcase@6.3.0: {} - caniuse-api@3.0.0: dependencies: browserslist: 4.24.2 @@ -6743,13 +6212,19 @@ snapshots: dependencies: lodash: 4.17.21 + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - char-regex@1.0.2: {} - chart.js@2.2.1: dependencies: chartjs-color: 2.4.1 @@ -6764,6 +6239,8 @@ snapshots: chartjs-color-string: 0.6.0 color-convert: 1.9.3 + check-error@2.1.1: {} + cheerio-select@2.1.0: dependencies: boolbase: 1.0.0 @@ -6807,28 +6284,16 @@ snapshots: ci-info@3.9.0: {} - cjs-module-lexer@1.4.1: {} - clean-css@5.3.3: dependencies: source-map: 0.6.1 - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - co@4.6.0: {} - - collect-v8-coverage@1.0.2: {} - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -6845,10 +6310,6 @@ snapshots: colorette@2.0.20: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - commander@10.0.1: {} commander@2.20.3: {} @@ -6918,27 +6379,6 @@ snapshots: optionalDependencies: typescript: 5.6.3 - create-jest@29.7.0(@types/node@22.8.4): - dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.8.4) - jest-util: 29.7.0 - prompts: 2.4.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - cross-fetch@3.1.8: - dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding - cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -7052,20 +6492,6 @@ snapshots: dependencies: css-tree: 2.2.1 - cssom@0.3.8: {} - - cssom@0.5.0: {} - - cssstyle@2.3.0: - dependencies: - cssom: 0.3.8 - - data-urls@3.0.2: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 @@ -7092,9 +6518,7 @@ snapshots: dependencies: ms: 2.1.3 - decimal.js@10.4.3: {} - - dedent@1.5.3: {} + deep-eql@5.0.2: {} deep-is@0.1.4: {} @@ -7126,8 +6550,6 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - delayed-stream@1.0.0: {} - depd@1.1.2: {} depd@2.0.0: {} @@ -7136,11 +6558,11 @@ snapshots: detect-libc@1.0.3: {} - detect-newline@3.1.0: {} - detect-node@2.1.0: {} - diff-sequences@29.6.3: {} + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 dns-packet@5.6.1: dependencies: @@ -7164,10 +6586,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - domhandler@4.3.1: dependencies: domelementtype: 2.3.0 @@ -7205,8 +6623,6 @@ snapshots: electron-to-chromium@1.5.49: {} - emittery@0.13.1: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -7314,6 +6730,32 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -7322,20 +6764,12 @@ snapshots: escape-string-regexp@4.0.0: {} - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 - esutils: 2.0.3 - optionalDependencies: - source-map: 0.6.1 - - eslint-plugin-jest@28.8.3(eslint@9.13.0(jiti@1.21.6))(jest@29.7.0(@types/node@22.8.4))(typescript@5.6.3): + eslint-plugin-vitest@0.5.4(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3)(vitest@2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0)): dependencies: - '@typescript-eslint/utils': 8.12.2(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@9.13.0(jiti@1.21.6))(typescript@5.6.3) eslint: 9.13.0(jiti@1.21.6) optionalDependencies: - jest: 29.7.0(@types/node@22.8.4) + vitest: 2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - supports-color - typescript @@ -7402,8 +6836,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 4.2.0 - esprima@4.0.1: {} - esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -7420,6 +6852,10 @@ snapshots: estree-walker@2.0.2: {} + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + esutils@2.0.3: {} etag@1.8.1: {} @@ -7428,27 +6864,7 @@ snapshots: events@3.3.0: {} - execa@5.1.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - - exit@0.1.2: {} - - expect@29.7.0: - dependencies: - '@jest/expect-utils': 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 + expect-type@1.1.0: {} expr-eval@2.0.2: {} @@ -7514,10 +6930,6 @@ snapshots: dependencies: websocket-driver: 0.7.4 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - fetch-cookie@2.2.0: dependencies: set-cookie-parser: 2.7.1 @@ -7595,12 +7007,6 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - form-data@4.0.1: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - forwarded@0.2.0: {} fraction.js@4.3.7: {} @@ -7634,8 +7040,6 @@ snapshots: gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -7646,10 +7050,6 @@ snapshots: get-own-enumerable-property-symbols@3.0.2: {} - get-package-type@0.1.0: {} - - get-stream@6.0.1: {} - get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -7695,6 +7095,15 @@ snapshots: define-properties: 1.2.1 gopd: 1.0.1 + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + globby@14.0.2: dependencies: '@sindresorhus/merge-streams': 2.3.0 @@ -7743,14 +7152,8 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-encoding-sniffer@3.0.0: - dependencies: - whatwg-encoding: 2.0.0 - html-entities@2.5.2: {} - html-escaper@2.0.2: {} - html-loader@5.1.0(webpack@5.95.0): dependencies: html-minifier-terser: 7.2.0 @@ -7820,14 +7223,6 @@ snapshots: http-parser-js@0.5.8: {} - http-proxy-agent@5.0.0: - dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - http-proxy-middleware@2.0.7(@types/express@4.17.21): dependencies: '@types/http-proxy': 1.17.15 @@ -7848,15 +7243,6 @@ snapshots: transitivePeerDependencies: - debug - https-proxy-agent@5.0.1: - dependencies: - agent-base: 6.0.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - human-signals@2.1.0: {} - hyperdyperid@1.2.0: {} iconv-lite@0.4.24: @@ -7956,8 +7342,6 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-generator-fn@2.1.0: {} - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -7968,402 +7352,77 @@ snapshots: is-module@1.0.0: {} - is-negative-zero@2.0.3: {} - - is-network-error@1.1.0: {} - - is-number-object@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-number@7.0.0: {} - - is-obj@1.0.1: {} - - is-plain-obj@3.0.0: {} - - is-plain-object@2.0.4: - dependencies: - isobject: 3.0.1 - - is-potential-custom-element-name@1.0.1: {} - - is-regex@1.1.4: - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-regexp@1.0.0: {} - - is-shared-array-buffer@1.0.3: - dependencies: - call-bind: 1.0.7 - - is-stream@2.0.1: {} - - is-string@1.0.7: - dependencies: - has-tostringtag: 1.0.2 - - is-symbol@1.0.4: - dependencies: - has-symbols: 1.0.3 - - is-typed-array@1.1.13: - dependencies: - which-typed-array: 1.1.15 - - is-weakref@1.0.2: - dependencies: - call-bind: 1.0.7 - - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - - isarray@0.0.1: {} - - isarray@1.0.0: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - isobject@3.0.1: {} - - istanbul-lib-coverage@3.2.2: {} - - istanbul-lib-instrument@5.2.1: - dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - - istanbul-lib-report@3.0.1: - dependencies: - istanbul-lib-coverage: 3.2.2 - make-dir: 4.0.0 - supports-color: 7.2.0 - - istanbul-lib-source-maps@4.0.1: - dependencies: - debug: 4.3.7 - istanbul-lib-coverage: 3.2.2 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: - dependencies: - html-escaper: 2.0.2 - istanbul-lib-report: 3.0.1 - - jackspeak@4.0.2: - dependencies: - '@isaacs/cliui': 8.0.2 - - jake@10.9.2: - dependencies: - async: 3.2.6 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - - jest-changed-files@29.7.0: - dependencies: - execa: 5.1.1 - jest-util: 29.7.0 - p-limit: 3.1.0 - - jest-circus@29.7.0: - dependencies: - '@jest/environment': 29.7.0 - '@jest/expect': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - chalk: 4.1.2 - co: 4.6.0 - dedent: 1.5.3 - is-generator-fn: 2.1.0 - jest-each: 29.7.0 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-runtime: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - p-limit: 3.1.0 - pretty-format: 29.7.0 - pure-rand: 6.1.0 - slash: 3.0.0 - stack-utils: 2.0.6 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-cli@29.7.0(@types/node@22.8.4): - dependencies: - '@jest/core': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.8.4) - exit: 0.1.2 - import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.8.4) - jest-util: 29.7.0 - jest-validate: 29.7.0 - yargs: 17.7.2 - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - - jest-config@29.7.0(@types/node@22.8.4): - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 29.7.0 - '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.26.0) - chalk: 4.1.2 - ci-info: 3.9.0 - deepmerge: 4.3.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-circus: 29.7.0 - jest-environment-node: 29.7.0 - jest-get-type: 29.6.3 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-runner: 29.7.0 - jest-util: 29.7.0 - jest-validate: 29.7.0 - micromatch: 4.0.8 - parse-json: 5.2.0 - pretty-format: 29.7.0 - slash: 3.0.0 - strip-json-comments: 3.1.1 - optionalDependencies: - '@types/node': 22.8.4 - transitivePeerDependencies: - - babel-plugin-macros - - supports-color - - jest-diff@29.7.0: - dependencies: - chalk: 4.1.2 - diff-sequences: 29.6.3 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + is-negative-zero@2.0.3: {} - jest-docblock@29.7.0: - dependencies: - detect-newline: 3.1.0 + is-network-error@1.1.0: {} - jest-each@29.7.0: + is-number-object@1.0.7: dependencies: - '@jest/types': 29.6.3 - chalk: 4.1.2 - jest-get-type: 29.6.3 - jest-util: 29.7.0 - pretty-format: 29.7.0 + has-tostringtag: 1.0.2 + + is-number@7.0.0: {} + + is-obj@1.0.1: {} + + is-plain-obj@3.0.0: {} - jest-environment-jsdom@29.7.0: + is-plain-object@2.0.4: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 22.8.4 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + isobject: 3.0.1 - jest-environment-node@29.7.0: + is-regex@1.1.4: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - jest-mock: 29.7.0 - jest-util: 29.7.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-regexp@1.0.0: {} - jest-fetch-mock@3.0.3: + is-shared-array-buffer@1.0.3: dependencies: - cross-fetch: 3.1.8 - promise-polyfill: 8.3.0 - transitivePeerDependencies: - - encoding + call-bind: 1.0.7 - jest-get-type@29.6.3: {} + is-stream@2.0.1: {} - jest-haste-map@29.7.0: + is-string@1.0.7: dependencies: - '@jest/types': 29.6.3 - '@types/graceful-fs': 4.1.9 - '@types/node': 22.8.4 - anymatch: 3.1.3 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - jest-regex-util: 29.6.3 - jest-util: 29.7.0 - jest-worker: 29.7.0 - micromatch: 4.0.8 - walker: 1.0.8 - optionalDependencies: - fsevents: 2.3.3 + has-tostringtag: 1.0.2 - jest-leak-detector@29.7.0: + is-symbol@1.0.4: dependencies: - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + has-symbols: 1.0.3 - jest-matcher-utils@29.7.0: + is-typed-array@1.1.13: dependencies: - chalk: 4.1.2 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - pretty-format: 29.7.0 + which-typed-array: 1.1.15 - jest-message-util@29.7.0: + is-weakref@1.0.2: dependencies: - '@babel/code-frame': 7.26.0 - '@jest/types': 29.6.3 - '@types/stack-utils': 2.0.3 - chalk: 4.1.2 - graceful-fs: 4.2.11 - micromatch: 4.0.8 - pretty-format: 29.7.0 - slash: 3.0.0 - stack-utils: 2.0.6 + call-bind: 1.0.7 - jest-mock@29.7.0: + is-wsl@3.1.0: dependencies: - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - jest-util: 29.7.0 + is-inside-container: 1.0.0 - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - optionalDependencies: - jest-resolve: 29.7.0 + isarray@0.0.1: {} - jest-regex-util@29.6.3: {} + isarray@1.0.0: {} - jest-resolve-dependencies@29.7.0: - dependencies: - jest-regex-util: 29.6.3 - jest-snapshot: 29.7.0 - transitivePeerDependencies: - - supports-color + isarray@2.0.5: {} - jest-resolve@29.7.0: - dependencies: - chalk: 4.1.2 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-pnp-resolver: 1.2.3(jest-resolve@29.7.0) - jest-util: 29.7.0 - jest-validate: 29.7.0 - resolve: 1.22.8 - resolve.exports: 2.0.2 - slash: 3.0.0 + isexe@2.0.0: {} - jest-runner@29.7.0: - dependencies: - '@jest/console': 29.7.0 - '@jest/environment': 29.7.0 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - chalk: 4.1.2 - emittery: 0.13.1 - graceful-fs: 4.2.11 - jest-docblock: 29.7.0 - jest-environment-node: 29.7.0 - jest-haste-map: 29.7.0 - jest-leak-detector: 29.7.0 - jest-message-util: 29.7.0 - jest-resolve: 29.7.0 - jest-runtime: 29.7.0 - jest-util: 29.7.0 - jest-watcher: 29.7.0 - jest-worker: 29.7.0 - p-limit: 3.1.0 - source-map-support: 0.5.13 - transitivePeerDependencies: - - supports-color + isobject@3.0.1: {} - jest-runtime@29.7.0: + jackspeak@4.0.2: dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/globals': 29.7.0 - '@jest/source-map': 29.6.3 - '@jest/test-result': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - chalk: 4.1.2 - cjs-module-lexer: 1.4.1 - collect-v8-coverage: 1.0.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - jest-haste-map: 29.7.0 - jest-message-util: 29.7.0 - jest-mock: 29.7.0 - jest-regex-util: 29.6.3 - jest-resolve: 29.7.0 - jest-snapshot: 29.7.0 - jest-util: 29.7.0 - slash: 3.0.0 - strip-bom: 4.0.0 - transitivePeerDependencies: - - supports-color + '@isaacs/cliui': 8.0.2 - jest-snapshot@29.7.0: + jake@10.9.2: dependencies: - '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) - '@babel/types': 7.26.0 - '@jest/expect-utils': 29.7.0 - '@jest/transform': 29.7.0 - '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + async: 3.2.6 chalk: 4.1.2 - expect: 29.7.0 - graceful-fs: 4.2.11 - jest-diff: 29.7.0 - jest-get-type: 29.6.3 - jest-matcher-utils: 29.7.0 - jest-message-util: 29.7.0 - jest-util: 29.7.0 - natural-compare: 1.4.0 - pretty-format: 29.7.0 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color + filelist: 1.0.4 + minimatch: 3.1.2 jest-util@29.7.0: dependencies: @@ -8374,26 +7433,6 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@29.7.0: - dependencies: - '@jest/types': 29.6.3 - camelcase: 6.3.0 - chalk: 4.1.2 - jest-get-type: 29.6.3 - leven: 3.1.0 - pretty-format: 29.7.0 - - jest-watcher@29.7.0: - dependencies: - '@jest/test-result': 29.7.0 - '@jest/types': 29.6.3 - '@types/node': 22.8.4 - ansi-escapes: 4.3.2 - chalk: 4.1.2 - emittery: 0.13.1 - jest-util: 29.7.0 - string-length: 4.0.2 - jest-worker@27.5.1: dependencies: '@types/node': 22.8.4 @@ -8407,27 +7446,10 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.8.4): - dependencies: - '@jest/core': 29.7.0 - '@jest/types': 29.6.3 - import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.8.4) - transitivePeerDependencies: - - '@types/node' - - babel-plugin-macros - - supports-color - - ts-node - jiti@1.21.6: {} js-tokens@4.0.0: {} - js-yaml@3.14.1: - dependencies: - argparse: 1.0.10 - esprima: 4.0.1 - js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -8454,39 +7476,6 @@ snapshots: strip-json-comments: 3.1.1 underscore: 1.13.7 - jsdom@20.0.3: - dependencies: - abab: 2.0.6 - acorn: 8.14.0 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.1 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 - parse5: 7.2.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.18.0 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsesc@3.0.2: {} json-buffer@3.0.1: {} @@ -8528,8 +7517,6 @@ snapshots: dependencies: graceful-fs: 4.2.11 - kleur@3.0.3: {} - lato-webfont@https://codeload.github.com/aeharding/lato-webfont/tar.gz/5dc2cc85baa73079be07d34d267871ebe2308c9f: {} launch-editor@2.9.1: @@ -8610,6 +7597,8 @@ snapshots: lodash@4.17.21: {} + loupe@3.1.2: {} + lower-case@2.0.2: dependencies: tslib: 2.8.0 @@ -8626,13 +7615,9 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - make-dir@4.0.0: - dependencies: - semver: 7.6.3 - - makeerror@1.0.12: + magic-string@0.30.12: dependencies: - tmpl: 1.0.5 + '@jridgewell/sourcemap-codec': 1.5.0 markdown-it-anchor@8.6.7(@types/markdown-it@14.1.2)(markdown-it@14.1.0): dependencies: @@ -8697,8 +7682,6 @@ snapshots: mime@1.6.0: {} - mimic-fn@2.1.0: {} - mini-css-extract-plugin@2.9.1(webpack@5.95.0): dependencies: schema-utils: 4.2.0 @@ -8761,14 +7744,8 @@ snapshots: dependencies: whatwg-url: 5.0.0 - node-fetch@2.7.0: - dependencies: - whatwg-url: 5.0.0 - node-forge@1.3.1: {} - node-int64@0.4.0: {} - node-releases@2.0.18: {} normalize-path@3.0.0: {} @@ -8777,16 +7754,10 @@ snapshots: normalize.css@8.0.1: {} - npm-run-path@4.0.1: - dependencies: - path-key: 3.1.1 - nth-check@2.1.1: dependencies: boolbase: 1.0.0 - nwsapi@2.2.13: {} - object-inspect@1.13.2: {} object-keys@1.1.1: {} @@ -8810,10 +7781,6 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@5.1.2: - dependencies: - mimic-fn: 2.1.0 - open@10.1.0: dependencies: default-browser: 5.2.1 @@ -8923,16 +7890,20 @@ snapshots: path-to-regexp@0.1.10: {} + path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} + + pathval@2.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.2: {} - pirates@4.0.6: {} - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -9240,21 +8211,8 @@ snapshots: lodash: 4.17.21 renderkid: 3.0.0 - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - process-nextick-args@2.0.1: {} - promise-polyfill@8.3.0: {} - - prompts@2.4.2: - dependencies: - kleur: 3.0.3 - sisteransi: 1.0.5 - proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 @@ -9268,8 +8226,6 @@ snapshots: punycode@2.3.1: {} - pure-rand@6.1.0: {} - qs@6.13.0: dependencies: side-channel: 1.0.6 @@ -9291,8 +8247,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-is@18.3.1: {} - readable-stream@1.1.14: dependencies: core-util-is: 1.0.3 @@ -9370,8 +8324,6 @@ snapshots: lodash: 4.17.21 strip-ansi: 6.0.1 - require-directory@2.1.1: {} - require-from-string@2.0.2: {} requires-port@1.0.0: {} @@ -9388,8 +8340,6 @@ snapshots: resolve-from@5.0.0: {} - resolve.exports@2.0.2: {} - resolve@1.22.8: dependencies: is-core-module: 2.15.1 @@ -9409,6 +8359,30 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rollup@4.24.3: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.3 + '@rollup/rollup-android-arm64': 4.24.3 + '@rollup/rollup-darwin-arm64': 4.24.3 + '@rollup/rollup-darwin-x64': 4.24.3 + '@rollup/rollup-freebsd-arm64': 4.24.3 + '@rollup/rollup-freebsd-x64': 4.24.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 + '@rollup/rollup-linux-arm-musleabihf': 4.24.3 + '@rollup/rollup-linux-arm64-gnu': 4.24.3 + '@rollup/rollup-linux-arm64-musl': 4.24.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 + '@rollup/rollup-linux-riscv64-gnu': 4.24.3 + '@rollup/rollup-linux-s390x-gnu': 4.24.3 + '@rollup/rollup-linux-x64-gnu': 4.24.3 + '@rollup/rollup-linux-x64-musl': 4.24.3 + '@rollup/rollup-win32-arm64-msvc': 4.24.3 + '@rollup/rollup-win32-ia32-msvc': 4.24.3 + '@rollup/rollup-win32-x64-msvc': 4.24.3 + fsevents: 2.3.3 + run-applescript@7.0.0: {} run-parallel@1.2.0: @@ -9434,24 +8408,20 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.2(sass@1.80.4)(webpack@5.95.0): + sass-loader@16.0.2(sass@1.80.5)(webpack@5.95.0): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.80.4 + sass: 1.80.5 webpack: 5.95.0(webpack-cli@5.1.4) - sass@1.80.4: + sass@1.80.5: dependencies: '@parcel/watcher': 2.4.1 chokidar: 4.0.1 immutable: 4.3.7 source-map-js: 1.2.1 - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - schema-utils@3.3.0: dependencies: '@types/json-schema': 7.0.15 @@ -9562,14 +8532,12 @@ snapshots: get-intrinsic: 1.2.4 object-inspect: 1.13.2 - signal-exit@3.0.7: {} + siginfo@2.0.0: {} signal-exit@4.1.0: {} simple-is@0.2.0: {} - sisteransi@1.0.5: {} - slash@3.0.0: {} slash@5.1.0: {} @@ -9588,11 +8556,6 @@ snapshots: source-map-js@1.2.1: {} - source-map-support@0.5.13: - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -9629,24 +8592,17 @@ snapshots: transitivePeerDependencies: - supports-color - sprintf-js@1.0.3: {} - st-multi-sort@1.1.2: dependencies: orderby: 1.1.0 - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 + stackback@0.0.2: {} statuses@1.5.0: {} statuses@2.0.1: {} - string-length@4.0.2: - dependencies: - char-regex: 1.0.2 - strip-ansi: 6.0.1 + std-env@3.7.0: {} string-width@4.2.3: dependencies: @@ -9718,12 +8674,8 @@ snapshots: dependencies: ansi-regex: 6.1.0 - strip-bom@4.0.0: {} - strip-comments@2.0.1: {} - strip-final-newline@2.0.0: {} - strip-json-comments@3.1.1: {} style-loader@4.0.0(webpack@5.95.0): @@ -9762,8 +8714,6 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 - symbol-tree@3.2.4: {} - tapable@2.2.1: {} temp-dir@2.0.0: {} @@ -9791,12 +8741,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@6.0.0: - dependencies: - '@istanbuljs/schema': 0.1.3 - glob: 7.2.3 - minimatch: 3.1.2 - tether-drop@1.4.2: dependencies: tether: 1.4.7 @@ -9816,7 +8760,15 @@ snapshots: thunky@1.1.0: {} - tmpl@1.0.5: {} + tinybench@2.9.0: {} + + tinyexec@0.3.1: {} + + tinypool@1.0.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@3.0.2: {} to-regex-range@5.0.1: dependencies: @@ -9837,10 +8789,6 @@ snapshots: dependencies: punycode: 2.3.1 - tr46@3.0.0: - dependencies: - punycode: 2.3.1 - tree-dump@1.0.2(tslib@2.8.0): dependencies: tslib: 2.8.0 @@ -9855,12 +8803,8 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} - type-fest@0.16.0: {} - type-fest@0.21.3: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -9965,23 +8909,74 @@ snapshots: uuid@8.3.2: {} - v8-to-istanbul@9.3.0: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - '@types/istanbul-lib-coverage': 2.0.6 - convert-source-map: 2.0.0 - vary@1.1.2: {} - vuvuzela@1.0.3: {} + vite-node@2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser - w3c-xmlserializer@4.0.0: + vite-project@https://codeload.github.com/aeharding/vitest-angular-mocks/tar.gz/291a7b1118a50324b0b1ce01e63abe16e32ae529: {} + + vite@5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0): dependencies: - xml-name-validator: 4.0.0 + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.3 + optionalDependencies: + '@types/node': 22.8.4 + fsevents: 2.3.3 + sass: 1.80.5 + terser: 5.36.0 - walker@1.0.8: + vitest@2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0): dependencies: - makeerror: 1.0.12 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 + chai: 5.1.2 + debug: 4.3.7 + expect-type: 1.1.0 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) + vite-node: 2.1.4(@types/node@22.8.4)(sass@1.80.5)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.8.4 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vuvuzela@1.0.3: {} watchpack@2.4.2: dependencies: @@ -9996,8 +8991,6 @@ snapshots: webidl-conversions@4.0.2: {} - webidl-conversions@7.0.0: {} - webpack-cli@5.1.4(webpack-dev-server@5.1.0)(webpack@5.95.0): dependencies: '@discoveryjs/json-ext': 0.5.7 @@ -10120,23 +9113,12 @@ snapshots: websocket-extensions@0.1.4: {} - whatwg-encoding@2.0.0: - dependencies: - iconv-lite: 0.6.3 - whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} - whatwg-url@11.0.0: - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -10168,6 +9150,11 @@ snapshots: dependencies: isexe: 2.0.0 + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + wildcard@2.0.1: {} word-wrap@1.2.5: {} @@ -10181,13 +9168,13 @@ snapshots: dependencies: workbox-core: 7.3.0 - workbox-build@7.3.0(@types/babel__core@7.20.5): + workbox-build@7.3.0: dependencies: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) '@babel/core': 7.26.0 '@babel/preset-env': 7.26.0(@babel/core@7.26.0) '@babel/runtime': 7.26.0 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.0)(@types/babel__core@7.20.5)(rollup@2.79.2) + '@rollup/plugin-babel': 5.3.1(@babel/core@7.26.0)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.0(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) '@rollup/plugin-terser': 0.4.4(rollup@2.79.2) @@ -10280,14 +9267,14 @@ snapshots: workbox-sw@7.3.0: {} - workbox-webpack-plugin@7.3.0(@types/babel__core@7.20.5)(webpack@5.95.0): + workbox-webpack-plugin@7.3.0(webpack@5.95.0): dependencies: fast-json-stable-stringify: 2.1.0 pretty-bytes: 5.6.0 upath: 1.2.0 webpack: 5.95.0(webpack-cli@5.1.4) webpack-sources: 1.4.3 - workbox-build: 7.3.0(@types/babel__core@7.20.5) + workbox-build: 7.3.0 transitivePeerDependencies: - '@types/babel__core' - supports-color @@ -10311,37 +9298,14 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@4.0.2: - dependencies: - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - ws@8.18.0: {} - xml-name-validator@4.0.0: {} - - xmlchars@2.2.0: {} - xmlcreate@2.0.4: {} xtend@4.0.2: {} - y18n@5.0.8: {} - yallist@3.1.1: {} - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 - yocto-queue@0.1.0: {} yocto-queue@1.1.1: {} diff --git a/postcss.config.js b/postcss.config.js index 4f1d0ea..0d0268f 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,5 +1,5 @@ -const autoprefixer = require('autoprefixer'); +import autoprefixer from "autoprefixer"; -module.exports = { - plugins: [autoprefixer] +export default { + plugins: [autoprefixer], }; diff --git a/src/scripts/app.controllers.js b/src/scripts/app.controllers.js index a68a62a..ad9ad12 100644 --- a/src/scripts/app.controllers.js +++ b/src/scripts/app.controllers.js @@ -1,22 +1,22 @@ -import "./controllers/accountCtrl"; -import "./controllers/budgetCtrl"; -import "./controllers/budgetsCtrl"; -import "./controllers/bulkEditTransactionsCtrl"; -import "./controllers/createBudgetCtrl"; -import "./controllers/importBudgetCtrl"; -import "./controllers/dbCtrl"; -import "./controllers/createAccountCtrl"; -import "./controllers/flagCtrl"; -import "./controllers/masterCategoryCtrl"; -import "./controllers/reportCtrl"; -import "./controllers/signinCtrl"; -import "./controllers/signupCtrl"; -import "./controllers/userCtrl"; -import "./controllers/verifyEmailCtrl"; -import "./controllers/editBudgetCtrl"; -import "./controllers/resetPasswordCtrl"; -import "./controllers/requestResetPasswordCtrl"; -import "./controllers/splitTransactionCtrl"; -import "./controllers/editSplitTransactionCtrl"; -import "./controllers/cancelClickCtrl"; -import "./controllers/reports/heatMapCtrl"; +import "./controllers/accountCtrl.js"; +import "./controllers/budgetCtrl.js"; +import "./controllers/budgetsCtrl.js"; +import "./controllers/bulkEditTransactionsCtrl.js"; +import "./controllers/createBudgetCtrl.js"; +import "./controllers/importBudgetCtrl.js"; +import "./controllers/dbCtrl.js"; +import "./controllers/createAccountCtrl.js"; +import "./controllers/flagCtrl.js"; +import "./controllers/masterCategoryCtrl.js"; +import "./controllers/reportCtrl.js"; +import "./controllers/signinCtrl.js"; +import "./controllers/signupCtrl.js"; +import "./controllers/userCtrl.js"; +import "./controllers/verifyEmailCtrl.js"; +import "./controllers/editBudgetCtrl.js"; +import "./controllers/resetPasswordCtrl.js"; +import "./controllers/requestResetPasswordCtrl.js"; +import "./controllers/splitTransactionCtrl.js"; +import "./controllers/editSplitTransactionCtrl.js"; +import "./controllers/cancelClickCtrl.js"; +import "./controllers/reports/heatMapCtrl.js"; diff --git a/src/scripts/app.directives.js b/src/scripts/app.directives.js index ed892ba..91620c6 100644 --- a/src/scripts/app.directives.js +++ b/src/scripts/app.directives.js @@ -1,60 +1,60 @@ -import "./directives/account/accountSuggest"; -import "./directives/account/autosuggest"; -import "./directives/account/bulkEditTransactions"; -import "./directives/account/calendarInput"; -import "./directives/account/categorySuggest"; -import "./directives/account/flag"; -import "./directives/account/memoInput"; -import "./directives/account/payeeSuggest"; -import "./directives/account/transactionValue"; -import "./directives/account/transactionEditor"; -import "./directives/account/inflowInput"; -import "./directives/account/outflowInput"; -import "./directives/account/focusOnNewSplit"; -import "./directives/account/checkNumberInput"; -import "./directives/account/notInsaneDateValidator"; +import "./directives/account/accountSuggest.js"; +import "./directives/account/autosuggest.js"; +import "./directives/account/bulkEditTransactions.js"; +import "./directives/account/calendarInput.js"; +import "./directives/account/categorySuggest.js"; +import "./directives/account/flag.js"; +import "./directives/account/memoInput.js"; +import "./directives/account/payeeSuggest.js"; +import "./directives/account/transactionValue.js"; +import "./directives/account/transactionEditor.js"; +import "./directives/account/inflowInput.js"; +import "./directives/account/outflowInput.js"; +import "./directives/account/focusOnNewSplit.js"; +import "./directives/account/checkNumberInput.js"; +import "./directives/account/notInsaneDateValidator.js"; -import "./directives/reports/netWorthChart"; +import "./directives/reports/netWorthChart.js"; -import "./directives/calcInput"; -import "./directives/autofocus"; -import "./directives/disableNgAnimate"; -import "./directives/flexMonths"; -import "./directives/monthSelector"; -import "./directives/note"; -import "./directives/onEnterGoNext"; -import "./directives/onUpdate"; -import "./directives/outflowHelper"; -import "./directives/outflowTip"; -import "./directives/overspendingSelect"; -import "./directives/rename"; -import "./directives/scrollContainer"; -import "./directives/scrollIntoViewIf"; -import "./directives/serviceWorkerStatus"; -import "./directives/stagingWarning"; -import "./directives/syncStatus"; -import "./directives/transaction-select"; -import "./directives/viewAnimation"; -import "./directives/addCategory"; -import "./directives/fileRead"; -import "./directives/ngRightClick"; -import "./directives/reconcileAccount"; -import "./directives/collapse"; -import "./directives/editAccount"; -import "./directives/editAllAccounts"; -import "./directives/logout"; -import "./directives/quickBudget"; -import "./directives/quickBudgetOne"; -import "./directives/touchStart"; -import "./directives/touchEnd"; -import "./directives/budgetOptions"; -import "./directives/dateRange"; -import "./directives/resizeCategories"; +import "./directives/calcInput.js"; +import "./directives/autofocus.js"; +import "./directives/disableNgAnimate.js"; +import "./directives/flexMonths.js"; +import "./directives/monthSelector.js"; +import "./directives/note.js"; +import "./directives/onEnterGoNext.js"; +import "./directives/onUpdate.js"; +import "./directives/outflowHelper.js"; +import "./directives/outflowTip.js"; +import "./directives/overspendingSelect.js"; +import "./directives/rename.js"; +import "./directives/scrollContainer.js"; +import "./directives/scrollIntoViewIf.js"; +import "./directives/serviceWorkerStatus.js"; +import "./directives/stagingWarning.js"; +import "./directives/syncStatus.js"; +import "./directives/transaction-select.js"; +import "./directives/viewAnimation.js"; +import "./directives/addCategory.js"; +import "./directives/fileRead.js"; +import "./directives/ngRightClick.js"; +import "./directives/reconcileAccount.js"; +import "./directives/collapse.js"; +import "./directives/editAccount.js"; +import "./directives/editAllAccounts.js"; +import "./directives/logout.js"; +import "./directives/quickBudget.js"; +import "./directives/quickBudgetOne.js"; +import "./directives/touchStart.js"; +import "./directives/touchEnd.js"; +import "./directives/budgetOptions.js"; +import "./directives/dateRange.js"; +import "./directives/resizeCategories.js"; -import "./directives/subscription/creditCard"; -import "./directives/subscription/creditCardSpaces"; -import "./directives/subscription/creditCardExpirationSpaces"; +import "./directives/subscription/creditCard.js"; +import "./directives/subscription/creditCardSpaces.js"; +import "./directives/subscription/creditCardExpirationSpaces.js"; -import "./directives/mobile/mobileKeypad"; +import "./directives/mobile/mobileKeypad.js"; -import "./directives/heatMap"; +import "./directives/heatMap.js"; diff --git a/src/scripts/app.filters.js b/src/scripts/app.filters.js index 6470783..46ee3cd 100644 --- a/src/scripts/app.filters.js +++ b/src/scripts/app.filters.js @@ -1,5 +1,5 @@ -import "./filters/intCurrency"; -import "./filters/lastMonth"; -import "./filters/timeAgo"; -import "./filters/absolute"; -import "./filters/removeDots"; +import "./filters/intCurrency.js"; +import "./filters/lastMonth.js"; +import "./filters/timeAgo.js"; +import "./filters/absolute.js"; +import "./filters/removeDots.js"; diff --git a/src/scripts/app.js b/src/scripts/app.js index 11c31c4..b5c6bf3 100644 --- a/src/scripts/app.js +++ b/src/scripts/app.js @@ -1,28 +1,28 @@ const isProd = process.env.NODE_ENV === "production"; if (isProd) { - require("./selfxssWarning"); + import("./selfxssWarning.js"); } import "angular"; -import "lato-webfont/fonts/lato-hairline-webfont.woff"; -import "lato-webfont/fonts/lato-thin-webfont.woff"; -import "lato-webfont/fonts/lato-light-webfont.woff"; -import "lato-webfont/fonts/lato-regular-webfont.woff"; -import "lato-webfont/fonts/lato-medium-webfont.woff"; -import "lato-webfont/fonts/lato-semibold-webfont.woff"; -import "lato-webfont/fonts/lato-bold-webfont.woff"; -import "lato-webfont/fonts/lato-heavy-webfont.woff"; -import "lato-webfont/fonts/lato-black-webfont.woff"; +// import "lato-webfont/fonts/lato-hairline-webfont.woff"; +// import "lato-webfont/fonts/lato-thin-webfont.woff"; +// import "lato-webfont/fonts/lato-light-webfont.woff"; +// import "lato-webfont/fonts/lato-regular-webfont.woff"; +// import "lato-webfont/fonts/lato-medium-webfont.woff"; +// import "lato-webfont/fonts/lato-semibold-webfont.woff"; +// import "lato-webfont/fonts/lato-bold-webfont.woff"; +// import "lato-webfont/fonts/lato-heavy-webfont.woff"; +// import "lato-webfont/fonts/lato-black-webfont.woff"; import "../styles/app.scss"; -import "./app.module"; -import "./app.controllers"; -import "./app.directives"; -import "./app.filters"; -import "./app.services"; +import "./app.module.js"; +import "./app.controllers.js"; +import "./app.directives.js"; +import "./app.filters.js"; +import "./app.services.js"; if (isProd && "serviceWorker" in navigator) { // Use the window load event to keep the page load performant diff --git a/src/scripts/app.module.js b/src/scripts/app.module.js index 9665516..39c321c 100644 --- a/src/scripts/app.module.js +++ b/src/scripts/app.module.js @@ -9,15 +9,38 @@ import "st-multi-sort"; import ngTranslate from "angular-translate"; import dynamicLocale from "angular-dynamic-locale"; import vsRepeat from "angular-vs-repeat"; -import "angular-dateParser/dist/angular-dateparser"; +import "angular-dateParser/dist/angular-dateparser.js"; import "angular-resizable"; import "angular-hotkeys-light"; import "angular-hotkeys"; import "angular-legacy-sortablejs-maintained"; -import "angular-ladda-lw/dist/angular-ladda-lw"; +import "angular-ladda-lw/dist/angular-ladda-lw.js"; import moment from "moment"; +import verifyEmailHtml from "../views/verifyEmail.html"; +import resetPasswordHtml from "../views/resetPassword.html"; +import signupHtml from "../views/signup.html"; +import budgetsHtml from "../views/budgets.html"; +import createBudgetHtml from "../views/modal/createBudget.html"; +import importBudgetHtml from "../views/modal/importBudget.html"; +import appViewHtml from "../views/appView.html"; +import mobileTransactionHtml from "../views/mobileTransaction.html"; +import budgetHtml from "../views/budget.html"; +import accountHtml from "../views/account.html"; +import reportsHtml from "../views/reports.html"; +import heatMapHtml from "../views/reports/heatMap.html"; +import netWorthHtml from "../views/reports/netWorth.html"; +import NotFoundHtml from "../views/404.html"; + +import en from "../assets/translations/en.json"; +import es from "../assets/translations/es.json"; +import ru from "../assets/translations/ru.json"; +import ca from "../assets/translations/ca.json"; +import de from "../assets/translations/de.json"; +import no from "../assets/translations/no.json"; +import fr from "../assets/translations/fr.json"; + let financier = angular .module("financier", [ uiRouter, @@ -98,22 +121,22 @@ financier.config( }) .state("user.verifyEmail", { url: "/user/verify?token", - template: require("../views/verifyEmail.html").default, + template: verifyEmailHtml, controller: "verifyEmailCtrl as verifyEmailCtrl", }) .state("user.resetPassword", { url: "/user/forgot?token&email", - template: require("../views/resetPassword.html").default, + template: resetPasswordHtml, controller: "resetPasswordCtrl as resetPasswordCtrl", }) .state("user.signup", { url: "/signup", - template: require("../views/signup.html").default, + template: signupHtml, controller: "signupCtrl as signupCtrl", }) .state("user.budget", { url: "/", - template: require("../views/budgets.html").default, + template: budgetsHtml, controller: "budgetsCtrl as budgetsCtrl", resolve: { myBudgets: function (db) { @@ -129,7 +152,7 @@ financier.config( onEnter: function (ngDialog, $state) { ngDialog .open({ - template: require("../views/modal/createBudget.html").default, + template: createBudgetHtml, controller: "createBudgetCtrl", controllerAs: "createBudgetCtrl", }) @@ -149,7 +172,7 @@ financier.config( onEnter: function (ngDialog, $state) { ngDialog .open({ - template: require("../views/modal/importBudget.html").default, + template: importBudgetHtml, controller: "importBudgetCtrl", controllerAs: "importBudgetCtrl", }) @@ -200,7 +223,7 @@ financier.config( }) .state("user.app.manager", { abstract: true, - template: require("../views/appView.html").default, + template: appViewHtml, controller: "dbCtrl as dbCtrl", resolve: { data: function (myBudget, $q) { @@ -234,27 +257,27 @@ financier.config( }) .state("user.app.manager.view.mobileTransaction", { url: "/mobile-add", - template: require("../views/mobileTransaction.html").default, + template: mobileTransactionHtml, }) .state("user.app.manager.view.budget", { url: "/budget", - template: require("../views/budget.html").default, + template: budgetHtml, controller: "budgetCtrl as budgetCtrl", }) .state("user.app.manager.view.account", { url: "/account/:accountId", - template: require("../views/account.html").default, + template: accountHtml, controller: "accountCtrl as accountCtrl", }) .state("user.app.manager.view.reports", { url: "/reports", - template: require("../views/reports.html").default, + template: reportsHtml, controller: "reportCtrl as reportCtrl", redirectToReport: true, }) .state("user.app.manager.view.reports.heatMap", { url: "/heat-map", - template: require("../views/reports/heatMap.html").default, + template: heatMapHtml, controller: "heatMapCtrl as heatMapCtrl", onEnter: ($rootScope) => { $rootScope.lastOpenedReport = "heatMap"; @@ -262,46 +285,25 @@ financier.config( }) .state("user.app.manager.view.reports.netWorth", { url: "/net-worth", - template: require("../views/reports/netWorth.html").default, + template: netWorthHtml, onEnter: ($rootScope) => { $rootScope.lastOpenedReport = "netWorth"; }, }) .state("404", { - template: require("../views/404.html").default, + template: NotFoundHtml, controller: ($rootScope) => { $rootScope.loaded = true; }, }); - $translateProvider.translations( - "en", - require("../assets/translations/en.json"), - ); - $translateProvider.translations( - "es", - require("../assets/translations/es.json"), - ); - $translateProvider.translations( - "ru", - require("../assets/translations/ru.json"), - ); - $translateProvider.translations( - "ca", - require("../assets/translations/ca.json"), - ); - $translateProvider.translations( - "de", - require("../assets/translations/de.json"), - ); - $translateProvider.translations( - "no", - require("../assets/translations/no.json"), - ); - $translateProvider.translations( - "fr", - require("../assets/translations/fr.json"), - ); + $translateProvider.translations("en", en); + $translateProvider.translations("es", es); + $translateProvider.translations("ru", ru); + $translateProvider.translations("ca", ca); + $translateProvider.translations("de", de); + $translateProvider.translations("no", no); + $translateProvider.translations("fr", fr); $translateProvider .registerAvailableLanguageKeys( @@ -357,11 +359,12 @@ financier.run(function ($translate, tmhDynamicLocale, tmhDynamicLocaleCache) { language = "es-419"; } - // Hack to avoid running locale require() statements in Jest - if (typeof jest !== "undefined") return; - try { - import(`angular-i18n/angular-locale_${language}.js`).then(() => { + import( + /* webpackChunkName: "i18n" */ + /* webpackMode: "lazy-once" */ + `angular-i18n/angular-locale_${language}.js` + ).then(() => { tmhDynamicLocaleCache.put(language, getInjectedLocale()); tmhDynamicLocale.set(language); diff --git a/src/scripts/app.services.js b/src/scripts/app.services.js index c9f6547..fac7b38 100644 --- a/src/scripts/app.services.js +++ b/src/scripts/app.services.js @@ -1,26 +1,26 @@ -import "./services/Account"; -import "./services/Budget"; -import "./services/BudgetOpened"; -import "./services/budgetManager"; -import "./services/Category"; -import "./services/db"; -import "./services/defaultCategories"; -import "./services/inputDropSetup"; -import "./services/masterCategory"; -import "./services/Month"; -import "./services/MonthCategory"; -import "./services/MonthManager"; -import "./services/Settings"; -import "./services/Transaction"; -import "./services/splitTransaction"; -import "./services/User"; -import "./services/uuid"; -import "./services/stripeLazyLoader"; -import "./services/payee"; -import "./services/currencies"; -import "./services/distance"; -import "./services/exportCsv"; -import "./services/flags"; -import "./services/backup"; +import "./services/Account.js"; +import "./services/Budget.js"; +import "./services/BudgetOpened.js"; +import "./services/budgetManager.js"; +import "./services/Category.js"; +import "./services/db.js"; +import "./services/defaultCategories.js"; +import "./services/inputDropSetup.js"; +import "./services/masterCategory.js"; +import "./services/Month.js"; +import "./services/MonthCategory.js"; +import "./services/MonthManager.js"; +import "./services/Settings.js"; +import "./services/Transaction.js"; +import "./services/splitTransaction.js"; +import "./services/User.js"; +import "./services/uuid.js"; +import "./services/stripeLazyLoader.js"; +import "./services/payee.js"; +import "./services/currencies.js"; +import "./services/distance.js"; +import "./services/exportCsv.js"; +import "./services/flags.js"; +import "./services/backup.js"; -import "./services/reports/netWorth"; +import "./services/reports/netWorth.js"; diff --git a/src/scripts/controllers/budgetCtrl.js b/src/scripts/controllers/budgetCtrl.js index 588506f..8073ec7 100644 --- a/src/scripts/controllers/budgetCtrl.js +++ b/src/scripts/controllers/budgetCtrl.js @@ -1,3 +1,5 @@ +import removeCategoryHtml from "../../views/modal/removeCategory.html"; + angular .module("financier") .controller( @@ -198,7 +200,7 @@ angular scope.category = name; return ngDialog.openConfirm({ - template: require("../../views/modal/removeCategory.html").default, + template: removeCategoryHtml, scope, className: "ngdialog-theme-default ngdialog-theme-default--danger modal", diff --git a/src/scripts/controllers/budgetsCtrl.js b/src/scripts/controllers/budgetsCtrl.js index ff472f6..d5b5c79 100644 --- a/src/scripts/controllers/budgetsCtrl.js +++ b/src/scripts/controllers/budgetsCtrl.js @@ -1,3 +1,5 @@ +import editBudgetHtml from "../../views/modal/editBudget.html"; + angular .module("financier") .controller( @@ -118,7 +120,7 @@ angular e.stopPropagation(); ngDialog.open({ - template: require("../../views/modal/editBudget.html").default, + template: editBudgetHtml, controller: "editBudgetCtrl as editBudgetCtrl", resolve: { budgetRecord: () => budget, diff --git a/src/scripts/controllers/bulkEditTransactionsCtrl.js b/src/scripts/controllers/bulkEditTransactionsCtrl.js index 2dfa446..493df14 100644 --- a/src/scripts/controllers/bulkEditTransactionsCtrl.js +++ b/src/scripts/controllers/bulkEditTransactionsCtrl.js @@ -1,3 +1,6 @@ +import noDeleteSplitTransferHtml from "../../views/modal/noDeleteSplitTransfer.html"; +import removeTransactionConfirmHtml from "../../views/modal/removeTransactionsConfirm.html"; + angular .module("financier") .controller( @@ -12,8 +15,7 @@ angular transactions[i].transfer.constructorName === "SplitTransaction" ) { return ngDialog.open({ - template: require("../../views/modal/noDeleteSplitTransfer.html") - .default, + template: noDeleteSplitTransferHtml, controller: "cancelClickCtrl", }); } @@ -31,9 +33,7 @@ angular ngDialog .openConfirm({ - template: - require("../../views/modal/removeTransactionsConfirm.html") - .default, + template: removeTransactionConfirmHtml, scope, className: "ngdialog-theme-default ngdialog-theme-default--danger modal", diff --git a/src/scripts/controllers/dbCtrl.js b/src/scripts/controllers/dbCtrl.js index 3ff9886..9002283 100644 --- a/src/scripts/controllers/dbCtrl.js +++ b/src/scripts/controllers/dbCtrl.js @@ -1,4 +1,6 @@ import moment from "moment"; +import accountRemoveHasTransactionsHtml from "../../views/modal/accountRemoveHasTransactions.html"; +import createAccountHtml from "../../views/modal/createAccount.html"; angular .module("financier") @@ -175,9 +177,7 @@ angular s.totalTransactions = account.transactions.length; ngDialog.open({ - template: - require("../../views/modal/accountRemoveHasTransactions.html") - .default, + template: accountRemoveHasTransactionsHtml, scope: s, }); @@ -457,7 +457,7 @@ angular this.createAccount = (account) => { ngDialog.open({ - template: require("../../views/modal/createAccount.html").default, + template: createAccountHtml, controller: "createAccountCtrl", controllerAs: "createAccountCtrl", resolve: { diff --git a/src/scripts/controllers/signinCtrl.js b/src/scripts/controllers/signinCtrl.js index bc969e5..62f74e1 100644 --- a/src/scripts/controllers/signinCtrl.js +++ b/src/scripts/controllers/signinCtrl.js @@ -1,3 +1,5 @@ +import requestResetPasswordHtml from "../../views/modal/requestResetPassword.html"; + angular .module("financier") .controller("signinCtrl", function (User, $scope, $rootScope, ngDialog) { @@ -23,8 +25,7 @@ angular $scope.closeThisDialog(); ngDialog.open({ - template: require("../../views/modal/requestResetPassword.html") - .default, + template: requestResetPasswordHtml, controller: "requestResetPasswordCtrl as requestResetPasswordCtrl", resolve: { userEmail: () => this.email, diff --git a/src/scripts/controllers/userCtrl.js b/src/scripts/controllers/userCtrl.js index 593a678..1e12235 100644 --- a/src/scripts/controllers/userCtrl.js +++ b/src/scripts/controllers/userCtrl.js @@ -1,4 +1,6 @@ import moment from "moment"; +import removeLocalDataHtml from "../../views/modal/removeLocalData.html"; +import signinHtml from "../../views/modal/signin.html"; angular .module("financier") @@ -162,7 +164,7 @@ angular this.removeLocalData = () => { return ngDialog .openConfirm({ - template: require("../../views/modal/removeLocalData.html").default, + template: removeLocalDataHtml, className: "ngdialog-theme-default ngdialog-theme-default--danger modal", }) @@ -182,7 +184,7 @@ angular this.signin = () => { ngDialog.open({ - template: require("../../views/modal/signin.html").default, + template: signinHtml, controller: "signinCtrl as signinCtrl", }); }; diff --git a/src/scripts/directives/account/accountSuggest.js b/src/scripts/directives/account/accountSuggest.js index c588c6e..0e3581c 100644 --- a/src/scripts/directives/account/accountSuggest.js +++ b/src/scripts/directives/account/accountSuggest.js @@ -1,3 +1,5 @@ +import accountSuggestHtml from "./accountSuggest.html"; + angular.module("financier").directive("accountSuggest", ($rootScope) => { return { restrict: "E", @@ -55,7 +57,7 @@ angular.module("financier").directive("accountSuggest", ($rootScope) => { scope.$broadcast("focus"); }); - scope.template = require("./accountSuggest.html").default; + scope.template = accountSuggestHtml; }, }; }, diff --git a/src/scripts/directives/account/bulkEditTransactions.js b/src/scripts/directives/account/bulkEditTransactions.js index ce94b98..f9354f0 100644 --- a/src/scripts/directives/account/bulkEditTransactions.js +++ b/src/scripts/directives/account/bulkEditTransactions.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import bulkEditTransactionsHtml from "./bulkEditTransactions.html"; angular .module("financier") @@ -7,7 +8,7 @@ angular element.on("click", (event) => { event.stopPropagation(); - const template = require("./bulkEditTransactions.html").default; + const template = bulkEditTransactionsHtml; const wrap = angular.element("
").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/account/calendarInput.js b/src/scripts/directives/account/calendarInput.js index 4630897..3a1fede 100644 --- a/src/scripts/directives/account/calendarInput.js +++ b/src/scripts/directives/account/calendarInput.js @@ -1,4 +1,5 @@ import moment from "moment"; +import calendarInputHtml from "./calendarInput.html"; angular .module("financier") @@ -23,7 +24,7 @@ angular controllerAs: "calendarCtrl", controller: function ($scope, $element) { const input = $element, - template = require("./calendarInput.html").default; + template = calendarInputHtml; const dropSetup = inputDropSetup($scope, input, template); diff --git a/src/scripts/directives/account/categorySuggest.js b/src/scripts/directives/account/categorySuggest.js index 033f6a6..77b49a1 100644 --- a/src/scripts/directives/account/categorySuggest.js +++ b/src/scripts/directives/account/categorySuggest.js @@ -1,4 +1,5 @@ import moment from "moment"; +import categorySuggestHtml from "./categorySuggest.html"; angular .module("financier") @@ -183,7 +184,7 @@ angular } }); - scope.template = require("./categorySuggest.html").default; + scope.template = categorySuggestHtml; }, }; }, diff --git a/src/scripts/directives/account/flag.js b/src/scripts/directives/account/flag.js index ba8626e..0ce194d 100644 --- a/src/scripts/directives/account/flag.js +++ b/src/scripts/directives/account/flag.js @@ -1,9 +1,10 @@ import Drop from "tether-drop"; +import flagHtml from "./flag.html"; angular.module("financier").directive("flag", ($compile) => { function link(scope, element, attrs, ngModelCtrl) { let dropInstance; - const template = require("./flag.html").default; + const template = flagHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/account/payeeSuggest.js b/src/scripts/directives/account/payeeSuggest.js index 77cd6ff..edf1280 100644 --- a/src/scripts/directives/account/payeeSuggest.js +++ b/src/scripts/directives/account/payeeSuggest.js @@ -1,3 +1,5 @@ +import payeeSuggestHtml from "./payeeSuggest.html"; + angular.module("financier").directive("payeeSuggest", ($rootScope) => { return { restrict: "E", @@ -116,7 +118,7 @@ angular.module("financier").directive("payeeSuggest", ($rootScope) => { } }); - scope.template = require("./payeeSuggest.html").default; + scope.template = payeeSuggestHtml; }, }; }, diff --git a/src/scripts/directives/account/transactionEditor.js b/src/scripts/directives/account/transactionEditor.js index ee16695..2b8ca8e 100644 --- a/src/scripts/directives/account/transactionEditor.js +++ b/src/scripts/directives/account/transactionEditor.js @@ -1,4 +1,9 @@ import moment from "moment"; +import transactionEditorHtml from "./transactionEditor.html"; +import splitNotEqualHtml from "../../../views/modal/splitNotEqual.html"; +import noChangeValueSplitTransferHtml from "../../../views/modal/noChangeValueSplitTransfer.html"; +import noChangePayeeSplitTransferHtml from "../../../views/modal/noChangePayeeSplitTransfer.html"; +import noTransferAndSplitHtml from "../../../views/modal/noTransferAndSplit.html"; angular .module("financier") @@ -15,7 +20,7 @@ angular Hotkeys, ) => { return { - template: require("./transactionEditor.html").default, + template: transactionEditorHtml, bindToController: { transaction: "=", }, @@ -98,8 +103,7 @@ angular !validateSplits(this.value.value, this.splits) ) { ngDialog.open({ - template: require("../../../views/modal/splitNotEqual.html") - .default, + template: splitNotEqualHtml, controller: "cancelClickCtrl", }); @@ -112,9 +116,7 @@ angular ) { if (this.value.value !== this.transaction.value) { ngDialog.open({ - template: - require("../../../views/modal/noChangeValueSplitTransfer.html") - .default, + template: noChangeValueSplitTransferHtml, controller: "cancelClickCtrl", }); @@ -123,9 +125,7 @@ angular if (this.payee.id !== this.transaction.transfer.account) { ngDialog.open({ - template: - require("../../../views/modal/noChangePayeeSplitTransfer.html") - .default, + template: noChangePayeeSplitTransferHtml, controller: "cancelClickCtrl", }); @@ -136,9 +136,7 @@ angular if (this.splits.length) { if (this.payee.constructorName === "Account") { ngDialog.open({ - template: - require("../../../views/modal/noTransferAndSplit.html") - .default, + template: noTransferAndSplitHtml, controller: "cancelClickCtrl", }); diff --git a/src/scripts/directives/addCategory.js b/src/scripts/directives/addCategory.js index 348ce90..9fda2e9 100644 --- a/src/scripts/directives/addCategory.js +++ b/src/scripts/directives/addCategory.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import addCategoryHtml from "./addCategory.html"; angular.module("financier").directive("addCategory", ($compile, $timeout) => { return { @@ -9,7 +10,7 @@ angular.module("financier").directive("addCategory", ($compile, $timeout) => { }, link(scope, element) { element.on("click", () => { - const template = require("./addCategory.html").default; + const template = addCategoryHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/budgetOptions.js b/src/scripts/directives/budgetOptions.js index e52d518..48bb57e 100644 --- a/src/scripts/directives/budgetOptions.js +++ b/src/scripts/directives/budgetOptions.js @@ -1,11 +1,12 @@ import Drop from "tether-drop"; +import budgetOptionsHtml from "./budgetOptions.html"; angular.module("financier").directive("budgetOptions", ($compile, $timeout) => { return { restrict: "A", controller: function ($scope, $element, $attrs) { $element.on("click", () => { - const template = require("./budgetOptions.html").default; + const template = budgetOptionsHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/dateRange.js b/src/scripts/directives/dateRange.js index 4a31597..7ac4c18 100644 --- a/src/scripts/directives/dateRange.js +++ b/src/scripts/directives/dateRange.js @@ -1,5 +1,6 @@ import Drop from "tether-drop"; import moment from "moment"; +import dateRangeHtml from "./dateRange.html"; angular .module("financier") @@ -57,7 +58,7 @@ angular }; element.on("click", () => { - const template = require("./dateRange.html").default; + const template = dateRangeHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/editAccount.js b/src/scripts/directives/editAccount.js index fbc5c5e..6d9fbf0 100644 --- a/src/scripts/directives/editAccount.js +++ b/src/scripts/directives/editAccount.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import editAccountHtml from "./editAccount.html"; angular .module("financier") @@ -18,7 +19,7 @@ angular $rootScope.$broadcast("account:deselectTransactions"); $rootScope.$broadcast("drop:close"); - const template = require("./editAccount.html").default; + const template = editAccountHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)($scope); diff --git a/src/scripts/directives/editAllAccounts.js b/src/scripts/directives/editAllAccounts.js index a2d2626..4e94ae0 100644 --- a/src/scripts/directives/editAllAccounts.js +++ b/src/scripts/directives/editAllAccounts.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import editAllAccountsHtml from "./editAllAccounts.html"; angular .module("financier") @@ -16,7 +17,7 @@ angular $rootScope.$broadcast("account:deselectTransactions"); $rootScope.$broadcast("drop:close"); - const template = require("./editAllAccounts.html").default; + const template = editAllAccountsHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)($scope); diff --git a/src/scripts/directives/logout.js b/src/scripts/directives/logout.js index 5aa9fbd..b8f1647 100644 --- a/src/scripts/directives/logout.js +++ b/src/scripts/directives/logout.js @@ -1,11 +1,12 @@ import Drop from "tether-drop"; +import logoutHtml from "./logout.html"; angular.module("financier").directive("logout", ($compile, $timeout) => { return { restrict: "A", controller: function ($scope, $element, $attrs) { $element.on("click", () => { - const template = require("./logout.html").default; + const template = logoutHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/mobile/mobileKeypad.js b/src/scripts/directives/mobile/mobileKeypad.js index 0c129f0..d7ede27 100644 --- a/src/scripts/directives/mobile/mobileKeypad.js +++ b/src/scripts/directives/mobile/mobileKeypad.js @@ -1,8 +1,10 @@ +import mobileKeypadHtml from "./mobileKeypad.html"; + angular.module("financier").directive("mobileKeypad", () => { return { restrict: "E", require: "ngModel", - template: require("./mobileKeypad.html").default, + template: mobileKeypadHtml, replace: true, scope: { onNext: "&", diff --git a/src/scripts/directives/monthSelector.js b/src/scripts/directives/monthSelector.js index b68582e..4b7842d 100644 --- a/src/scripts/directives/monthSelector.js +++ b/src/scripts/directives/monthSelector.js @@ -1,10 +1,11 @@ import moment from "moment"; import { throttle } from "underscore"; +import monthSelectorHtml from "./monthSelector.html"; angular.module("financier").directive("monthSelector", function () { return { restrict: "E", - template: require("./monthSelector.html").default, + template: monthSelectorHtml, require: "ngModel", scope: { ngModel: "=", diff --git a/src/scripts/directives/note.js b/src/scripts/directives/note.js index 8ef3e33..a5c62aa 100644 --- a/src/scripts/directives/note.js +++ b/src/scripts/directives/note.js @@ -1,9 +1,10 @@ import Drop from "tether-drop"; +import noteHtml from "./note.html"; angular.module("financier").directive("note", ($compile, $timeout) => { function link(scope, element, attrs, ngModelCtrl) { element.on("click", () => { - const template = require("./note.html").default; + const template = noteHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/outflowHelper.js b/src/scripts/directives/outflowHelper.js index d8f5814..a47f0b6 100644 --- a/src/scripts/directives/outflowHelper.js +++ b/src/scripts/directives/outflowHelper.js @@ -1,10 +1,11 @@ import Drop from "tether-drop"; +import outflowHelperHtml from "./outflowHelper.html"; angular.module("financier").directive("outflowHelper", ($compile, $timeout) => { function link(scope, element) { element.on("click", () => { if (scope.outflowSetting && !scope.disabled) { - const template = require("./outflowHelper.html").default; + const template = outflowHelperHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/outflowTip.js b/src/scripts/directives/outflowTip.js index 6d0aa4c..c3aad0d 100644 --- a/src/scripts/directives/outflowTip.js +++ b/src/scripts/directives/outflowTip.js @@ -1,5 +1,6 @@ import Drop from "tether-drop"; import moment from "moment"; +import outflowTipHtml from "./outflowTip.html"; angular.module("financier").directive("outflowTip", ($compile, $timeout) => { function link(scope, element, attrs) { @@ -17,7 +18,7 @@ angular.module("financier").directive("outflowTip", ($compile, $timeout) => { ); }); - const template = require("./outflowTip.html").default; + const template = outflowTipHtml; let dropInstance; const wrap = angular.element("").append(template); diff --git a/src/scripts/directives/overspendingSelect.js b/src/scripts/directives/overspendingSelect.js index 633dbc6..f086256 100644 --- a/src/scripts/directives/overspendingSelect.js +++ b/src/scripts/directives/overspendingSelect.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import overspendingSelectHtml from "./overspendingSelect.html"; angular .module("financier") @@ -6,7 +7,7 @@ angular function link(scope, element, attrs, ngModelCtrl) { element.on("click", () => { if (!scope.overspendingDisabled) { - const template = require("./overspendingSelect.html").default; + const template = overspendingSelectHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/quickBudget.js b/src/scripts/directives/quickBudget.js index 166f156..6d98929 100644 --- a/src/scripts/directives/quickBudget.js +++ b/src/scripts/directives/quickBudget.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import quickBudgetHtml from "./quickBudget.html"; angular.module("financier").directive("quickBudget", ($compile, $timeout) => { return { @@ -65,7 +66,7 @@ angular.module("financier").directive("quickBudget", ($compile, $timeout) => { }; $element.on("click", () => { - const template = require("./quickBudget.html").default; + const template = quickBudgetHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/quickBudgetOne.js b/src/scripts/directives/quickBudgetOne.js index 29b6b66..da2b2e2 100644 --- a/src/scripts/directives/quickBudgetOne.js +++ b/src/scripts/directives/quickBudgetOne.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import quickBudgetOneHtml from "./quickBudgetOne.html"; angular .module("financier") @@ -47,7 +48,7 @@ angular }); $element.on("click", () => { - const template = require("./quickBudgetOne.html").default; + const template = quickBudgetOneHtml; let dropInstance; const wrap = angular diff --git a/src/scripts/directives/reconcileAccount.js b/src/scripts/directives/reconcileAccount.js index 3cba19f..cb4e993 100644 --- a/src/scripts/directives/reconcileAccount.js +++ b/src/scripts/directives/reconcileAccount.js @@ -1,4 +1,5 @@ import Drop from "tether-drop"; +import reconcileAccountHtml from "./reconcileAccount.html"; angular .module("financier") @@ -7,7 +8,7 @@ angular scope.dbCtrl = scope.$parent.dbCtrl; element.on("click", () => { - const template = require("./reconcileAccount.html").default; + const template = reconcileAccountHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/rename.js b/src/scripts/directives/rename.js index 0040f36..b6c5735 100644 --- a/src/scripts/directives/rename.js +++ b/src/scripts/directives/rename.js @@ -1,9 +1,10 @@ import Drop from "tether-drop"; +import renameHtml from "./rename.html"; angular.module("financier").directive("rename", ($compile, $timeout) => { function link(scope, element, attrs, ngModelCtrl) { element.on("click", () => { - const template = require("./rename.html").default; + const template = renameHtml; const wrap = angular.element("").append(template); const content = $compile(wrap)(scope); diff --git a/src/scripts/directives/serviceWorkerStatus.js b/src/scripts/directives/serviceWorkerStatus.js index d78c0b4..da08979 100644 --- a/src/scripts/directives/serviceWorkerStatus.js +++ b/src/scripts/directives/serviceWorkerStatus.js @@ -1,7 +1,9 @@ +import serviceWorkerStatusHtml from "./serviceWorkerStatus.html"; + angular.module("financier").directive("serviceWorkerStatus", () => { return { restrict: "E", scope: false, - template: require("./serviceWorkerStatus.html").default, + template: serviceWorkerStatusHtml, }; }); diff --git a/src/scripts/directives/stagingWarning.js b/src/scripts/directives/stagingWarning.js index a47fd54..6c4be0a 100644 --- a/src/scripts/directives/stagingWarning.js +++ b/src/scripts/directives/stagingWarning.js @@ -1,3 +1,5 @@ +import stagingWarningHtml from "./stagingWarning.html"; + angular.module("financier").directive("stagingWarning", () => { let show; @@ -13,7 +15,7 @@ angular.module("financier").directive("stagingWarning", () => { return { restrict: "E", - template: require("./stagingWarning.html").default, + template: stagingWarningHtml, controller, replace: true, controllerAs: "stagingWarningCtrl", diff --git a/src/scripts/directives/subscription/creditCard.js b/src/scripts/directives/subscription/creditCard.js index a11ebe5..bbb4f70 100644 --- a/src/scripts/directives/subscription/creditCard.js +++ b/src/scripts/directives/subscription/creditCard.js @@ -1,9 +1,11 @@ +import creditCardHtml from "./creditCard.html"; + angular .module("financier") .directive("creditCard", ($q, User, stripeLazyLoader) => { return { restrict: "E", - template: require("./creditCard.html").default, + template: creditCardHtml, bindToController: { addToken: "&", }, diff --git a/src/scripts/services/Account.spec.js b/src/scripts/services/Account.spec.js index 7f1ce89..336a7d2 100644 --- a/src/scripts/services/Account.spec.js +++ b/src/scripts/services/Account.spec.js @@ -120,7 +120,7 @@ describe("account", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let acc = new Account({ type: "CREDIT", @@ -165,7 +165,7 @@ describe("account", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let acc = new Account({ name: "My account", @@ -185,7 +185,7 @@ describe("account", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let acc = new Account({ type: "CREDIT", diff --git a/src/scripts/services/Budget.spec.js b/src/scripts/services/Budget.spec.js index 3bed044..6b93e9c 100644 --- a/src/scripts/services/Budget.spec.js +++ b/src/scripts/services/Budget.spec.js @@ -101,7 +101,7 @@ describe("Budget", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let sets = new Budget(); @@ -152,7 +152,7 @@ describe("Budget", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let sets = new Budget({ hints: { @@ -174,7 +174,7 @@ describe("Budget", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let sets = new Budget({ name: "foobar", diff --git a/src/scripts/services/Category.spec.js b/src/scripts/services/Category.spec.js index ecd7dc7..f7b4eff 100644 --- a/src/scripts/services/Category.spec.js +++ b/src/scripts/services/Category.spec.js @@ -120,7 +120,7 @@ describe("category", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let cat = new Category({ _id: "foo", @@ -187,7 +187,7 @@ describe("category", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let cat = new Category({ name: "My catount", @@ -208,7 +208,7 @@ describe("category", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let cat = new Category({ note: "first note", diff --git a/src/scripts/services/Month.spec.js b/src/scripts/services/Month.spec.js index 1d3aff3..e8fe0ac 100644 --- a/src/scripts/services/Month.spec.js +++ b/src/scripts/services/Month.spec.js @@ -105,7 +105,7 @@ describe("month", function () { const mo = new Month(defaultMonth(), () => {}); mo.budgetChange = () => {}; - jest.spyOn(mo, "budgetChange"); + vi.spyOn(mo, "budgetChange"); mo.setBudget(123, 1200); @@ -120,7 +120,7 @@ describe("month", function () { const mo = new Month(defaultMonth(), () => {}); mo.nextRollingFn = () => {}; - jest.spyOn(mo, "nextRollingFn"); + vi.spyOn(mo, "nextRollingFn"); mo.setRolling(123, 1200, true); @@ -196,7 +196,7 @@ describe("month", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const mo = new Month(defaultMonth(), foo.change), cat = MonthCategory.from( @@ -219,7 +219,7 @@ describe("month", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const mo = new Month(defaultMonth(), foo.change), cat = new MonthCategory({ @@ -237,7 +237,7 @@ describe("month", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const mo = new Month(defaultMonth(), foo.change), cat = new MonthCategory({ @@ -255,7 +255,7 @@ describe("month", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const mo = new Month(defaultMonth(), foo.change), cat = new MonthCategory({ @@ -273,7 +273,7 @@ describe("month", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const mo = new Month(defaultMonth(), foo.change), cat = new MonthCategory({ @@ -294,7 +294,7 @@ describe("month", function () { }); mo.nextChangeAvailableFn = () => {}; - jest.spyOn(mo, "nextChangeAvailableFn"); + vi.spyOn(mo, "nextChangeAvailableFn"); mo.addBudget(cat); @@ -306,7 +306,7 @@ describe("month", function () { saveFn: () => {}, }; - jest.spyOn(foo, "saveFn"); + vi.spyOn(foo, "saveFn"); const mo = new Month(defaultMonth(), foo.saveFn), cat = new MonthCategory({ @@ -330,7 +330,7 @@ describe("month", function () { budget: 300, }); - jest.spyOn(mo, "budgetChange"); + vi.spyOn(mo, "budgetChange"); mo.addBudget(cat); @@ -349,7 +349,7 @@ describe("month", function () { budget: 300, }); - jest.spyOn(mo, "_changeCurrentOverspent"); + vi.spyOn(mo, "_changeCurrentOverspent"); mo.addBudget(cat); @@ -363,7 +363,7 @@ describe("month", function () { budget: -300, }); - jest.spyOn(mo, "_changeCurrentOverspent"); + vi.spyOn(mo, "_changeCurrentOverspent"); mo.addBudget(cat); @@ -449,7 +449,7 @@ describe("month", function () { mo.setBudget("123", 333); - jest.spyOn(mo, "setRolling"); + vi.spyOn(mo, "setRolling"); mo.startRolling(123); @@ -485,7 +485,7 @@ describe("month", function () { mo.createCategoryCacheIfEmpty("333-333-333-333"); mo.nextChangeAvailableFn = () => {}; - jest.spyOn(mo, "nextChangeAvailableFn"); + vi.spyOn(mo, "nextChangeAvailableFn"); mo.budgetChange("333-333-333-333", -100); @@ -508,7 +508,7 @@ describe("month", function () { mo.createCategoryCacheIfEmpty("333-333-333-333"); - jest.spyOn(mo, "_changeCurrentOverspent"); + vi.spyOn(mo, "_changeCurrentOverspent"); mo.budgetChange("333-333-333-333", 50); @@ -520,7 +520,7 @@ describe("month", function () { mo.createCategoryCacheIfEmpty("333-333-333-333"); - jest.spyOn(mo, "_changeCurrentOverspent"); + vi.spyOn(mo, "_changeCurrentOverspent"); mo.budgetChange("333-333-333-333", -50); @@ -552,7 +552,7 @@ describe("month", function () { const mo = new Month(defaultMonth()); mo.nextChangeAvailableFn = () => {}; - jest.spyOn(mo, "nextChangeAvailableFn"); + vi.spyOn(mo, "nextChangeAvailableFn"); expect(mo.nextChangeAvailableFn).not.toHaveBeenCalled(); @@ -575,7 +575,7 @@ describe("month", function () { const mo = new Month(defaultMonth()); mo.nextChangeOverspentFn = () => {}; - jest.spyOn(mo, "nextChangeOverspentFn"); + vi.spyOn(mo, "nextChangeOverspentFn"); expect(mo.nextChangeOverspentFn).not.toHaveBeenCalled(); @@ -598,7 +598,7 @@ describe("month", function () { const mo = new Month(defaultMonth()); mo.changeAvailable = () => {}; - jest.spyOn(mo, "changeAvailable"); + vi.spyOn(mo, "changeAvailable"); expect(mo.changeAvailable).not.toHaveBeenCalled(); diff --git a/src/scripts/services/MonthCategory.spec.js b/src/scripts/services/MonthCategory.spec.js index 7701d71..3f13cb4 100644 --- a/src/scripts/services/MonthCategory.spec.js +++ b/src/scripts/services/MonthCategory.spec.js @@ -154,8 +154,8 @@ describe("MonthCategory", function () { bdgSub: () => {}, }; - jest.spyOn(foo, "sub"); - jest.spyOn(foo, "bdgSub"); + vi.spyOn(foo, "sub"); + vi.spyOn(foo, "bdgSub"); let sets = new MonthCategory({ _id: "b_111-111_m_201501_month-category_222-222", @@ -180,8 +180,8 @@ describe("MonthCategory", function () { bdgSub: () => {}, }; - jest.spyOn(foo, "sub"); - jest.spyOn(foo, "bdgSub"); + vi.spyOn(foo, "sub"); + vi.spyOn(foo, "bdgSub"); let sets = new MonthCategory({ _id: "b_111-111_m_201501_month-category_222-222", @@ -206,8 +206,8 @@ describe("MonthCategory", function () { bdgSub: () => {}, }; - jest.spyOn(foo, "sub"); - jest.spyOn(foo, "bdgSub"); + vi.spyOn(foo, "sub"); + vi.spyOn(foo, "bdgSub"); let sets = new MonthCategory({ _id: "b_111-111_m_201501_month-category_222-222", @@ -232,8 +232,8 @@ describe("MonthCategory", function () { bdgSub: () => {}, }; - jest.spyOn(foo, "sub"); - jest.spyOn(foo, "bdgSub"); + vi.spyOn(foo, "sub"); + vi.spyOn(foo, "bdgSub"); let sets = new MonthCategory({ _id: "b_111-111_m_201501_month-category_222-222", diff --git a/src/scripts/services/MonthManager.spec.js b/src/scripts/services/MonthManager.spec.js index 821b5c0..060ff6d 100644 --- a/src/scripts/services/MonthManager.spec.js +++ b/src/scripts/services/MonthManager.spec.js @@ -1,3 +1,5 @@ +/* eslint-disable vitest/no-commented-out-tests */ + describe("category", function () { let monthManager, MonthManager, month, Month; @@ -97,7 +99,7 @@ describe("category", function () { }); it("fills month gaps as needed", () => { - jest.spyOn(MonthManager.prototype, "_fillMonthGaps"); + vi.spyOn(MonthManager.prototype, "_fillMonthGaps"); const mm = new MonthManager(); @@ -107,7 +109,7 @@ describe("category", function () { }); it("links months properly", () => { - const spy = jest.spyOn(MonthManager.prototype, "_linkMonths"); + const spy = vi.spyOn(MonthManager.prototype, "_linkMonths"); const mm = new MonthManager([ new Month("2016-05-01"), @@ -237,7 +239,7 @@ describe("category", function () { new Month("2016-06-01"), ]); - const spy = jest.spyOn(mm, "_linkMonths"); + const spy = vi.spyOn(mm, "_linkMonths"); mm.getMonth(new Date("2016-09-02")); @@ -252,7 +254,7 @@ describe("category", function () { const mo = new Month("2016-06-01"), mm = new MonthManager([new Month("2016-05-01"), mo]); - jest.spyOn(mm, "_propagateRollingFromMonth"); + vi.spyOn(mm, "_propagateRollingFromMonth"); mm.getMonth(new Date("2016-09-02")); @@ -286,7 +288,7 @@ describe("category", function () { new Month("2016-06-01"), ]); - const spy = jest.spyOn(mm, "_linkMonths"); + const spy = vi.spyOn(mm, "_linkMonths"); mm.getMonth(new Date("2016-03-02")); @@ -300,7 +302,7 @@ describe("category", function () { const mo = new Month("2016-06-01"), mm = new MonthManager([new Month("2016-05-01"), mo]); - jest.spyOn(mm, "_propagateRollingFromMonth"); + vi.spyOn(mm, "_propagateRollingFromMonth"); mm.getMonth(new Date("2016-09-02")); @@ -311,7 +313,7 @@ describe("category", function () { it("gets a past month", () => { const mm = new MonthManager([new Month("2016-05-01")]); - jest.spyOn(mm, "_linkMonths"); + vi.spyOn(mm, "_linkMonths"); expect(mm.getMonth(new Date("2016-02-02"))).toBe(mm.months[0]); expect(mm.months.map((m) => m.date)).toEqual([ @@ -323,9 +325,6 @@ describe("category", function () { expect(mm._linkMonths).toHaveBeenCalledWith(mm.months[0], mm.months[1]); }); - - // describe('addMonthCategory', () => { - // }); }); }); }); diff --git a/src/scripts/services/Settings.spec.js b/src/scripts/services/Settings.spec.js index 236897d..b0206dc 100644 --- a/src/scripts/services/Settings.spec.js +++ b/src/scripts/services/Settings.spec.js @@ -54,7 +54,7 @@ describe("Settings", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let sets = new Settings({ hints: { diff --git a/src/scripts/services/Transaction.spec.js b/src/scripts/services/Transaction.spec.js index af009c0..75c6a2b 100644 --- a/src/scripts/services/Transaction.spec.js +++ b/src/scripts/services/Transaction.spec.js @@ -175,7 +175,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const tran = new Transaction(); @@ -218,7 +218,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); const tran = new Transaction(); @@ -237,7 +237,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction({ _id: "foo", @@ -266,7 +266,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribeValueChange(foo.change); @@ -291,7 +291,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribeValueChange(foo.change); @@ -320,7 +320,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = true; @@ -339,7 +339,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = true; @@ -356,7 +356,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = false; @@ -373,7 +373,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = false; @@ -393,8 +393,8 @@ describe("transaction", function () { change2: () => {}, }; - jest.spyOn(foo, "change1"); - jest.spyOn(foo, "change2"); + vi.spyOn(foo, "change1"); + vi.spyOn(foo, "change2"); let tran = new Transaction(); tran.cleared = true; @@ -416,7 +416,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = true; @@ -450,7 +450,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = false; @@ -469,7 +469,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = true; @@ -486,7 +486,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = false; @@ -503,7 +503,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = true; @@ -523,8 +523,8 @@ describe("transaction", function () { change2: () => {}, }; - jest.spyOn(foo, "change1"); - jest.spyOn(foo, "change2"); + vi.spyOn(foo, "change1"); + vi.spyOn(foo, "change2"); let tran = new Transaction(); tran.cleared = false; @@ -546,7 +546,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.cleared = false; @@ -580,7 +580,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -600,7 +600,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -620,7 +620,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -640,7 +640,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -664,7 +664,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -685,7 +685,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -707,7 +707,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -729,7 +729,7 @@ describe("transaction", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let tran = new Transaction(); tran.subscribe(foo.change); @@ -831,7 +831,7 @@ describe("transaction", function () { const split = new SplitTransaction(trans); const split1id = split.id; - jest.spyOn(split, "_emitValueChange"); + vi.spyOn(split, "_emitValueChange"); const split1dupe = new SplitTransaction(trans, { id: split1id, diff --git a/src/scripts/services/budgetManager.spec.js b/src/scripts/services/budgetManager.spec.js index c25c830..c606325 100644 --- a/src/scripts/services/budgetManager.spec.js +++ b/src/scripts/services/budgetManager.spec.js @@ -1,3 +1,5 @@ +/* eslint-disable vitest/no-commented-out-tests */ + describe("budgetManager", function () { let db, budgetManager, month, account, Month, Account; diff --git a/src/scripts/services/db.spec.js b/src/scripts/services/db.spec.js index 99e83b5..c4e751a 100644 --- a/src/scripts/services/db.spec.js +++ b/src/scripts/services/db.spec.js @@ -1,76 +1,74 @@ -// import PouchDB from 'PouchDB'; -// PouchDB.plugin(require('pouchdb-adapter-memory')); - describe("db", function () { - // jest complains on empty spec file - test("mocks", () => { - expect(true).toBe(true); - }); -}); -// let db, Budget; - -// beforeEach(angular.mock.module('financier', dbProvider => { -// dbProvider.adapter = 'memory'; - -// })); - -// beforeEach(inject((_db_, _Budget_) => { -// db = _db_; -// Budget = _Budget_; -// })); - -// it('should return an object', () => { -// expect(typeof db).toBe('object'); -// }); - -// describe('budgets', () => { -// it('should return an object', () => { -// expect(typeof db.budgets).toBe('object'); -// }); - -// it('all() should return empty array', done => { -// db.budgets.all().then(res => { -// expect(Array.isArray(res)).toBe(true); + let db, Budget; -// expect(res.length).toBe(0); + beforeEach( + angular.mock.module("financier", (dbProvider) => { + dbProvider.adapter = "memory"; + }), + ); -// done(); -// }); -// }); + beforeEach(inject((_db_, _Budget_) => { + db = _db_; + Budget = _Budget_; + })); -// it('all() should return budgets', done => { -// db._pouch.bulkDocs([{ -// _id: 'budget_1234' -// }, { -// _id: 'budget_2345' -// }]).then(res => { -// db.budgets.all().then(res => { - -// expect(res[0].constructor.name).toBe('Budget'); -// expect(res[0]._id).toBe('budget_1234'); -// expect(res[1]._id).toBe('budget_2345'); - -// done(); -// }); -// }); -// }); - -// it('put() should add budget', done => { -// const b = new Budget(); - -// db.budgets.put(b).then(() => { -// db._pouch.allDocs({ -// include_docs: true, -// startkey: 'budget_', -// endkey: 'budget_\uffff' -// }).then(res => { -// expect(res.rows[0].id).toBe(b._id); -// expect(angular.equals(res.rows[0], b.toJSON())); - -// done(); -// }); -// }); -// }); -// }); + it("should return an object", () => { + expect(typeof db).toBe("object"); + }); -// }); + describe("budgets", () => { + it("should return an object", () => { + expect(typeof db.budgets).toBe("object"); + }); + + it("all() should return empty array", (done) => { + db.budgets.all().then((res) => { + expect(Array.isArray(res)).toBe(true); + + expect(res.length).toBe(0); + + done(); + }); + }); + + it("all() should return budgets", (done) => { + db._pouch + .bulkDocs([ + { + _id: "budget_1234", + }, + { + _id: "budget_2345", + }, + ]) + .then(() => { + db.budgets.all().then((res) => { + expect(res[0].constructor.name).toBe("Budget"); + expect(res[0]._id).toBe("budget_1234"); + expect(res[1]._id).toBe("budget_2345"); + + done(); + }); + }); + }); + + it("put() should add budget", (done) => { + const b = new Budget(); + + db.budgets.put(b).then(() => { + db._pouch + .allDocs({ + include_docs: true, + startkey: "budget_", + endkey: "budget_\uffff", + }) + .then((res) => { + expect(res.rows[0].id).toBe(b._id); + expect(angular.equals(res.rows[0], b.toJSON())); + + done(); + }); + }); + }); + }); +}); diff --git a/src/scripts/services/masterCategory.spec.js b/src/scripts/services/masterCategory.spec.js index 71e2e55..d51853c 100644 --- a/src/scripts/services/masterCategory.spec.js +++ b/src/scripts/services/masterCategory.spec.js @@ -140,7 +140,7 @@ describe("masterCategory", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let cat = new MasterCategory({ name: "My catount", diff --git a/src/scripts/services/payee.spec.js b/src/scripts/services/payee.spec.js index 281f084..6f4c060 100644 --- a/src/scripts/services/payee.spec.js +++ b/src/scripts/services/payee.spec.js @@ -1,3 +1,5 @@ +import { expect, describe, beforeEach } from "vitest"; + describe("payee", function () { let payeeService, Payee, Transaction; @@ -113,7 +115,7 @@ describe("payee", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let payee = new Payee(); @@ -160,7 +162,7 @@ describe("payee", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let payee = new Payee({ name: "My payee", @@ -180,7 +182,7 @@ describe("payee", function () { change: () => {}, }; - jest.spyOn(foo, "change"); + vi.spyOn(foo, "change"); let payee = new Payee({ autosuggest: true, diff --git a/testEnv.js b/testEnv.js new file mode 100644 index 0000000..3126a51 --- /dev/null +++ b/testEnv.js @@ -0,0 +1,5 @@ +window.jasmine = true; +window.VERSION = {}; +window.process = { + env: {}, +}; diff --git a/testSetup.js b/testSetup.js new file mode 100644 index 0000000..e6a6248 --- /dev/null +++ b/testSetup.js @@ -0,0 +1,11 @@ +import "./testEnv.js"; + +import "angular"; +import "vitest-angular-mocks/test/angular-mocks.js"; + +import PouchDB from "pouchdb-browser"; +import memory from "pouchdb-adapter-memory"; + +PouchDB.plugin(memory); + +import "./src/scripts/app.js"; diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000..fbd5c89 --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,10 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + assetsInclude: ["**/*.html"], + test: { + environment: "jsdom", + setupFiles: ["./testSetup.js"], + globals: true, + }, +}); diff --git a/webpack.config.js b/webpack.config.js index c94f9a2..5f94184 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,7 +1,13 @@ -const HtmlWebpackPlugin = require("html-webpack-plugin"); -const { InjectManifest } = require("workbox-webpack-plugin"); -const pJson = require("./package.json"); -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +import HtmlWebpackPlugin from "html-webpack-plugin"; +import { InjectManifest } from "workbox-webpack-plugin"; +import pJson from "./package.json" with { type: "json" }; +import MiniCssExtractPlugin from "mini-css-extract-plugin"; + +import webpack from "webpack"; +import CssMinimizerPlugin from "css-minimizer-webpack-plugin"; +import CopyPlugin from "copy-webpack-plugin"; +import path from "path"; +import { fileURLToPath } from "url"; /** * Env @@ -9,19 +15,15 @@ const MiniCssExtractPlugin = require("mini-css-extract-plugin"); */ const ENV = process.env.npm_lifecycle_event; const isProd = ENV === "build"; -const webpack = require("webpack"); -const CssMinimizerPlugin = require("css-minimizer-webpack-plugin"); -const CopyPlugin = require("copy-webpack-plugin"); -module.exports = { +export default { mode: isProd ? "production" : "development", entry: { app: "./src/scripts/app.js", }, output: { - // Absolute output directory - path: __dirname + "/dist", + path: path.resolve(fileURLToPath(import.meta.url), "../dist"), // Output path from the view of the page // Uses webpack-dev-server in development @@ -103,25 +105,6 @@ module.exports = { }, ], }, - - resolve: { - modules: ["node_modules"], - // directories where to look for modules - - extensions: [".webpack.js", ".web.js", ".js", ".html"], - // extensions that are used - }, - - performance: { - hints: "warning", // enum - maxAssetSize: 20000000, // int (in bytes), - maxEntrypointSize: 40000000, // int (in bytes) - assetFilter: (assetFilename) => { - // Function predicate that provides asset filenames - return assetFilename.endsWith(".css") || assetFilename.endsWith(".js"); - }, - }, - devtool: (function () { if (isProd) { return "source-map"; @@ -131,8 +114,7 @@ module.exports = { })(), // enum // enhance debugging by adding meta info for the browser devtools // source-map most detailed at the expense of build speed. - - context: __dirname, // string (absolute path!) + context: path.resolve(fileURLToPath(import.meta.url), "../"), // string (absolute path!) // the home directory for webpack // the entry and module.rules.loader option // is resolved relative to this directory