diff --git a/.gitignore b/.gitignore index b97d7ba2f..37c322c80 100644 --- a/.gitignore +++ b/.gitignore @@ -55,5 +55,4 @@ node_modules stats.html /coverage /playwright-report/ -.histoire diff --git a/env.d.ts b/env.d.ts index f284c30a9..5cdc6906b 100644 --- a/env.d.ts +++ b/env.d.ts @@ -1,5 +1,3 @@ -/// - /// interface ImportMetaEnv { diff --git a/histoire.config.ts b/histoire.config.ts deleted file mode 100644 index 8cd1c1719..000000000 --- a/histoire.config.ts +++ /dev/null @@ -1,52 +0,0 @@ -/// - -import { defineConfig } from "histoire"; -import { HstVue } from "@histoire/plugin-vue"; -import path from "path"; - -export default defineConfig({ - plugins: [HstVue()], - setupFile: path.resolve(__dirname, "./src/histoire.setup.ts"), - viteNodeInlineDeps: [/date-fns/], - // viteIgnorePlugins: ['vite-plugin-pwa', 'vite-plugin-pwa:build', 'vite-plugin-pwa:info'], - tree: { - groups: [ - { - title: "Actors", - include: (file) => /^src\/components\/Account/.test(file.path), - }, - { - title: "Address", - include: (file) => /^src\/components\/Address/.test(file.path), - }, - { - title: "Comments", - include: (file) => /^src\/components\/Comment/.test(file.path), - }, - { - title: "Discussion", - include: (file) => /^src\/components\/Discussion/.test(file.path), - }, - { - title: "Events", - include: (file) => /^src\/components\/Event/.test(file.path), - }, - { - title: "Groups", - include: (file) => /^src\/components\/Group/.test(file.path), - }, - { - title: "Home", - include: (file) => /^src\/components\/Home/.test(file.path), - }, - { - title: "Posts", - include: (file) => /^src\/components\/Post/.test(file.path), - }, - { - title: "Others", - include: () => true, - }, - ], - }, -}); diff --git a/package-lock.json b/package-lock.json index 0b219ec26..88a47c85e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -90,7 +90,6 @@ }, "devDependencies": { "@eslint/js": "^9.38.0", - "@histoire/plugin-vue": "^0.17.1", "@playwright/test": "^1.25.1", "@rushstack/eslint-patch": "^1.1.4", "@tailwindcss/forms": "^0.5.2", @@ -103,9 +102,9 @@ "@types/ngeohash": "^0.6.2", "@types/phoenix": "^1.5.2", "@types/sanitize-html": "^2.5.0", - "@vitejs/plugin-vue": "^5.0.0", - "@vitest/coverage-v8": "^1.2.2", - "@vitest/ui": "^1.2.2", + "@vitejs/plugin-vue": "^6.0.1", + "@vitest/coverage-v8": "^4.0.2", + "@vitest/ui": "^4.0.2", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/test-utils": "^2.0.2", @@ -116,32 +115,21 @@ "eslint-plugin-vue": "^10.5.1", "flush-promises": "^1.0.2", "globals": "^16.4.0", - "histoire": "^0.17.0", "husky": "^9.0.10", "jsdom": "^24.0.0", - "lint-staged": "^15.1.0", + "lint-staged": "^16.2.6", "mock-apollo-client": "^1.1.0", "prettier": "^3.0.0", "prettier-eslint": "^16.1.2", - "rollup-plugin-visualizer": "^5.7.1", + "rollup-plugin-visualizer": "^6.0.5", "sass": "^1.34.1", "typescript": "^5.9.3", "typescript-eslint": "^8.46.2", - "vite": "^5.0.12", - "vite-plugin-pwa": "^0.19.0", - "vitest": "^1.2.2", + "vite": "^7.1.12", + "vite-plugin-pwa": "^1.1.0", + "vitest": "^4.0.2", "vue-i18n-extract": "^2.0.4", - "vue-router-mock": "^1.0.0" - } - }, - "node_modules/@akryum/tinypool": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@akryum/tinypool/-/tinypool-0.3.1.tgz", - "integrity": "sha512-nznEC1ZA/m3hQDEnrGQ4c5gkaa9pcaVnw4LFJyzBAaR7E3nfiAPEHS3otnSafpZouVnoKeITl5D+2LsnwlnK8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" + "vue-router-mock": "^2.0.0" } }, "node_modules/@alloc/quick-lru": { @@ -156,20 +144,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@apollo/client": { "version": "3.14.0", "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.14.0.tgz", @@ -242,9 +216,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.4.tgz", - "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, "license": "MIT", "engines": { @@ -252,21 +226,21 @@ } }, "node_modules/@babel/core": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", - "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", - "@babel/parser": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.28.4", - "@babel/types": "^7.28.4", + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", @@ -306,14 +280,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.3.tgz", - "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.28.3", - "@babel/types": "^7.28.2", + "@babel/parser": "^7.28.5", + "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -373,18 +347,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.3.tgz", - "integrity": "sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz", + "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.27.1", + "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.3", + "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "engines": { @@ -405,14 +379,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", - "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "regexpu-core": "^6.2.0", + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", "semver": "^6.3.1" }, "engines": { @@ -460,14 +434,14 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz", - "integrity": "sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -588,9 +562,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -636,12 +610,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", - "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.4" + "@babel/types": "^7.28.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -651,14 +625,14 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz", - "integrity": "sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -865,9 +839,9 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.4.tgz", - "integrity": "sha512-1yxmvN0MJHOhPVmAsmoW5liWwoILobu/d/ShymZmj867bAdxGbehIrew1DuLpw2Ukv+qDSSPQdYW1dLNE7t11A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "dev": true, "license": "MIT", "dependencies": { @@ -953,14 +927,14 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz", - "integrity": "sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.0" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1053,9 +1027,9 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz", - "integrity": "sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "dev": true, "license": "MIT", "dependencies": { @@ -1152,9 +1126,9 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz", - "integrity": "sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", "dev": true, "license": "MIT", "dependencies": { @@ -1218,16 +1192,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz", - "integrity": "sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-module-transforms": "^7.28.3", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1372,9 +1346,9 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz", - "integrity": "sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1653,17 +1627,17 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.28.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.3.tgz", - "integrity": "sha512-ROiDcM+GbYVPYBOeCR6uBXKkQpBExLl8k9HO1ygXEyds39j+vCCsjmj7S8GOniZQlEs81QlkdJZe76IpLSiqpg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz", + "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.0", + "@babel/compat-data": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", @@ -1676,42 +1650,42 @@ "@babel/plugin-transform-async-generator-functions": "^7.28.0", "@babel/plugin-transform-async-to-generator": "^7.27.1", "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.0", + "@babel/plugin-transform-block-scoping": "^7.28.5", "@babel/plugin-transform-class-properties": "^7.27.1", "@babel/plugin-transform-class-static-block": "^7.28.3", - "@babel/plugin-transform-classes": "^7.28.3", + "@babel/plugin-transform-classes": "^7.28.4", "@babel/plugin-transform-computed-properties": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.28.0", + "@babel/plugin-transform-destructuring": "^7.28.5", "@babel/plugin-transform-dotall-regex": "^7.27.1", "@babel/plugin-transform-duplicate-keys": "^7.27.1", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-dynamic-import": "^7.27.1", "@babel/plugin-transform-explicit-resource-management": "^7.28.0", - "@babel/plugin-transform-exponentiation-operator": "^7.27.1", + "@babel/plugin-transform-exponentiation-operator": "^7.28.5", "@babel/plugin-transform-export-namespace-from": "^7.27.1", "@babel/plugin-transform-for-of": "^7.27.1", "@babel/plugin-transform-function-name": "^7.27.1", "@babel/plugin-transform-json-strings": "^7.27.1", "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.5", "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-modules-systemjs": "^7.27.1", + "@babel/plugin-transform-modules-systemjs": "^7.28.5", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", "@babel/plugin-transform-new-target": "^7.27.1", "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1", "@babel/plugin-transform-numeric-separator": "^7.27.1", - "@babel/plugin-transform-object-rest-spread": "^7.28.0", + "@babel/plugin-transform-object-rest-spread": "^7.28.4", "@babel/plugin-transform-object-super": "^7.27.1", "@babel/plugin-transform-optional-catch-binding": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.28.5", "@babel/plugin-transform-parameters": "^7.27.7", "@babel/plugin-transform-private-methods": "^7.27.1", "@babel/plugin-transform-private-property-in-object": "^7.27.1", "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.3", + "@babel/plugin-transform-regenerator": "^7.28.4", "@babel/plugin-transform-regexp-modifiers": "^7.27.1", "@babel/plugin-transform-reserved-words": "^7.27.1", "@babel/plugin-transform-shorthand-properties": "^7.27.1", @@ -1787,18 +1761,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", - "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.28.3", + "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.28.4", + "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", - "@babel/types": "^7.28.4", + "@babel/types": "^7.28.5", "debug": "^4.3.1" }, "engines": { @@ -1806,110 +1780,26 @@ } }, "node_modules/@babel/types": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", - "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.27.1" + "@babel/helper-validator-identifier": "^7.28.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@codemirror/commands": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.9.0.tgz", - "integrity": "sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", "dev": true, "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", - "@codemirror/view": "^6.27.0", - "@lezer/common": "^1.1.0" - } - }, - "node_modules/@codemirror/lang-json": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz", - "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@lezer/json": "^1.0.0" - } - }, - "node_modules/@codemirror/language": { - "version": "6.11.3", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.11.3.tgz", - "integrity": "sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.23.0", - "@lezer/common": "^1.1.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0", - "style-mod": "^4.0.0" - } - }, - "node_modules/@codemirror/lint": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.0.tgz", - "integrity": "sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.35.0", - "crelt": "^1.0.5" - } - }, - "node_modules/@codemirror/state": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.2.tgz", - "integrity": "sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@marijn/find-cluster-break": "^1.0.0" - } - }, - "node_modules/@codemirror/theme-one-dark": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz", - "integrity": "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.0.0", - "@codemirror/view": "^6.0.0", - "@lezer/highlight": "^1.0.0" - } - }, - "node_modules/@codemirror/view": { - "version": "6.38.6", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.38.6.tgz", - "integrity": "sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/state": "^6.5.0", - "crelt": "^1.0.6", - "style-mod": "^4.1.0", - "w3c-keyname": "^2.2.4" + "engines": { + "node": ">=18" } }, "node_modules/@csstools/color-helpers": { @@ -2028,9 +1918,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", "cpu": [ "ppc64" ], @@ -2041,13 +1931,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", "cpu": [ "arm" ], @@ -2058,13 +1948,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", "cpu": [ "arm64" ], @@ -2075,13 +1965,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", "cpu": [ "x64" ], @@ -2092,13 +1982,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", "cpu": [ "arm64" ], @@ -2109,13 +1999,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", "cpu": [ "x64" ], @@ -2126,13 +2016,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", "cpu": [ "arm64" ], @@ -2143,13 +2033,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", "cpu": [ "x64" ], @@ -2160,13 +2050,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", "cpu": [ "arm" ], @@ -2177,13 +2067,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", "cpu": [ "arm64" ], @@ -2194,13 +2084,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", "cpu": [ "ia32" ], @@ -2211,13 +2101,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", "cpu": [ "loong64" ], @@ -2228,13 +2118,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", "cpu": [ "mips64el" ], @@ -2245,13 +2135,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", "cpu": [ "ppc64" ], @@ -2262,13 +2152,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", "cpu": [ "riscv64" ], @@ -2279,13 +2169,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", "cpu": [ "s390x" ], @@ -2296,13 +2186,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", "cpu": [ "x64" ], @@ -2313,13 +2203,30 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", "cpu": [ "x64" ], @@ -2330,13 +2237,30 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", "cpu": [ "x64" ], @@ -2347,13 +2271,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", "cpu": [ "x64" ], @@ -2364,13 +2305,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", "cpu": [ "arm64" ], @@ -2381,13 +2322,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", "cpu": [ "ia32" ], @@ -2398,13 +2339,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", "cpu": [ "x64" ], @@ -2415,7 +2356,7 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { @@ -2713,84 +2654,6 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@histoire/app": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@histoire/app/-/app-0.17.17.tgz", - "integrity": "sha512-2i1V38o08V+eaR0d3L0/EA6AYG14xyQBJbyYv0Hz3r4sH3Elj1FoJiwolbCfTDmkOnSgwWTc7+JoCqkLIbxfhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@histoire/controls": "^0.17.17", - "@histoire/shared": "^0.17.17", - "@histoire/vendors": "^0.17.17", - "@types/flexsearch": "^0.7.6", - "flexsearch": "0.7.21", - "shiki-es": "^0.2.0" - } - }, - "node_modules/@histoire/controls": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@histoire/controls/-/controls-0.17.17.tgz", - "integrity": "sha512-W22HZ/X078IZmE09XEKj4Fq7LxQPP/w/aMYAzm94V2NIGhI0fkiSaBDvyTUl7NYrGT66Wq5+9Po1IWPMllk3cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@codemirror/commands": "^6.3.0", - "@codemirror/lang-json": "^6.0.1", - "@codemirror/language": "^6.9.2", - "@codemirror/lint": "^6.4.2", - "@codemirror/state": "^6.3.1", - "@codemirror/theme-one-dark": "^6.1.2", - "@codemirror/view": "^6.22.0", - "@histoire/shared": "^0.17.17", - "@histoire/vendors": "^0.17.17" - } - }, - "node_modules/@histoire/plugin-vue": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@histoire/plugin-vue/-/plugin-vue-0.17.17.tgz", - "integrity": "sha512-O5h/Ww6IT2CygVVT4onN27IZt11Z2qE8XeHeXJCEese3dxnnVWRhjMpsaWAU5XqgfjKNAiALJk86b49/6NQaRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@histoire/controls": "^0.17.17", - "@histoire/shared": "^0.17.17", - "@histoire/vendors": "^0.17.17", - "change-case": "^4.1.2", - "globby": "^13.2.2", - "launch-editor": "^2.6.1", - "pathe": "^1.1.1" - }, - "peerDependencies": { - "histoire": "^0.17.17", - "vue": "^3.2.47" - } - }, - "node_modules/@histoire/shared": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@histoire/shared/-/shared-0.17.17.tgz", - "integrity": "sha512-ueGtURysonT0MujCObPCR57+mgZluMEXCrbc2FBgKAD/DoAt38tNwSGsmLldk2O6nTr7lr6ClbVSgWrLwgY6Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@histoire/vendors": "^0.17.17", - "@types/fs-extra": "^9.0.13", - "@types/markdown-it": "^12.2.3", - "chokidar": "^3.5.3", - "pathe": "^1.1.1", - "picocolors": "^1.0.0" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/@histoire/vendors": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/@histoire/vendors/-/vendors-0.17.17.tgz", - "integrity": "sha512-QZvmffdoJlLuYftPIkOU5Q2FPAdG2JjMuQ5jF7NmEl0n1XnmbMqtRkdYTZ4eF6CO1KLZ0Zyf6gBQvoT1uWNcjA==", - "dev": true, - "license": "MIT" - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2952,16 +2815,6 @@ "node": ">=12" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3108,52 +2961,6 @@ "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==", "license": "MIT" }, - "node_modules/@lezer/common": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.3.0.tgz", - "integrity": "sha512-L9X8uHCYU310o99L3/MpJKYxPzXPOS7S0NmBaM7UO/x2Kb2WbmMLSkfvdr1KxRIFYOpbY0Jhn7CfLSUDzL8arQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@lezer/highlight": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.2.tgz", - "integrity": "sha512-z8TQwaBXXQIvG6i2g3e9cgMwUUXu9Ib7jo2qRRggdhwKpM56Dw3PM3wmexn+EGaaOZ7az0K7sjc3/gcGW7sz7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.3.0" - } - }, - "node_modules/@lezer/json": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz", - "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.2.0", - "@lezer/highlight": "^1.0.0", - "@lezer/lr": "^1.0.0" - } - }, - "node_modules/@lezer/lr": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.2.tgz", - "integrity": "sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@lezer/common": "^1.0.0" - } - }, - "node_modules/@marijn/find-cluster-break": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz", - "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==", - "dev": true, - "license": "MIT" - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -3583,6 +3390,13 @@ "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", "license": "MIT" }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.29", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.29.tgz", + "integrity": "sha512-NIJgOsMjbxAXvoGq/X0gD7VPMQ8j9g0BiDaNjVNVjvl+iKXxL3Jre0v31RmBYeLEmkbj2s02v8vFTbUXi5XS2Q==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/plugin-node-resolve": { "version": "15.3.1", "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", @@ -3997,86 +3811,86 @@ "license": "MIT" }, "node_modules/@sentry-internal/browser-utils": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.21.0.tgz", - "integrity": "sha512-QRHpCBheLd/88Z2m3ABMriV0MweW+pcGKuVsH61/UdziKcQLdoQpOSvGg0/0CuqFm2UjL7237ZzLdZrWaCOlfQ==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.22.0.tgz", + "integrity": "sha512-BpJoLZEyJr7ORzkCrIjxRTnFWwO1mJNICVh3B9g5d9245niGT4OJvRozmLz89WgJkZFHWu84ls6Xfq5b/3tGFQ==", "license": "MIT", "dependencies": { - "@sentry/core": "10.21.0" + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/browser-utils/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.21.0.tgz", - "integrity": "sha512-6SnRR2FiW6TMwCE0PqbueHkkpeVnjOjz00R+/mX25Dp1U5BU5TzbXHzn9Y4wKnaD3Rzz4+nnzVkpHAOL3SppGw==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.22.0.tgz", + "integrity": "sha512-zXySOin/gGHPV+yKaHqjN9YZ7psEJwzLn8PzCLeo+4REzF1eQwbYZIgOxJFD32z8s3nZiABSWFM/n1CvVfMEsQ==", "license": "MIT", "dependencies": { - "@sentry/core": "10.21.0" + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/feedback/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.21.0.tgz", - "integrity": "sha512-5tfiKZJzZf9+Xk8SyvoC4ZEVLNmjBZZEaKhVyNo53CLWUWfWOqDc3DB9fj85i/yHFQ0ImdRnaPBc0CIeN00CcA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.22.0.tgz", + "integrity": "sha512-JNE4kHAQSG4/V+J+Zog3vKBWgOe9H33ol/MEU1RuLM/4I+uLf4mTetwnS9ilpnnW/Z/gQYfA+R3CiMrZtqTivw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.21.0", - "@sentry/core": "10.21.0" + "@sentry-internal/browser-utils": "10.22.0", + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.21.0.tgz", - "integrity": "sha512-TOLo5mAjJSOuJId8Po44d1hwJ5bIZDtRSoupWpYWqLw1tuUh1tc4vqID11ZXsw9pBzjVIK653BPDX/z/9+Um+Q==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.22.0.tgz", + "integrity": "sha512-DE4JNUskJg+O+wFq42W5gAa/99aD5k7TfGOwABxvnzFv8vkKA7pqXwPbFFPzypdKIkln+df7RmbnDwQRNg6/lA==", "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.21.0", - "@sentry/core": "10.21.0" + "@sentry-internal/replay": "10.22.0", + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay-canvas/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@sentry-internal/replay/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" @@ -4097,25 +3911,25 @@ } }, "node_modules/@sentry/browser": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.21.0.tgz", - "integrity": "sha512-z/63bUFBQkTfJ5ElhWTYvomz+gZ1GsoH16v4/RGoPY5qZgYxcVO3fkp0opnu3gcbXS0ZW7TLRiHpqhvipDdP6g==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.22.0.tgz", + "integrity": "sha512-wD2XqN+yeBpQFfdPo6+wlKDMyyuDctVGzZWE4qTPntICKQuwMdAfeq5Ma89ad0Dw+bzG9UijGeyuJQlswF87Mw==", "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.21.0", - "@sentry-internal/feedback": "10.21.0", - "@sentry-internal/replay": "10.21.0", - "@sentry-internal/replay-canvas": "10.21.0", - "@sentry/core": "10.21.0" + "@sentry-internal/browser-utils": "10.22.0", + "@sentry-internal/feedback": "10.22.0", + "@sentry-internal/replay": "10.22.0", + "@sentry-internal/replay-canvas": "10.22.0", + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" } }, "node_modules/@sentry/browser/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" @@ -4168,13 +3982,13 @@ } }, "node_modules/@sentry/vue": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-10.21.0.tgz", - "integrity": "sha512-jOX9jOkC7gBcr+JG65zjLczHRGfxxzc9QxHShM3g3+YuXk5BxMcRveyq4ne1+tzmvwqG6OI0T7jt28J6fL2JDQ==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/vue/-/vue-10.22.0.tgz", + "integrity": "sha512-rzwGkFKqAFsH1GGsH83lo0GdZ29yXHOReJqFOzexbhX2j0mtKmFqSwAqKTDbPz/snIQIO5eKtXHTF6kpZ+CkiA==", "license": "MIT", "dependencies": { - "@sentry/browser": "10.21.0", - "@sentry/core": "10.21.0" + "@sentry/browser": "10.22.0", + "@sentry/core": "10.22.0" }, "engines": { "node": ">=18" @@ -4190,9 +4004,9 @@ } }, "node_modules/@sentry/vue/node_modules/@sentry/core": { - "version": "10.21.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.21.0.tgz", - "integrity": "sha512-/+gpOOb2Wr1UbW59WKqNAVVIqFz9FjtUJuPtVh4UanxGCfavMPaKpFzSlaEKJSKDkiCQgANP4O2y8Y5Bh3tvEA==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.22.0.tgz", + "integrity": "sha512-V1oeHbrOKzxadsCmgtPku3v3Emo/Bpb3VSuKmlLrQefiHX98MWtjJ3XDGfduzD5/dCdh0r/OOLwjcmrO/PZ2aw==", "license": "MIT", "engines": { "node": ">=18" @@ -4205,6 +4019,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "dev": true, + "license": "MIT" + }, "node_modules/@surma/rollup-plugin-off-main-thread": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", @@ -4660,16 +4481,24 @@ "vue": "^3.0.0" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -4677,23 +4506,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/flexsearch": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@types/flexsearch/-/flexsearch-0.7.6.tgz", - "integrity": "sha512-H5IXcRn96/gaDmo+rDl2aJuIJsob8dgOXDqf8K0t8rWZd1AFNaaspmRsElESiU+EWE33qfbFPgI0OC/B1g9FCA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/fs-extra": { - "version": "9.0.13", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.13.tgz", - "integrity": "sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/geojson": { "version": "7946.0.16", "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", @@ -4766,14 +4578,13 @@ "license": "MIT" }, "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", - "dev": true, + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "license": "MIT", "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "@types/linkify-it": "^5", + "@types/mdurl": "^2" } }, "node_modules/@types/mdurl": { @@ -4789,16 +4600,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/node": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.1.tgz", - "integrity": "sha512-QoiaXANRkSXK6p0Duvt56W208du4P9Uye9hWLWgGMDTEoKPhuenzNcC4vGUmrNkiOKTlIrBoyNQYNpSwfEZXSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, "node_modules/@types/phoenix": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/@types/phoenix/-/phoenix-1.6.6.tgz", @@ -5146,167 +4947,182 @@ } }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", - "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-6.0.1.tgz", + "integrity": "sha512-+MaE752hU0wfPFJEUAIxqw18+20euHHdxVtMvbFcOEpjEyfqXH/5DCoTHiVJ0J29EhTJdoTkjEv5YBKU9dnoTw==", "dev": true, "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "1.0.0-beta.29" + }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0", "vue": "^3.2.25" } }, "node_modules/@vitest/coverage-v8": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.6.1.tgz", - "integrity": "sha512-6YeRZwuO4oTGKxD3bijok756oktHSIm3eczVVzNe3scqzuhLwltIF3S9ZL/vwOVIpURmU6SnZhziXXAfw8/Qlw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.2.tgz", + "integrity": "sha512-daQs7CNoq4KKJ+3mgnxwbX8NLkT3nNxK/ZARdWyy/VtNwe0LoKIHgXFvj0hCKXclgfHaihpqbv1UHkQOgyEZng==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.1", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.4", + "@bcoe/v8-coverage": "^1.0.2", + "@vitest/utils": "4.0.2", + "ast-v8-to-istanbul": "^0.3.5", + "debug": "^4.4.3", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.4", - "istanbul-reports": "^3.1.6", - "magic-string": "^0.30.5", - "magicast": "^0.3.3", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "test-exclude": "^6.0.0" + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.2.0", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.6.1" + "@vitest/browser": "4.0.2", + "vitest": "4.0.2" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } } }, "node_modules/@vitest/expect": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz", - "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.2.tgz", + "integrity": "sha512-izQY+ABWqL2Vyr5+LNo3m16nLLTAzLn8em6i5uxqsrWRhdgzdN5JIHrpFVGBAYRGDAbtwE+yD4Heu8gsBSWTVQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "chai": "^4.3.10" + "@standard-schema/spec": "^1.0.0", + "@types/chai": "^5.2.2", + "@vitest/spy": "4.0.2", + "@vitest/utils": "4.0.2", + "chai": "^6.0.1", + "tinyrainbow": "^3.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.2.tgz", + "integrity": "sha512-oiny+oBSGU9vHMA1DPdO+t1GVidCRuA4lKSG6rbo5SrCiTCGl7bTCyTaUkwxDpUkiSxEVneeXW4LJ4fg3H56dw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "4.0.2", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.19" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.2.tgz", + "integrity": "sha512-PhrSiljryCz5nUDhHla5ihXYy2iRCBob+rNqlu34dA+KZIllVR39rUGny5R3kLgDgw3r8GW1ptOo64WbieMkeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz", - "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.2.tgz", + "integrity": "sha512-mPS5T/ZDuO6J5rsQiA76CFmlHtos7dnCvL14I1Oo8SbcjIhJd6kirFmekovfYLRygdF0gJe6SA5asCKIWKw1tw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "p-limit": "^5.0.0", - "pathe": "^1.1.1" + "@vitest/utils": "4.0.2", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", - "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.2.tgz", + "integrity": "sha512-NibujZAh+fTQlpGdP8J2pZcsPg7EPjiLUOUq9In++4p35vc9xIFMkXfQDbBSpijqZPe6i2hEKrUCbKu70/sPzw==", "dev": true, "license": "MIT", "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "4.0.2", + "magic-string": "^0.30.19", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz", - "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.2.tgz", + "integrity": "sha512-KrTWRXFPYrbhD0iUXeoA8BMXl81nvemj5D8sc7NbTlRvCeUWo36JheOWtAUCafcNi0G72ycAdsvWQVSOxy/3TA==", "dev": true, "license": "MIT", - "dependencies": { - "tinyspy": "^2.2.0" - }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/ui": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.6.1.tgz", - "integrity": "sha512-xa57bCPGuzEFqGjPs3vVLyqareG8DX0uMkr5U/v5vLv5/ZUrBrPL7gzxzTJedEyZxFMfsozwTIbbYfEQVo3kgg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.2.tgz", + "integrity": "sha512-GqPobLaUnKxkEJQHxszJ4yTSHCNGysWto6wANoBn/iXWU1juZV5pVjopxu+DkMKU+J6UQqvZ4ZXkcjxzRQS31A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.6.1", - "fast-glob": "^3.3.2", - "fflate": "^0.8.1", - "flatted": "^3.2.9", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "sirv": "^2.0.4" + "@vitest/utils": "4.0.2", + "fflate": "^0.8.2", + "flatted": "^3.3.3", + "pathe": "^2.0.3", + "sirv": "^3.0.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "1.6.1" + "vitest": "4.0.2" } }, "node_modules/@vitest/utils": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.1.tgz", - "integrity": "sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.2.tgz", + "integrity": "sha512-H9jFzZb/5B5Qh7ajPUWMJ8UYGxQ4EQTaNLSm3icXs/oXkzQ1jqfcWDEJ4U3LkFPZOd6QW8M2MYjz32poW+KKqg==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" + "@vitest/pretty-format": "4.0.2", + "tinyrainbow": "^3.0.3" }, "funding": { "url": "https://opencollective.com/vitest" @@ -5744,14 +5560,6 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "license": "BSD-2-Clause" }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/abbrev": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", @@ -5775,17 +5583,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-globals": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", - "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.1.0", - "acorn-walk": "^8.0.2" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -5796,19 +5593,6 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/acorn-walk": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", - "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/agent-base": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", @@ -6073,15 +5857,34 @@ } }, "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, "license": "MIT", "engines": { - "node": "*" + "node": ">=12" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz", + "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.31", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -6277,9 +6080,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.19", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.19.tgz", - "integrity": "sha512-zoKGUdu6vb2jd3YOq0nnhEDQVbPcHhco3UImJrv5dSkvxTc2pl2WjOPsjZXDwPDSl5eghIMuY3R6J9NDKF3KcQ==", + "version": "2.8.20", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.20.tgz", + "integrity": "sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.js" @@ -6303,16 +6106,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/birpc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.1.1.tgz", - "integrity": "sha512-B64AGL4ug2IS2jvV/zjTYDD1L+2gOJTT7Rv+VaK7KVQtQOo/xZbCDsh7g727ipckmU+QJYRqo5RcifVr0Kgcmg==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/blurhash": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", @@ -6454,17 +6247,6 @@ "node": ">=6" } }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -6494,35 +6276,14 @@ ], "license": "CC-BY-4.0" }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.0.tgz", + "integrity": "sha512-aUTnJc/JipRzJrNADXVvpVqi6CO0dn3nx4EVPxijri+fj3LUUDyZQOgVeW54Ob3Y1Xh9Iz8f+CgaCl8v0mn9bA==", "dev": true, "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/chalk": { @@ -6541,62 +6302,20 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" } }, "node_modules/ci-info": { @@ -6631,42 +6350,34 @@ } }, "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", + "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" + "slice-ansi": "^7.1.0", + "string-width": "^8.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "dev": true, - "license": "MIT" - }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", + "get-east-asian-width": "^1.3.0", "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -6825,13 +6536,6 @@ "dev": true, "license": "MIT" }, - "node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true, - "license": "MIT" - }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -6843,51 +6547,6 @@ "proto-list": "~1.2.1" } }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -6962,13 +6621,6 @@ "node": ">=4" } }, - "node_modules/cssom": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", - "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", - "dev": true, - "license": "MIT" - }, "node_modules/cssstyle": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz", @@ -7108,19 +6760,6 @@ "dev": true, "license": "MIT" }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -7182,13 +6821,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", - "dev": true, - "license": "MIT" - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -7213,29 +6845,12 @@ "node": ">=0.10" } }, - "node_modules/diacritics": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/diacritics/-/diacritics-1.3.0.tgz", - "integrity": "sha512-wlwEkqcsaxvPJML+rDh/2iS824jbREk6DUMUKkEaSlxdYHeS43cClJtsWglvw2RfeXGm6ohKDqsXteJ5sP5enA==", - "dev": true, - "license": "MIT" - }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "license": "Apache-2.0" }, - "node_modules/diff-sequences": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", - "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -7294,20 +6909,6 @@ ], "license": "BSD-2-Clause" }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "deprecated": "Use your platform's native DOMException instead", - "dev": true, - "license": "MIT", - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -7337,17 +6938,6 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/dot-object": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/dot-object/-/dot-object-2.1.5.tgz", @@ -7473,13 +7063,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, "node_modules/ejs": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", @@ -7497,9 +7080,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.239", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.239.tgz", - "integrity": "sha512-1y5w0Zsq39MSPmEjHjbizvhYoTaulVtivpxkp5q5kaPmQtsK6/2nvAzGRxNMS9DoYySp9PkW0MAQDwU1m764mg==", + "version": "1.5.240", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.240.tgz", + "integrity": "sha512-OBwbZjWgrCOH+g6uJsA2/7Twpas2OlepS9uvByJjR2datRDuKGYeD+nP8lBBks2qnB7bGJNHDUx7c/YLaT3QMQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -7508,16 +7091,6 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -7630,6 +7203,13 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -7690,9 +7270,9 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -7700,32 +7280,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "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" + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" } }, "node_modules/escalade": { @@ -7737,13 +7320,6 @@ "node": ">=6" } }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -7756,39 +7332,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint": { "version": "9.38.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", @@ -8131,19 +7674,6 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -8188,20 +7718,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/esquery": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", @@ -8265,41 +7781,14 @@ "dev": true, "license": "MIT" }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/expect-type": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.2.tgz", + "integrity": "sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==", "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, + "license": "Apache-2.0", "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" } }, "node_modules/fast-deep-equal": { @@ -8331,6 +7820,18 @@ "node": ">=8.6.0" } }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -8426,42 +7927,6 @@ "node": ">=8" } }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -8509,13 +7974,6 @@ "dev": true, "license": "ISC" }, - "node_modules/flexsearch": { - "version": "0.7.21", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz", - "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==", - "dev": true, - "license": "Apache-2.0" - }, "node_modules/floating-vue": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-5.2.2.tgz", @@ -8641,9 +8099,9 @@ "license": "ISC" }, "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -8737,16 +8195,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -8791,19 +8239,6 @@ "node": ">= 0.4" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", @@ -8843,15 +8278,15 @@ } }, "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">= 6" + "node": ">=10.13.0" } }, "node_modules/globals": { @@ -8885,25 +8320,36 @@ } }, "node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { + "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", "merge2": "^1.4.1", - "slash": "^4.0.0" + "slash": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -8953,46 +8399,6 @@ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, - "node_modules/gray-matter": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", - "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-yaml": "^3.13.1", - "kind-of": "^6.0.2", - "section-matter": "^1.0.0", - "strip-bom-string": "^1.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/gray-matter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/gray-matter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", @@ -9115,262 +8521,6 @@ "node": ">= 0.4" } }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/histoire": { - "version": "0.17.17", - "resolved": "https://registry.npmjs.org/histoire/-/histoire-0.17.17.tgz", - "integrity": "sha512-DAwY4sgIoP7NGE5ldaws2d3RWz4OOQcwhS8elRMiA2euqzLvDU2IXm+ZjeDDFVtGkvmQNQyfZBDKLCLHfRkSUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@akryum/tinypool": "^0.3.1", - "@histoire/app": "^0.17.17", - "@histoire/controls": "^0.17.17", - "@histoire/shared": "^0.17.17", - "@histoire/vendors": "^0.17.17", - "@types/flexsearch": "^0.7.6", - "@types/markdown-it": "^12.2.3", - "birpc": "^0.1.1", - "change-case": "^4.1.2", - "chokidar": "^3.5.3", - "connect": "^3.7.0", - "defu": "^6.1.3", - "diacritics": "^1.3.0", - "flexsearch": "0.7.21", - "fs-extra": "^10.1.0", - "globby": "^13.2.2", - "gray-matter": "^4.0.3", - "jiti": "^1.21.0", - "jsdom": "^20.0.3", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.6.7", - "markdown-it-attrs": "^4.1.6", - "markdown-it-emoji": "^2.0.2", - "micromatch": "^4.0.5", - "mrmime": "^1.0.1", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "sade": "^1.8.1", - "shiki-es": "^0.2.0", - "sirv": "^2.0.3", - "vite-node": "^0.34.6" - }, - "bin": { - "histoire": "bin.mjs" - }, - "peerDependencies": { - "vite": "^2.9.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" - } - }, - "node_modules/histoire/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/histoire/node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/histoire/node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true, - "license": "MIT" - }, - "node_modules/histoire/node_modules/data-urls": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", - "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/histoire/node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-encoding": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/histoire/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/histoire/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/histoire/node_modules/jsdom": { - "version": "20.0.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", - "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "abab": "^2.0.6", - "acorn": "^8.8.1", - "acorn-globals": "^7.0.0", - "cssom": "^0.5.0", - "cssstyle": "^2.3.0", - "data-urls": "^3.0.2", - "decimal.js": "^10.4.2", - "domexception": "^4.0.0", - "escodegen": "^2.0.0", - "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.2", - "parse5": "^7.1.1", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^11.0.0", - "ws": "^8.11.0", - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/histoire/node_modules/tr46": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", - "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/histoire/node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "xml-name-validator": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/histoire/node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/histoire/node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/histoire/node_modules/whatwg-url": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", - "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", @@ -9453,16 +8603,6 @@ "node": ">= 14" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", @@ -9768,16 +8908,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -9804,13 +8934,16 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10001,19 +9134,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", @@ -10472,16 +9592,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/klaw-sync": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", @@ -10491,17 +9601,6 @@ "graceful-fs": "^4.1.11" } }, - "node_modules/launch-editor": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.11.1.tgz", - "integrity": "sha512-SEET7oNfgSaB6Ym0jufAdCeo3meJVeCaaDyzRygy0xsp2BFKCprcfHljTq4QkzTLUxEKkFK6OK4811YM2oSrRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" - } - }, "node_modules/leaflet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", @@ -10566,13 +9665,12 @@ "license": "MIT" }, "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/linkifyjs": { @@ -10582,64 +9680,48 @@ "license": "MIT" }, "node_modules/lint-staged": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", - "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", + "version": "16.2.6", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.2.6.tgz", + "integrity": "sha512-s1gphtDbV4bmW1eylXpVMk2u7is7YsrLl8hzrtvC70h4ByhcMLZFY01Fx05ZUDNuv1H8HO4E+e2zgejV1jVwNw==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", - "lilconfig": "^3.1.3", - "listr2": "^8.2.5", + "commander": "^14.0.1", + "listr2": "^9.0.5", "micromatch": "^4.0.8", + "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", - "yaml": "^2.7.0" + "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=20.17" }, "funding": { "url": "https://opencollective.com/lint-staged" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/lint-staged/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.1.tgz", + "integrity": "sha512-2JkV3gUZUVrbNA+1sjBOYLsMZ5cEEl8GTFP2a4AVz5hvasAMCQ1D2l2le/cX+pV4N6ZU17zjUahLpIXRrnWL8A==", "dev": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/listr2": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.3.3.tgz", - "integrity": "sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", "dev": true, "license": "MIT", "dependencies": { - "cli-truncate": "^4.0.0", + "cli-truncate": "^5.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", "log-update": "^6.1.0", @@ -10647,7 +9729,7 @@ "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/listr2/node_modules/ansi-styles": { @@ -10706,23 +9788,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/local-pkg": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", - "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mlly": "^1.7.3", - "pkg-types": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -10806,39 +9871,6 @@ "dev": true, "license": "MIT" }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/log-update/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -10982,26 +10014,6 @@ "loose-envify": "cli.js" } }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -11009,9 +10021,9 @@ "license": "ISC" }, "node_modules/magic-string": { - "version": "0.30.19", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", - "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" @@ -11046,61 +10058,20 @@ } }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" - } - }, - "node_modules/markdown-it-anchor": { - "version": "8.6.7", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", - "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", - "dev": true, - "license": "Unlicense", - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" - } - }, - "node_modules/markdown-it-attrs": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/markdown-it-attrs/-/markdown-it-attrs-4.3.1.tgz", - "integrity": "sha512-/ko6cba+H6gdZ0DOw7BbNMZtfuJTRp9g/IrGIuz8lYc/EfnmWRpaR3CFPnNbVz0LDvF8Gf1hFGPqrQqq7De0rg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "markdown-it": ">= 9.0.0" - } - }, - "node_modules/markdown-it-emoji": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/markdown-it-emoji/-/markdown-it-emoji-2.0.2.tgz", - "integrity": "sha512-zLftSaNrKuYl0kR5zm4gxXjHaOI3FAOEaloKmRA5hijmJZvSjmxcokOLlzycb/HXlUFWzXqpIEoyEMCE4i9MvQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "license": "BSD-2-Clause", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/math-intrinsics": { @@ -11113,17 +10084,9 @@ } }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true, - "license": "MIT" - }, - "node_modules/merge-stream": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "license": "MIT" }, "node_modules/merge2": { @@ -11171,19 +10134,6 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-function": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", @@ -11240,26 +10190,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/mlly": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", - "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "acorn": "^8.15.0", - "pathe": "^2.0.3", - "pkg-types": "^1.3.1", - "ufo": "^1.6.1" - } - }, - "node_modules/mlly/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/mock-apollo-client": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/mock-apollo-client/-/mock-apollo-client-1.4.0.tgz", @@ -11270,20 +10200,10 @@ "@apollo/client": "^3.0.0" } }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", + "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", "dev": true, "license": "MIT", "engines": { @@ -11308,6 +10228,19 @@ "thenify-all": "^1.0.0" } }, + "node_modules/nano-spawn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.0.0.tgz", + "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" + } + }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -11342,17 +10275,6 @@ "node": ">=v0.2.0" } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, "node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", @@ -11401,35 +10323,6 @@ "node": ">=0.10.0" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -11564,19 +10457,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -11588,16 +10468,16 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11732,17 +10612,6 @@ "url": "https://github.com/sponsors/harlan-zw" } }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -11788,27 +10657,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/patch-package": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.1.tgz", @@ -11838,26 +10686,6 @@ "npm": ">5" } }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -11920,22 +10748,12 @@ } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, "license": "MIT" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/phoenix": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/phoenix/-/phoenix-1.8.1.tgz", @@ -11991,25 +10809,6 @@ "node": ">= 6" } }, - "node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" - } - }, - "node_modules/pkg-types/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, "node_modules/plausible-tracker": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/plausible-tracker/-/plausible-tracker-0.3.9.tgz", @@ -12051,21 +10850,6 @@ "node": ">=18" } }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, "node_modules/possible-typed-array-names": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", @@ -12661,19 +11445,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/prettier-eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, "node_modules/prettier-eslint/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -12690,27 +11461,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prettier-eslint/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/prettier-eslint/node_modules/minimatch": { "version": "9.0.3", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", @@ -12727,16 +11477,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/prettier-eslint/node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/prettier-eslint/node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -12968,54 +11708,6 @@ "prosemirror-model": "^1.25.0" } }, - "node_modules/prosemirror-markdown/node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/prosemirror-markdown/node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "license": "MIT", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/prosemirror-markdown/node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/prosemirror-markdown/node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "license": "MIT" - }, - "node_modules/prosemirror-markdown/node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, "node_modules/prosemirror-menu": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", @@ -13058,9 +11750,9 @@ } }, "node_modules/prosemirror-state": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", - "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.4.tgz", + "integrity": "sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==", "license": "MIT", "dependencies": { "prosemirror-model": "^1.0.0", @@ -13208,15 +11900,17 @@ } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/reflect.getprototypeof": { @@ -13432,22 +12126,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -13571,13 +12249,13 @@ } }, "node_modules/rollup-plugin-visualizer": { - "version": "5.14.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-5.14.0.tgz", - "integrity": "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/rollup-plugin-visualizer/-/rollup-plugin-visualizer-6.0.5.tgz", + "integrity": "sha512-9+HlNgKCVbJDs8tVtjQ43US12eqaiHyyiLMdBwQ7vSZPiHMysGNo2E88TAp1si5wx8NAoYriI2A5kuKfIakmJg==", "dev": true, "license": "MIT", "dependencies": { - "open": "^8.4.0", + "open": "^8.0.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" @@ -13589,7 +12267,7 @@ "node": ">=18" }, "peerDependencies": { - "rolldown": "1.x", + "rolldown": "1.x || ^1.0.0-beta", "rollup": "2.x || 3.x || 4.x" }, "peerDependenciesMeta": { @@ -13686,19 +12364,6 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "license": "0BSD" }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -13817,36 +12482,6 @@ "@parcel/watcher": "^2.4.1" } }, - "node_modules/sass/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/sass/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", @@ -13860,20 +12495,6 @@ "node": ">=v12.22.7" } }, - "node_modules/section-matter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", - "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "extend-shallow": "^2.0.1", - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/semver": { "version": "7.7.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", @@ -13886,18 +12507,6 @@ "node": ">=10" } }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -13977,27 +12586,6 @@ "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", - "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki-es": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/shiki-es/-/shiki-es-0.2.0.tgz", - "integrity": "sha512-RbRMD+IuJJseSZljDdne9ThrUYrwBwJR04FvN4VXpfsU3MNID5VJGHLAD5je/HGThCyEKNgH+nEkSFEWKD7C3Q==", - "deprecated": "Please migrate to https://github.com/antfu/shikiji", - "dev": true, - "license": "MIT" - }, "node_modules/side-channel": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", @@ -14094,9 +12682,9 @@ } }, "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", + "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", "dev": true, "license": "MIT", "dependencies": { @@ -14105,44 +12693,30 @@ "totalist": "^3.0.0" }, "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv/node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -14168,17 +12742,6 @@ "dev": true, "license": "MIT" }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, "node_modules/sortablejs": { "version": "1.14.0", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", @@ -14233,13 +12796,6 @@ "dev": true, "license": "MIT" }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, "node_modules/stackback": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", @@ -14247,16 +12803,6 @@ "dev": true, "license": "MIT" }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/std-env": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", @@ -14505,16 +13051,6 @@ "node": ">=4" } }, - "node_modules/strip-bom-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", - "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", @@ -14525,19 +13061,6 @@ "node": ">=10" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -14551,33 +13074,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-literal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz", - "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/style-mod": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz", - "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==", - "dev": true, - "license": "MIT" - }, "node_modules/sucrase": { "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", @@ -14702,16 +13198,40 @@ "node": ">=14.0.0" } }, - "node_modules/tailwindcss/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.3" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" } }, "node_modules/tailwindcss/node_modules/postcss-selector-parser": { @@ -14727,6 +13247,18 @@ "node": ">=4" } }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/temp-dir": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", @@ -14795,67 +13327,6 @@ "dev": true, "license": "MIT" }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -14900,20 +13371,65 @@ "dev": true, "license": "MIT" }, - "node_modules/tinypool": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", - "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/tinyspy": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", - "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tinyrainbow": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.0.3.tgz", + "integrity": "sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==", "dev": true, "license": "MIT", "engines": { @@ -15076,16 +13592,6 @@ "node": ">= 0.8.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", @@ -15216,17 +13722,9 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "license": "MIT" }, "node_modules/unbox-primitive": { @@ -15248,13 +13746,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, - "license": "MIT" - }, "node_modules/unfetch": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-5.0.0.tgz", @@ -15345,16 +13836,6 @@ "node": ">= 10.0.0" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -15396,26 +13877,6 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -15443,32 +13904,25 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/vite": { - "version": "5.4.21", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", - "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", + "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -15477,19 +13931,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -15510,45 +13970,27 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, - "node_modules/vite-node": { - "version": "0.34.7", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.7.tgz", - "integrity": "sha512-0Yzb96QzHmqIKIs/x2q/sqG750V/EF6yDkS2p1WjJc1W2bgRSuQjf5vB9HY8h2nVb5j4pO5paS5Npcv3s69YUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "mlly": "^1.4.0", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, "node_modules/vite-plugin-pwa": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.19.8.tgz", - "integrity": "sha512-e1oK0dfhzhDhY3VBuML6c0h8Xfx6EkOVYqolj7g+u8eRfdauZe5RLteCIA/c5gH0CBQ0CNFAuv/AFTx4Z7IXTw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-1.1.0.tgz", + "integrity": "sha512-VsSpdubPzXhHWVINcSx6uHRMpOHVHQcHsef1QgkOlEoaIDAlssFEW88LBq1a59BuokAhsh2kUDJbaX1bZv4Bjw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.3.4", - "fast-glob": "^3.3.2", + "debug": "^4.3.6", "pretty-bytes": "^6.1.1", - "workbox-build": "^7.0.0", - "workbox-window": "^7.0.0" + "tinyglobby": "^0.2.10", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" }, "engines": { "node": ">=16.0.0" @@ -15557,10 +13999,10 @@ "url": "https://github.com/sponsors/antfu" }, "peerDependencies": { - "@vite-pwa/assets-generator": "^0.2.4", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0", - "workbox-build": "^7.0.0", - "workbox-window": "^7.0.0" + "@vite-pwa/assets-generator": "^1.0.0", + "vite": "^3.1.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "workbox-build": "^7.3.0", + "workbox-window": "^7.3.0" }, "peerDependenciesMeta": { "@vite-pwa/assets-generator": { @@ -15568,48 +14010,97 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitest": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz", - "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.2.tgz", + "integrity": "sha512-SXrA2ZzOPulX479d8W13RqKSmvHb9Bfg71eW7Fbs6ZjUFcCCXyt/OzFCkNyiUE8mFlPHa4ZVUGw0ky+5ndKnrg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "1.6.1", - "@vitest/runner": "1.6.1", - "@vitest/snapshot": "1.6.1", - "@vitest/spy": "1.6.1", - "@vitest/utils": "1.6.1", - "acorn-walk": "^8.3.2", - "chai": "^4.3.10", - "debug": "^4.3.4", - "execa": "^8.0.1", - "local-pkg": "^0.5.0", - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.5.0", - "strip-literal": "^2.0.0", - "tinybench": "^2.5.1", - "tinypool": "^0.8.3", - "vite": "^5.0.0", - "vite-node": "1.6.1", - "why-is-node-running": "^2.2.2" + "@vitest/expect": "4.0.2", + "@vitest/mocker": "4.0.2", + "@vitest/pretty-format": "4.0.2", + "@vitest/runner": "4.0.2", + "@vitest/snapshot": "4.0.2", + "@vitest/spy": "4.0.2", + "@vitest/utils": "4.0.2", + "debug": "^4.4.3", + "es-module-lexer": "^1.7.0", + "expect-type": "^1.2.2", + "magic-string": "^0.30.19", + "pathe": "^2.0.3", + "picomatch": "^4.0.3", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.15", + "tinyrainbow": "^3.0.3", + "vite": "^6.0.0 || ^7.0.0", + "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^20.0.0 || ^22.0.0 || >=24.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "1.6.1", - "@vitest/ui": "1.6.1", + "@types/debug": "^4.1.12", + "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", + "@vitest/browser-playwright": "4.0.2", + "@vitest/browser-preview": "4.0.2", + "@vitest/browser-webdriverio": "4.0.2", + "@vitest/ui": "4.0.2", "happy-dom": "*", "jsdom": "*" }, @@ -15617,10 +14108,19 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, - "@vitest/browser": { + "@vitest/browser-playwright": { + "optional": true + }, + "@vitest/browser-preview": { + "optional": true + }, + "@vitest/browser-webdriverio": { "optional": true }, "@vitest/ui": { @@ -15634,27 +14134,17 @@ } } }, - "node_modules/vitest/node_modules/vite-node": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz", - "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==", + "node_modules/vitest/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.3.4", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "vite": "^5.0.0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": ">=12" }, "funding": { - "url": "https://opencollective.com/vitest" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/vue": { @@ -15843,9 +14333,9 @@ } }, "node_modules/vue-router-mock": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vue-router-mock/-/vue-router-mock-1.1.0.tgz", - "integrity": "sha512-RhKhxkiZh2zB2eRkzfcCILQQ0ZUc0tk7CE2ZC1PGJYi5GOU+2QQAGHtTCgb8V4B/OPm9ws+X5Q9SQB5vyTXxBQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vue-router-mock/-/vue-router-mock-2.0.0.tgz", + "integrity": "sha512-UmfJ9C4odcC8P2d8+yZWGPnjK7MMc1Uk3bmchpq+8lcGEdpwrO18RPQOMUEiwAjqjTVN5Z955Weaz2Ev9UrXMw==", "dev": true, "license": "MIT", "peerDependencies": { diff --git a/package.json b/package.json index 5bf4dd8f0..343734b2a 100644 --- a/package.json +++ b/package.json @@ -10,9 +10,6 @@ "format": "prettier . --write", "build:assets": "vite build", "build:pictures": "bash ./scripts/build/pictures.sh", - "story:dev": "histoire dev", - "story:build": "histoire build", - "story:preview": "histoire preview", "test": "vitest", "coverage": "vitest run --coverage", "prepare": "husky", @@ -112,7 +109,6 @@ }, "devDependencies": { "@eslint/js": "^9.38.0", - "@histoire/plugin-vue": "^0.17.1", "@playwright/test": "^1.25.1", "@rushstack/eslint-patch": "^1.1.4", "@tailwindcss/forms": "^0.5.2", @@ -125,9 +121,9 @@ "@types/ngeohash": "^0.6.2", "@types/phoenix": "^1.5.2", "@types/sanitize-html": "^2.5.0", - "@vitejs/plugin-vue": "^5.0.0", - "@vitest/coverage-v8": "^1.2.2", - "@vitest/ui": "^1.2.2", + "@vitejs/plugin-vue": "^6.0.1", + "@vitest/coverage-v8": "^4.0.2", + "@vitest/ui": "^4.0.2", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", "@vue/test-utils": "^2.0.2", @@ -138,21 +134,20 @@ "eslint-plugin-vue": "^10.5.1", "flush-promises": "^1.0.2", "globals": "^16.4.0", - "histoire": "^0.17.0", "husky": "^9.0.10", "jsdom": "^24.0.0", - "lint-staged": "^15.1.0", + "lint-staged": "^16.2.6", "mock-apollo-client": "^1.1.0", "prettier": "^3.0.0", "prettier-eslint": "^16.1.2", - "rollup-plugin-visualizer": "^5.7.1", + "rollup-plugin-visualizer": "^6.0.5", "sass": "^1.34.1", "typescript": "^5.9.3", "typescript-eslint": "^8.46.2", - "vite": "^5.0.12", - "vite-plugin-pwa": "^0.19.0", - "vitest": "^1.2.2", + "vite": "^7.1.12", + "vite-plugin-pwa": "^1.1.0", + "vitest": "^4.0.2", "vue-i18n-extract": "^2.0.4", - "vue-router-mock": "^1.0.0" + "vue-router-mock": "^2.0.0" } } diff --git a/src/components/About/InstanceContactLink.story.vue b/src/components/About/InstanceContactLink.story.vue deleted file mode 100644 index 6369bd2c4..000000000 --- a/src/components/About/InstanceContactLink.story.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/src/components/Account/ActorCard.story.vue b/src/components/Account/ActorCard.story.vue deleted file mode 100644 index ee5f2e830..000000000 --- a/src/components/Account/ActorCard.story.vue +++ /dev/null @@ -1,52 +0,0 @@ - - diff --git a/src/components/Account/ActorInline.story.vue b/src/components/Account/ActorInline.story.vue deleted file mode 100644 index 7ab2923f8..000000000 --- a/src/components/Account/ActorInline.story.vue +++ /dev/null @@ -1,52 +0,0 @@ - - diff --git a/src/components/Account/PopoverActorCard.story.vue b/src/components/Account/PopoverActorCard.story.vue deleted file mode 100644 index 25a5950eb..000000000 --- a/src/components/Account/PopoverActorCard.story.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - diff --git a/src/components/Account/ProfileOnboarding.story.vue b/src/components/Account/ProfileOnboarding.story.vue deleted file mode 100644 index 604b118e1..000000000 --- a/src/components/Account/ProfileOnboarding.story.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/Address/AddressInfo.story.vue b/src/components/Address/AddressInfo.story.vue deleted file mode 100644 index 97ae8821e..000000000 --- a/src/components/Address/AddressInfo.story.vue +++ /dev/null @@ -1,31 +0,0 @@ - - diff --git a/src/components/Address/InlineAddress.story.vue b/src/components/Address/InlineAddress.story.vue deleted file mode 100644 index da69eab8f..000000000 --- a/src/components/Address/InlineAddress.story.vue +++ /dev/null @@ -1,27 +0,0 @@ - - diff --git a/src/components/Categories/CategoryCard.story.vue b/src/components/Categories/CategoryCard.story.vue deleted file mode 100644 index 95fec5c33..000000000 --- a/src/components/Categories/CategoryCard.story.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/Discussion/DiscussionComment.story.vue b/src/components/Discussion/DiscussionComment.story.vue deleted file mode 100644 index 86621443f..000000000 --- a/src/components/Discussion/DiscussionComment.story.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - diff --git a/src/components/Discussion/DiscussionListItem.story.vue b/src/components/Discussion/DiscussionListItem.story.vue deleted file mode 100644 index 7f075f3c2..000000000 --- a/src/components/Discussion/DiscussionListItem.story.vue +++ /dev/null @@ -1,33 +0,0 @@ - - - diff --git a/src/components/Event/DateCalendarIcon.story.vue b/src/components/Event/DateCalendarIcon.story.vue deleted file mode 100644 index e6b55dcb3..000000000 --- a/src/components/Event/DateCalendarIcon.story.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/src/components/Event/OrganizerPicker.story.vue b/src/components/Event/OrganizerPicker.story.vue deleted file mode 100644 index a58dcd68d..000000000 --- a/src/components/Event/OrganizerPicker.story.vue +++ /dev/null @@ -1,56 +0,0 @@ - - diff --git a/src/components/Event/OrganizerPickerWrapper.story.vue b/src/components/Event/OrganizerPickerWrapper.story.vue deleted file mode 100644 index 0906588d0..000000000 --- a/src/components/Event/OrganizerPickerWrapper.story.vue +++ /dev/null @@ -1,89 +0,0 @@ - - diff --git a/src/components/Event/ParticipationButton.story.vue b/src/components/Event/ParticipationButton.story.vue deleted file mode 100644 index 594a3353d..000000000 --- a/src/components/Event/ParticipationButton.story.vue +++ /dev/null @@ -1,114 +0,0 @@ - - - diff --git a/src/components/Event/ShareEventModal.story.vue b/src/components/Event/ShareEventModal.story.vue deleted file mode 100644 index c153fdc5a..000000000 --- a/src/components/Event/ShareEventModal.story.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/Event/SkeletonEventResult.story.vue b/src/components/Event/SkeletonEventResult.story.vue deleted file mode 100644 index 079d01ba7..000000000 --- a/src/components/Event/SkeletonEventResult.story.vue +++ /dev/null @@ -1,17 +0,0 @@ - - - diff --git a/src/components/Event/TagInput.story.vue b/src/components/Event/TagInput.story.vue deleted file mode 100644 index 19bced808..000000000 --- a/src/components/Event/TagInput.story.vue +++ /dev/null @@ -1,18 +0,0 @@ - - - diff --git a/src/components/Group/GroupCard.story.vue b/src/components/Group/GroupCard.story.vue deleted file mode 100644 index 56772549b..000000000 --- a/src/components/Group/GroupCard.story.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - diff --git a/src/components/Group/GroupMemberCard.story.vue b/src/components/Group/GroupMemberCard.story.vue deleted file mode 100644 index 461d2177c..000000000 --- a/src/components/Group/GroupMemberCard.story.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/src/components/Home/CategoriesPreview.story.vue b/src/components/Home/CategoriesPreview.story.vue deleted file mode 100644 index dc788a9df..000000000 --- a/src/components/Home/CategoriesPreview.story.vue +++ /dev/null @@ -1,16 +0,0 @@ - - diff --git a/src/components/Home/MobilizonPresentation.story.vue b/src/components/Home/MobilizonPresentation.story.vue deleted file mode 100644 index 5d66f6045..000000000 --- a/src/components/Home/MobilizonPresentation.story.vue +++ /dev/null @@ -1,10 +0,0 @@ - - diff --git a/src/components/Home/SearchFields.story.vue b/src/components/Home/SearchFields.story.vue deleted file mode 100644 index fd3f8112e..000000000 --- a/src/components/Home/SearchFields.story.vue +++ /dev/null @@ -1,22 +0,0 @@ - - diff --git a/src/components/Home/UnloggedIntroduction.story.vue b/src/components/Home/UnloggedIntroduction.story.vue deleted file mode 100644 index 4958f4e22..000000000 --- a/src/components/Home/UnloggedIntroduction.story.vue +++ /dev/null @@ -1,23 +0,0 @@ - - diff --git a/src/components/Post/PostListItem.story.vue b/src/components/Post/PostListItem.story.vue deleted file mode 100644 index 61d583900..000000000 --- a/src/components/Post/PostListItem.story.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - diff --git a/src/components/Post/SharePostModal.story.vue b/src/components/Post/SharePostModal.story.vue deleted file mode 100644 index 9531800ea..000000000 --- a/src/components/Post/SharePostModal.story.vue +++ /dev/null @@ -1,20 +0,0 @@ - - - diff --git a/src/components/User/AuthProviders.story.vue b/src/components/User/AuthProviders.story.vue deleted file mode 100644 index ee88b54a1..000000000 --- a/src/components/User/AuthProviders.story.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/components/core/MaterialIcon.story.vue b/src/components/core/MaterialIcon.story.vue deleted file mode 100644 index 1b6a20a58..000000000 --- a/src/components/core/MaterialIcon.story.vue +++ /dev/null @@ -1,16 +0,0 @@ - - diff --git a/src/histoire.setup.ts b/src/histoire.setup.ts deleted file mode 100644 index b9757b419..000000000 --- a/src/histoire.setup.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { defineSetupVue3 } from "@histoire/plugin-vue"; -import { orugaConfig } from "./oruga-config"; -import { i18n } from "./utils/i18n"; -import Oruga from "@oruga-ui/oruga-next"; -import "@oruga-ui/oruga-next/dist/oruga-full-vars.css"; -import "./assets/tailwind.css"; -import "./assets/oruga-tailwindcss.css"; -import locale from "date-fns/locale/en-US"; -import MaterialIcon from "./components/core/MaterialIcon.vue"; - -export const setupVue3 = defineSetupVue3(({ app }) => { - // Vue plugin - app.use(i18n); - app.use(Oruga, orugaConfig); - app.component("material-icon", MaterialIcon); - app.provide("dateFnsLocale", locale); -}); diff --git a/tests/unit/specs/components/About/InstanceContactLink.spec.ts b/tests/unit/specs/components/About/InstanceContactLink.spec.ts new file mode 100644 index 000000000..056f5acd0 --- /dev/null +++ b/tests/unit/specs/components/About/InstanceContactLink.spec.ts @@ -0,0 +1,74 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import InstanceContactLink from "@/components/About/InstanceContactLink.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any = {}) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(InstanceContactLink, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("InstanceContactLink", () => { + it("Show empty", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show string", async () => { + const wrapper = generateWrapper({ + contact: "someone", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show email", async () => { + const wrapper = generateWrapper({ + contact: "someone@somewhere.tld", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show url", async () => { + const wrapper = generateWrapper({ + contact: "https://somewhere.com", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/About/__snapshots__/InstanceContactLink.spec.ts.snap b/tests/unit/specs/components/About/__snapshots__/InstanceContactLink.spec.ts.snap new file mode 100644 index 000000000..a8d8505d8 --- /dev/null +++ b/tests/unit/specs/components/About/__snapshots__/InstanceContactLink.spec.ts.snap @@ -0,0 +1,9 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`InstanceContactLink > Show email 1`] = `"

someone@somewhere.tld

"`; + +exports[`InstanceContactLink > Show empty 1`] = `"

contact uninformed

"`; + +exports[`InstanceContactLink > Show string 1`] = `"

someone

"`; + +exports[`InstanceContactLink > Show url 1`] = `"

somewhere.com

"`; diff --git a/tests/unit/specs/components/Account/ActorCard.spec.ts b/tests/unit/specs/components/Account/ActorCard.spec.ts new file mode 100644 index 000000000..1f1f7c1ff --- /dev/null +++ b/tests/unit/specs/components/Account/ActorCard.spec.ts @@ -0,0 +1,87 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import ActorCard from "@/components/Account/ActorCard.vue"; +import { reactive, ref } from "vue"; +import { IActor } from "@/types/actor"; +import { ActorType } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const avatarUrl = ref( + "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg" +); + +const stateLocal = reactive({ + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: null, + domain: null, + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}); + +const stateRemote = reactive({ + name: "Framasoft", + preferredUsername: "framasoft", + avatar: { url: avatarUrl.value, id: "", name: "", alt: "", metadata: {} }, + domain: "framapiaf.org", + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(ActorCard, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("ActorCard", () => { + it("Show local", async () => { + const wrapper = generateWrapper({ + actor: stateLocal, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show simple", async () => { + const wrapper = generateWrapper({ + actor: stateRemote, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Account/ActorInline.spec.ts b/tests/unit/specs/components/Account/ActorInline.spec.ts new file mode 100644 index 000000000..67a1b1db4 --- /dev/null +++ b/tests/unit/specs/components/Account/ActorInline.spec.ts @@ -0,0 +1,87 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import ActorInline from "@/components/Account/ActorInline.vue"; +import { reactive, ref } from "vue"; +import { IActor } from "@/types/actor"; +import { ActorType } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(ActorInline, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const avatarUrl = ref( + "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg" +); + +const stateLocal = reactive({ + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: null, + domain: null, + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}); + +const stateRemote = reactive({ + name: "Framasoft", + preferredUsername: "framasoft", + avatar: { url: avatarUrl.value, id: "", name: "", alt: "", metadata: {} }, + domain: "framapiaf.org", + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}); + +describe("ActorInline", () => { + it("Show local", async () => { + const wrapper = generateWrapper({ + actor: stateLocal, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show remote", async () => { + const wrapper = generateWrapper({ + actor: stateRemote, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Account/PopoverActorCard.spec.ts b/tests/unit/specs/components/Account/PopoverActorCard.spec.ts new file mode 100644 index 000000000..691cb9eb4 --- /dev/null +++ b/tests/unit/specs/components/Account/PopoverActorCard.spec.ts @@ -0,0 +1,90 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import PopoverActorCard from "@/components/Account/PopoverActorCard.vue"; +import { ActorType } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const baseActorAvatar = { + id: "", + name: "", + alt: "", + metadata: {}, + url: "https://social.tcit.fr/system/accounts/avatars/000/000/001/original/a28c50ce5f2b13fd.jpg", +}; + +const baseActor = { + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: baseActorAvatar, + domain: null, + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}; + +const group = { + ...baseActor, + name: "Framasoft", + preferredUsername: "framasoft", + domain: "mobilizon.fr", + avatar: { + ...baseActorAvatar, + url: "https://stockage.framapiaf.org/framapiaf/accounts/avatars/000/000/399/original/52b08a3e80b43d40.jpg", + }, +}; + +const generateWrapper = (actor: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(PopoverActorCard, { + props: { + actor: actor, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + slots: { + default: "
Popover me !
", + }, + }); +}; + +describe("PopoverActorCard", () => { + it("Show Person", async () => { + const wrapper = generateWrapper(baseActor); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Group", async () => { + const wrapper = generateWrapper(group); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Account/ProfileOnboarding.spec.ts b/tests/unit/specs/components/Account/ProfileOnboarding.spec.ts new file mode 100644 index 000000000..77b52c300 --- /dev/null +++ b/tests/unit/specs/components/Account/ProfileOnboarding.spec.ts @@ -0,0 +1,63 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import ProfileOnboarding from "@/components/Account/ProfileOnboarding.vue"; +import { ActorType } from "@/types/enums"; +import { IPerson } from "@/types/actor"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const baseActor: IPerson = { + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: null, + domain: null, + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, +}; + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(ProfileOnboarding, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("ProfileOnboarding", () => { + it("Show simple", async () => { + const wrapper = generateWrapper({ + currentActor: baseActor, + instanceName: "Instance name", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Account/__snapshots__/ActorCard.spec.ts.snap b/tests/unit/specs/components/Account/__snapshots__/ActorCard.spec.ts.snap new file mode 100644 index 000000000..10eb5f58f --- /dev/null +++ b/tests/unit/specs/components/Account/__snapshots__/ActorCard.spec.ts.snap @@ -0,0 +1,103 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ActorCard > Show local 1`] = ` +"
+
+
+
Thomas Citharel
+

@tcit

+ + +
+
+
+" +`; + +exports[`ActorCard > Show simple 1`] = ` +"
+
+
+
+
+
Framasoft
+

@framasoft@framapiaf.org

+ + +
+
+
+" +`; diff --git a/tests/unit/specs/components/Account/__snapshots__/ActorInline.spec.ts.snap b/tests/unit/specs/components/Account/__snapshots__/ActorInline.spec.ts.snap new file mode 100644 index 000000000..afe458152 --- /dev/null +++ b/tests/unit/specs/components/Account/__snapshots__/ActorInline.spec.ts.snap @@ -0,0 +1,23 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ActorInline > Show local 1`] = ` +"
+
+
+

Thomas Citharel

+

@tcit

+
+
" +`; + +exports[`ActorInline > Show remote 1`] = ` +"
+
+
+
+
+

Framasoft

+

@framasoft@framapiaf.org

+
+
" +`; diff --git a/tests/unit/specs/components/Account/__snapshots__/PopoverActorCard.spec.ts.snap b/tests/unit/specs/components/Account/__snapshots__/PopoverActorCard.spec.ts.snap new file mode 100644 index 000000000..314ce49ed --- /dev/null +++ b/tests/unit/specs/components/Account/__snapshots__/PopoverActorCard.spec.ts.snap @@ -0,0 +1,13 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`PopoverActorCard > Show Group 1`] = ` +" +
Popover me !
+
" +`; + +exports[`PopoverActorCard > Show Person 1`] = ` +" +
Popover me !
+
" +`; diff --git a/tests/unit/specs/components/Account/__snapshots__/ProfileOnboarding.spec.ts.snap b/tests/unit/specs/components/Account/__snapshots__/ProfileOnboarding.spec.ts.snap new file mode 100644 index 000000000..7aa9e5658 --- /dev/null +++ b/tests/unit/specs/components/Account/__snapshots__/ProfileOnboarding.spec.ts.snap @@ -0,0 +1,13 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ProfileOnboarding > Show simple 1`] = ` +"
+

Profiles and federation

+
+

Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.

+
+

Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.This instance, Instance name (localhost), hosts your profile, so remember its name.

+
+

If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:

+
tcit@localhost
" +`; diff --git a/tests/unit/specs/components/Address/AddressInfo.spec.ts b/tests/unit/specs/components/Address/AddressInfo.spec.ts new file mode 100644 index 000000000..870cac9bd --- /dev/null +++ b/tests/unit/specs/components/Address/AddressInfo.spec.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import AddressInfo from "@/components/Address/AddressInfo.vue"; +import { IAddress } from "@/types/address.model"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(AddressInfo, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const address = reactive({ + description: "Locaux Motiv", + street: "10 Rue Jangot", + locality: "Lyon", + postalCode: "69007", + region: "Auvergne Rhône-Alpes", + country: "France", + type: "", + timezone: "Europe/Dublin", +}); + +describe("AddressInfo", () => { + it("Show Basic", async () => { + const wrapper = generateWrapper({ + address: address, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Basic with timezone", async () => { + const wrapper = generateWrapper({ + address: address, + showTimezone: true, + userTimezone: "Europe/Berlin", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Address/InlineAddress.spec.ts b/tests/unit/specs/components/Address/InlineAddress.spec.ts new file mode 100644 index 000000000..9ee9b3993 --- /dev/null +++ b/tests/unit/specs/components/Address/InlineAddress.spec.ts @@ -0,0 +1,71 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import { IAddress } from "@/types/address.model"; +import { reactive } from "vue"; +import InlineAddress from "@/components/Address/InlineAddress.vue"; + +const address = reactive({ + description: "Locaux Motiv", + street: "10 Rue Jangot", + locality: "Lyon", + postalCode: "69007", + region: "Auvergne Rhône-Alpes", + country: "France", + type: "", + timezone: "Europe/Dublin", +}); + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any = {}) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(InlineAddress, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("InlineAddress", () => { + it("Show with locality", async () => { + const wrapper = generateWrapper({ + physicalAddress: address, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show without locality", async () => { + const wrapper = generateWrapper({ + physicalAddress: { ...address, locality: null }, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Address/__snapshots__/AddressInfo.spec.ts.snap b/tests/unit/specs/components/Address/__snapshots__/AddressInfo.spec.ts.snap new file mode 100644 index 000000000..b0a7530b6 --- /dev/null +++ b/tests/unit/specs/components/Address/__snapshots__/AddressInfo.spec.ts.snap @@ -0,0 +1,17 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AddressInfo > Show Basic 1`] = ` +"
+ +

Locaux Motiv
10 Rue Jangot, 69007, Lyon
+ +

+
" +`; + +exports[`AddressInfo > Show Basic with timezone 1`] = ` +"
+ +

Locaux Motiv
10 Rue Jangot, 69007, Lyon
🌐 heure moyenne de Greenwich (UTC)

+
" +`; diff --git a/tests/unit/specs/components/Address/__snapshots__/InlineAddress.spec.ts.snap b/tests/unit/specs/components/Address/__snapshots__/InlineAddress.spec.ts.snap new file mode 100644 index 000000000..05c75a229 --- /dev/null +++ b/tests/unit/specs/components/Address/__snapshots__/InlineAddress.spec.ts.snap @@ -0,0 +1,5 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`InlineAddress > Show with locality 1`] = `"
Lyon
"`; + +exports[`InlineAddress > Show without locality 1`] = `"
Locaux Motiv
"`; diff --git a/tests/unit/specs/components/Categories/CategoryCard.spec.ts b/tests/unit/specs/components/Categories/CategoryCard.spec.ts new file mode 100644 index 000000000..5075cfa6d --- /dev/null +++ b/tests/unit/specs/components/Categories/CategoryCard.spec.ts @@ -0,0 +1,67 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import CategoryCard from "@/components/Categories/CategoryCard.vue"; +import { CategoryStatsModel } from "@/types/stats.model"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(CategoryCard, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const category = reactive({ + key: "PHOTOGRAPHY", + number: 5, + label: "Hello", +}); + +describe("CategoryCard", () => { + it("Show Basic", async () => { + const wrapper = generateWrapper({ + category: category, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Details", async () => { + const wrapper = generateWrapper({ + category: { ...category, key: "OUTDOORS_ADVENTURE" }, + withDetails: true, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Categories/__snapshots__/CategoryCard.spec.ts.snap b/tests/unit/specs/components/Categories/__snapshots__/CategoryCard.spec.ts.snap new file mode 100644 index 000000000..5f758a59e --- /dev/null +++ b/tests/unit/specs/components/Categories/__snapshots__/CategoryCard.spec.ts.snap @@ -0,0 +1,26 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`CategoryCard > Show Basic 1`] = ` +" + + + + +
+

Hello

+
+ +
" +`; + +exports[`CategoryCard > Show Details 1`] = ` +" + + + + +
+

Hello

+
5 events +
" +`; diff --git a/src/components/Comment/EventComment.story.vue b/tests/unit/specs/components/Comment/EventComment.spec.ts similarity index 67% rename from src/components/Comment/EventComment.story.vue rename to tests/unit/specs/components/Comment/EventComment.spec.ts index b0baf3295..526fd6868 100644 --- a/src/components/Comment/EventComment.story.vue +++ b/tests/unit/specs/components/Comment/EventComment.spec.ts @@ -1,28 +1,13 @@ - - + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(EventComment, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("EventComment", () => { + it("Show Basic", async () => { + const wrapper = generateWrapper({ + comment: comment, + event: event, + currentActor: baseActor, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + it("Show Announcement", async () => { + const wrapper = generateWrapper({ + comment: { ...comment, isAnnouncement: true }, + event: event, + currentActor: baseActor, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Comment/__snapshots__/EventComment.spec.ts.snap b/tests/unit/specs/components/Comment/__snapshots__/EventComment.spec.ts.snap new file mode 100644 index 000000000..8fccca323 --- /dev/null +++ b/tests/unit/specs/components/Comment/__snapshots__/EventComment.spec.ts.snap @@ -0,0 +1,177 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`EventComment > Show Announcement 1`] = ` +"
  • +
    +
    +
    +
    + +
    +
    Thomas Citharel +
    in over 3 years +
    +
    hello
    + +
    +
    +
    +
    +
    +
    +
    +
    Thomas Citharel@tcit
    +
    + +
    +
    +
    +
    + + + + + + +
  • " +`; + +exports[`EventComment > Show Basic 1`] = ` +"
  • +
    +
    +
    +
    + +
    +
    Thomas Citharel +
    in over 3 years +
    +
    hello
    + +
    +
    +
    +
    +
    +
    +
    +
    Thomas Citharel@tcit
    +
    + +
    +
    +
    +
    + + + + + + +
  • " +`; diff --git a/tests/unit/specs/components/Discussion/DiscussionComment.spec.ts b/tests/unit/specs/components/Discussion/DiscussionComment.spec.ts new file mode 100644 index 000000000..87f86bbea --- /dev/null +++ b/tests/unit/specs/components/Discussion/DiscussionComment.spec.ts @@ -0,0 +1,96 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import DiscussionComment from "@/components/Discussion/DiscussionComment.vue"; +import { IPerson } from "@/types/actor"; +import { IComment } from "@/types/comment.model"; +import { ActorType } from "@/types/enums"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const baseActorAvatar = { + id: "", + name: "", + alt: "", + metadata: {}, + url: "https://social.tcit.fr/system/accounts/avatars/000/000/001/original/a28c50ce5f2b13fd.jpg", +}; + +const baseActor: IPerson = { + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: baseActorAvatar, + domain: null, + url: "", + summary: "", + suspended: false, + type: ActorType.PERSON, + id: "598", +}; + +const comment = reactive({ + text: "Hello there", + publishedAt: new Date().toString(), + actor: baseActor, +}); + +const deletedComment = reactive({ + ...comment, + actor: null, + deletedAt: new Date().toString(), +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(DiscussionComment, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("DiscussionComment", () => { + it("Show Basic", async () => { + const wrapper = generateWrapper({ + modelValue: comment, + currentActor: baseActor, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Deleted comment", async () => { + const wrapper = generateWrapper({ + modelValue: deletedComment, + currentActor: baseActor, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Discussion/DiscussionListItem.spec.ts b/tests/unit/specs/components/Discussion/DiscussionListItem.spec.ts new file mode 100644 index 000000000..ed76ba0f6 --- /dev/null +++ b/tests/unit/specs/components/Discussion/DiscussionListItem.spec.ts @@ -0,0 +1,60 @@ +import { describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import DiscussionListItem from "@/components/Discussion/DiscussionListItem.vue"; +import { IDiscussion } from "@/types/discussions"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = []; + return mount(DiscussionListItem, { + props: props, + global: { + ...global_data, + }, + }); +}; + +const mockdiscussion = reactive({ + title: "A discussion", + comments: { total: 5, elements: [] }, + insertedAt: "2022-02-02T02:04:00.000Z", + updatedAt: "2022-02-04T02:04:00.000Z", + deletedAt: null, + lastComment: { text: "Hello there", publishedAt: new Date().toString() }, +}); + +const mockdiscussionWithDeletedComment = reactive({ + ...mockdiscussion, + lastComment: { + ...mockdiscussion.lastComment, + deletedAt: "2022-02-06T02:04:00.000Z", + }, +}); + +describe("DiscussionListItem", () => { + it("Show Basic", async () => { + const wrapper = generateWrapper({ + discussion: mockdiscussion, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + it("Show Deleted comment", async () => { + const wrapper = generateWrapper({ + discussion: mockdiscussion, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Discussion/__snapshots__/DiscussionComment.spec.ts.snap b/tests/unit/specs/components/Discussion/__snapshots__/DiscussionComment.spec.ts.snap new file mode 100644 index 000000000..ba6adb383 --- /dev/null +++ b/tests/unit/specs/components/Discussion/__snapshots__/DiscussionComment.spec.ts.snap @@ -0,0 +1,130 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`DiscussionComment > Show Basic 1`] = ` +"
    +
    +
    +
    +
    +
    +
    Thomas Citharel@tcit
    +
    + + + + + + + + +
    +
    + +
    +
    +
    +
    Hello there
    + +
    +
    +
    + + + + +" +`; + +exports[`DiscussionComment > Show Deleted comment 1`] = ` +"
    +
    +
    +
    [deleted] + +
    + +
    +
    +
    [This comment has been deleted by it's author]
    +
    +
    + + + + +" +`; diff --git a/tests/unit/specs/components/Discussion/__snapshots__/DiscussionListItem.spec.ts.snap b/tests/unit/specs/components/Discussion/__snapshots__/DiscussionListItem.spec.ts.snap new file mode 100644 index 000000000..4fc9d45ee --- /dev/null +++ b/tests/unit/specs/components/Discussion/__snapshots__/DiscussionListItem.spec.ts.snap @@ -0,0 +1,25 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`DiscussionListItem > Show Basic 1`] = ` +" +
    +
    +
    +

    A discussion

    2 days +
    +
    +
    +
    " +`; + +exports[`DiscussionListItem > Show Deleted comment 1`] = ` +" +
    +
    +
    +

    A discussion

    2 days +
    +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/Event/DateCalendarIcon.spec.ts b/tests/unit/specs/components/Event/DateCalendarIcon.spec.ts new file mode 100644 index 000000000..c7d8fd296 --- /dev/null +++ b/tests/unit/specs/components/Event/DateCalendarIcon.spec.ts @@ -0,0 +1,59 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import DateCalendarIcon from "@/components/Event/DateCalendarIcon.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(DateCalendarIcon, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("DateCalendarIcon", () => { + it("Show new", async () => { + const wrapper = generateWrapper({ + date: new Date().toString(), + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show small", async () => { + const wrapper = generateWrapper({ + date: new Date().toString(), + small: true, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/src/components/Event/EventCard.story.vue b/tests/unit/specs/components/Event/EventCard.spec.ts similarity index 53% rename from src/components/Event/EventCard.story.vue rename to tests/unit/specs/components/Event/EventCard.spec.ts index 82020d4c8..4d69d133d 100644 --- a/src/components/Event/EventCard.story.vue +++ b/tests/unit/specs/components/Event/EventCard.spec.ts @@ -1,26 +1,13 @@ - - - + +describe("EventCard", () => { + it("Show default", async () => { + const wrapper = generateWrapper({ + event: event, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show long", async () => { + const wrapper = generateWrapper({ + event: longEvent, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show tentative", async () => { + const wrapper = generateWrapper({ + event: tentativeEvent, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show cancelled", async () => { + const wrapper = generateWrapper({ + event: cancelledEvent, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Row mode", async () => { + const wrapper = generateWrapper({ + event: longEvent, + mode: "row", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/src/components/Event/EventListViewCard.story.vue b/tests/unit/specs/components/Event/EventListViewCard.spec.ts similarity index 61% rename from src/components/Event/EventListViewCard.story.vue rename to tests/unit/specs/components/Event/EventListViewCard.spec.ts index 2ecca3b8f..bb4234443 100644 --- a/src/components/Event/EventListViewCard.story.vue +++ b/tests/unit/specs/components/Event/EventListViewCard.spec.ts @@ -1,23 +1,13 @@ - - - + it("Show long", async () => { + const wrapper = generateWrapper({ + event: longEvent, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Event/OrganizerPicker.spec.ts b/tests/unit/specs/components/Event/OrganizerPicker.spec.ts new file mode 100644 index 000000000..39508e878 --- /dev/null +++ b/tests/unit/specs/components/Event/OrganizerPicker.spec.ts @@ -0,0 +1,78 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import OrganizerPicker from "@/components/Event/OrganizerPicker.vue"; +import { reactive, ref } from "vue"; +import { ActorType } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const currentActor = reactive({ + id: "59", + preferredUsername: "me", + name: "Someone", + type: ActorType.PERSON, +}); + +const actor = reactive({ + id: "5", + preferredUsername: "hello", + name: "Sigmund", + type: ActorType.PERSON, +}); + +const group = reactive({ + id: "89", + preferredUsername: "congregation", + name: "College", + type: ActorType.GROUP, +}); + +const identities = [actor, group]; + +const generateWrapper = () => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(OrganizerPicker, { + props: { + modelValue: actor, + identities: identities, + actorFilter: "", + groupMemberships: [], + currentActor: currentActor, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("OrganizerPicker", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Event/OrganizerPickerWrapper.spec.ts b/tests/unit/specs/components/Event/OrganizerPickerWrapper.spec.ts new file mode 100644 index 000000000..3ef6304ff --- /dev/null +++ b/tests/unit/specs/components/Event/OrganizerPickerWrapper.spec.ts @@ -0,0 +1,73 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import OrganizerPickerWrapper from "@/components/Event/OrganizerPickerWrapper.vue"; +import { PERSON_GROUP_MEMBERSHIPS } from "@/graphql/actor"; +import { IDENTITIES } from "@/graphql/actor"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const mock_person = { + data: { + person: { id: "5", memberships: { total: 0, elements: [] } }, + }, +}; +const mock_loggeduser = { + data: { + loggedUser: { + actors: [{ id: "9", preferredUsername: "sam", name: "Samuel" }], + }, + }, +}; + +const generateWrapper = () => { + const global_data = getMockClient([ + [PERSON_GROUP_MEMBERSHIPS, mock_person], + [IDENTITIES, mock_loggeduser], + ]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(OrganizerPickerWrapper, { + props: { + modelValue: { + id: "5", + preferredUsername: "hello", + name: "Sigmund", + }, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("OrganizerPickerWrapper", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + expect(requestHandlers.handle_0).toHaveBeenCalledTimes(0); + expect(requestHandlers.handle_1).toHaveBeenCalledTimes(0); + }); +}); diff --git a/tests/unit/specs/components/Event/ParticipationButton.spec.ts b/tests/unit/specs/components/Event/ParticipationButton.spec.ts new file mode 100644 index 000000000..1c5c68601 --- /dev/null +++ b/tests/unit/specs/components/Event/ParticipationButton.spec.ts @@ -0,0 +1,160 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import ParticipationButton from "@/components/Event/ParticipationButton.vue"; +import { IPerson } from "@/types/actor"; +import { EventJoinOptions, ParticipantRole } from "@/types/enums"; +import { IEvent } from "@/types/event.model"; +import { IParticipant } from "@/types/participant.model"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(ParticipationButton, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const emptyCurrentActor: IPerson = {}; + +const currentActor: IPerson = { + id: "1", + preferredUsername: "tcit", + name: "Thomas", + avatar: { + url: "https://mobilizon.fr/media/3a5f18c058a8193b1febfaf561f94ae8b91f85ac64c01ddf5ad7b251fb43baf5.jpg?name=profil.jpg", + }, +}; + +const participation: IParticipant = { + actor: currentActor, + role: ParticipantRole.PARTICIPANT, +}; + +const identities: IPerson[] = [ + currentActor, + { + id: "2", + preferredUsername: "another", + name: "Another", + avatar: { + url: "https://mobilizon.fr/media/95ab5ba92287ab4857bb517cadae2a7ab6a553748d1c48cefc27e2b7ab640fea.jpg?name=FB_IMG_16150214351371162.jpg", + }, + }, +]; + +const event: IEvent = { + uuid: "0123456789", + title: "hello", + url: "https://mobilizon.fr/events/an-uuid", + options: { + anonymousParticipation: false, + }, + joinOptions: EventJoinOptions.FREE, +}; + +describe("ParticipationButton", () => { + it("Show Unlogged", async () => { + const wrapper = generateWrapper({ + event: event, + currentActor: emptyCurrentActor, + participation: undefined, + identities: [], + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Basic", async () => { + const wrapper = generateWrapper({ + event: event, + currentActor: currentActor, + participation: undefined, + identities: identities, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Basic with confirmation", async () => { + const wrapper = generateWrapper({ + event: { ...event, joinOptions: EventJoinOptions.RESTRICTED }, + currentActor: currentActor, + participation: undefined, + identities: identities, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Participating", async () => { + const wrapper = generateWrapper({ + event: event, + currentActor: currentActor, + participation: participation, + identities: identities, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Pending approval", async () => { + const wrapper = generateWrapper({ + event: event, + currentActor: currentActor, + participation: { + ...participation, + role: ParticipantRole.NOT_APPROVED, + }, + identities: identities, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Rejected", async () => { + const wrapper = generateWrapper({ + event: event, + currentActor: currentActor, + participation: { + ...participation, + role: ParticipantRole.REJECTED, + }, + identities: identities, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Event/ShareEventModal.spec.ts b/tests/unit/specs/components/Event/ShareEventModal.spec.ts new file mode 100644 index 000000000..5b9612b2f --- /dev/null +++ b/tests/unit/specs/components/Event/ShareEventModal.spec.ts @@ -0,0 +1,92 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import ShareEventModal from "@/components/Event/ShareEventModal.vue"; +import { EventVisibility, EventStatus } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (event: any, eventCapacityOK: boolean = true) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(ShareEventModal, { + props: { + event: event, + eventCapacityOK: eventCapacityOK, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("ShareEventModal", () => { + it("Show Public", async () => { + const wrapper = generateWrapper({ + title: "hello", + url: "https://mobilizon.fr/events/an-uuid", + visibility: EventVisibility.PUBLIC, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Private", async () => { + const wrapper = generateWrapper({ + title: "hello", + url: "https://mobilizon.fr/events/an-uuid", + visibility: EventVisibility.PRIVATE, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Cancelled", async () => { + const wrapper = generateWrapper({ + title: "hello", + url: "https://mobilizon.fr/events/an-uuid", + visibility: EventVisibility.PUBLIC, + status: EventStatus.CANCELLED, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show No seats left", async () => { + const wrapper = generateWrapper( + { + title: "hello", + url: "https://mobilizon.fr/events/an-uuid", + visibility: EventVisibility.PUBLIC, + }, + false + ); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Event/SkeletonEventResult.spec.ts b/tests/unit/specs/components/Event/SkeletonEventResult.spec.ts new file mode 100644 index 000000000..f2cd508f4 --- /dev/null +++ b/tests/unit/specs/components/Event/SkeletonEventResult.spec.ts @@ -0,0 +1,65 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import SkeletonEventResult from "@/components/Event/SkeletonEventResult.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any = {}) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(SkeletonEventResult, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("SkeletonEventResult", () => { + it("Show row", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show column", async () => { + const wrapper = generateWrapper({ + viewMode: "column", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show not minimal", async () => { + const wrapper = generateWrapper({ + minimal: false, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Event/TagInput.spec.ts b/tests/unit/specs/components/Event/TagInput.spec.ts new file mode 100644 index 000000000..042756721 --- /dev/null +++ b/tests/unit/specs/components/Event/TagInput.spec.ts @@ -0,0 +1,55 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import TagInput from "@/components/Event/TagInput.vue"; +import { FILTER_TAGS } from "@/graphql/tags"; +import { ITag } from "@/types/tag.model"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const tags = reactive([{ title: "Hello", slug: "hello" }]); + +const generateWrapper = () => { + const global_data = getMockClient([FILTER_TAGS]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(TagInput, { + props: { + modelValue: tags, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("TagInput", () => { + it("Show new", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + expect(requestHandlers.handle_0).toHaveBeenCalledTimes(0); + }); +}); diff --git a/tests/unit/specs/components/Event/__snapshots__/DateCalendarIcon.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/DateCalendarIcon.spec.ts.snap new file mode 100644 index 000000000..4d9bb8a50 --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/DateCalendarIcon.spec.ts.snap @@ -0,0 +1,17 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`DateCalendarIcon > Show new 1`] = ` +"
    +
    +
    + +
    " +`; + +exports[`DateCalendarIcon > Show small 1`] = ` +"
    +
    +
    + +
    " +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/EventCard.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/EventCard.spec.ts.snap new file mode 100644 index 000000000..461d5e9de --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/EventCard.spec.ts.snap @@ -0,0 +1,252 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`EventCard > Show Row mode 1`] = ` +" + +
    +
    + + +
    +

    A very long title that will have trouble to display because it will take multiple lines but where will it stop ?! Maybe after 3 lines is enough. Let's say so. But if it doesn't work, we really need to truncate it at some point. Definitively.

    +
    +
    +
    Hello +
    +
    Somewhere
    + +
    +
    +
    +
    +" +`; + +exports[`EventCard > Show cancelled 1`] = ` +" + +
    +
    + + +
    +

    A very interesting event

    +
    +
    +
    Hello +
    +
    Somewhere
    + +
    +
    +
    +
    +" +`; + +exports[`EventCard > Show default 1`] = ` +" + +
    +
    + + +
    +

    A very interesting event

    +
    +
    +
    Hello +
    +
    Somewhere
    + +
    +
    +
    +
    +" +`; + +exports[`EventCard > Show long 1`] = ` +" + +
    +
    + + +
    +

    A very long title that will have trouble to display because it will take multiple lines but where will it stop ?! Maybe after 3 lines is enough. Let's say so. But if it doesn't work, we really need to truncate it at some point. Definitively.

    +
    +
    +
    Hello +
    +
    Somewhere
    + +
    +
    +
    +
    +" +`; + +exports[`EventCard > Show tentative 1`] = ` +" + +
    +
    + + +
    +

    A very interesting event

    +
    +
    +
    Hello +
    +
    Somewhere
    + +
    +
    +
    +
    +" +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/EventListViewCard.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/EventListViewCard.spec.ts.snap new file mode 100644 index 000000000..11581321f --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/EventListViewCard.spec.ts.snap @@ -0,0 +1,47 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`EventListViewCard > Show default 1`] = ` +"" +`; + +exports[`EventListViewCard > Show long 1`] = ` +"" +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/OrganizerPicker.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/OrganizerPicker.spec.ts.snap new file mode 100644 index 000000000..9278eaf31 --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/OrganizerPicker.spec.ts.snap @@ -0,0 +1,28 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`OrganizerPicker > Show simple 1`] = ` +"
    +
    + + + +
    + +
  • +
  • +
  • +
    +
    " +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/OrganizerPickerWrapper.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/OrganizerPickerWrapper.spec.ts.snap new file mode 100644 index 000000000..fb0b23083 --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/OrganizerPickerWrapper.spec.ts.snap @@ -0,0 +1,47 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`OrganizerPickerWrapper > Show simple 1`] = ` +"
    + +
    +
    +
    +
    +

    Sigmund

    +

    @hello

    +
    +
    +
    + + + + + +
    " +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/ParticipationButton.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/ParticipationButton.spec.ts.snap new file mode 100644 index 000000000..1b33cf24f --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/ParticipationButton.spec.ts.snap @@ -0,0 +1,104 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ParticipationButton > Show Basic 1`] = ` +"
    +
    +
    + + + + + + + + +
    +
    " +`; + +exports[`ParticipationButton > Show Basic with confirmation 1`] = ` +"
    +
    +
    + + + + + + + + +
    +
    " +`; + +exports[`ParticipationButton > Show Participating 1`] = ` +"
    +
    +
    + + + + + + + + +
    +
    " +`; + +exports[`ParticipationButton > Show Pending approval 1`] = ` +"
    +
    +
    +
    + + + + + + + + +
    +

    Participation requested!

    +

    Waiting for organization team approval.

    +
    +
    " +`; + +exports[`ParticipationButton > Show Rejected 1`] = ` +"
    +
    Unfortunately, your participation request was rejected by the organizers.
    +
    " +`; + +exports[`ParticipationButton > Show Unlogged 1`] = ` +"" +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/ShareEventModal.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/ShareEventModal.spec.ts.snap new file mode 100644 index 000000000..edaeb2796 --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/ShareEventModal.spec.ts.snap @@ -0,0 +1,178 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ShareEventModal > Show Cancelled 1`] = ` +"
    +
    +
    +

    Share this event

    +
    +
    +
    + + +
    + +
    + +
    This event has been cancelled.
    +
    +
    +
    + +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    +
    " +`; + +exports[`ShareEventModal > Show No seats left 1`] = ` +"
    +
    +
    +

    Share this event

    +
    +
    +
    + + + +
    + +
    + +
    All the places have already been taken
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    +
    " +`; + +exports[`ShareEventModal > Show Private 1`] = ` +"
    +
    +
    +

    Share this event

    +
    +
    +
    + +
    + +
    + +
    This event is accessible only through it's link. Be careful where you post this link.
    +
    +
    +
    + + +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    +
    " +`; + +exports[`ShareEventModal > Show Public 1`] = ` +"
    +
    +
    +

    Share this event

    +
    +
    +
    +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/SkeletonEventResult.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/SkeletonEventResult.spec.ts.snap new file mode 100644 index 000000000..5f83d7997 --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/SkeletonEventResult.spec.ts.snap @@ -0,0 +1,62 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`SkeletonEventResult > Show column 1`] = ` +"
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    " +`; + +exports[`SkeletonEventResult > Show not minimal 1`] = ` +"
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    " +`; + +exports[`SkeletonEventResult > Show row 1`] = ` +"
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/Event/__snapshots__/TagInput.spec.ts.snap b/tests/unit/specs/components/Event/__snapshots__/TagInput.spec.ts.snap new file mode 100644 index 000000000..47074bada --- /dev/null +++ b/tests/unit/specs/components/Event/__snapshots__/TagInput.spec.ts.snap @@ -0,0 +1,42 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`TagInput > Show new 1`] = ` +"
    +
    +
    +
    +
    Hello +
    +
    +
    + + +
    +
    + + + + + + + + +
    +
    1 / 10 +
    +
    +
    + +
    " +`; diff --git a/tests/unit/specs/components/Group/GroupCard.spec.ts b/tests/unit/specs/components/Group/GroupCard.spec.ts new file mode 100644 index 000000000..32d590d4b --- /dev/null +++ b/tests/unit/specs/components/Group/GroupCard.spec.ts @@ -0,0 +1,111 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import GroupCard from "@/components/Group/GroupCard.vue"; +import { IGroup } from "@/types/actor"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const basicGroup: IGroup = { + name: "Framasoft", + preferredUsername: "framasoft", + avatar: null, + domain: "mobilizon.fr", + url: "", + summary: "", + suspended: false, + members: { total: 0, elements: [] }, + followers: { total: 0, elements: [] }, +}; + +const groupWithMedia: IGroup = { + ...basicGroup, + banner: { + url: "https://mobilizon.fr/media/a8227a16cc80b3d20ff5ee549a29c1b20a0ca1547f8861129aae9f00c3c69d12.jpg?name=framasoft%27s%20banner.jpg", + }, + avatar: { + url: "https://mobilizon.fr/media/890f5396ef80081a6b1b18a5db969746cf8bb340e8a4e657d665e41f6646c539.jpg?name=framasoft%27s%20avatar.jpg", + }, +}; + +const groupWithFollowersOrMembers: IGroup = { + ...groupWithMedia, + members: { total: 2, elements: [] }, + followers: { total: 5, elements: [] }, + summary: + "You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:h-full to apply the h-full utility at only medium screen sizes and above.", + physicalAddress: { + description: "Nantes", + }, +}; + +const generateWrapper = (props: any = {}) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(GroupCard, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("GroupCard", () => { + it("Show Empty", async () => { + const wrapper = generateWrapper({ + group: basicGroup, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show With media", async () => { + const wrapper = generateWrapper({ + group: groupWithMedia, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show with followers or members", async () => { + const wrapper = generateWrapper({ + group: groupWithFollowersOrMembers, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show Row mode", async () => { + const wrapper = generateWrapper({ + group: groupWithFollowersOrMembers, + mode: "row", + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Group/GroupMemberCard.spec.ts b/tests/unit/specs/components/Group/GroupMemberCard.spec.ts new file mode 100644 index 000000000..bb7825586 --- /dev/null +++ b/tests/unit/specs/components/Group/GroupMemberCard.spec.ts @@ -0,0 +1,120 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import GroupMemberCard from "@/components/Group/GroupMemberCard.vue"; +import { IActor } from "@/types/actor"; +import { IMember } from "@/types/actor/member.model"; +import { MemberRole } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(GroupMemberCard, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const baseActorAvatar = { + id: "", + name: "", + alt: "", + metadata: {}, + url: "https://social.tcit.fr/system/accounts/avatars/000/000/001/original/a28c50ce5f2b13fd.jpg", +}; + +const basePerson: IActor = { + name: "Thomas Citharel", + preferredUsername: "tcit", + avatar: baseActorAvatar, + domain: null, + url: "", + summary: "", + suspended: false, +}; + +const basicGroup: IActor = { + name: "Framasoft", + preferredUsername: "framasoft", + avatar: { + url: "https://mobilizon.fr/media/ff5b2d425fb73e17fcbb56a1a032359ee0b21453c11af59e103e783817a32fdf.png?name=framasoft%27s%20avatar.png", + }, + domain: "mobilizon.fr", + url: "", + summary: `

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    `, + suspended: false, + members: { total: 0, elements: [] }, + followers: { total: 0, elements: [] }, +}; + +const basicMember: IMember = { + parent: basicGroup as IActor, + actor: basePerson, + role: MemberRole.MEMBER, +}; + +const moderatorMember: IMember = { + parent: basicGroup, + actor: basePerson, + role: MemberRole.MODERATOR, +}; + +const adminMember: IMember = { + parent: basicGroup, + actor: basePerson, + role: MemberRole.ADMINISTRATOR, +}; + +describe("GroupMemberCard", () => { + it("Show simple member", async () => { + const wrapper = generateWrapper({ + member: basicMember, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show moderator", async () => { + const wrapper = generateWrapper({ + member: moderatorMember, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show administrator", async () => { + const wrapper = generateWrapper({ + member: adminMember, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupCard.spec.ts.snap b/tests/unit/specs/components/Group/__snapshots__/GroupCard.spec.ts.snap new file mode 100644 index 000000000..5dcb8bb0e --- /dev/null +++ b/tests/unit/specs/components/Group/__snapshots__/GroupCard.spec.ts.snap @@ -0,0 +1,79 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`GroupCard > Show Empty 1`] = ` +" +
    +
    +
    +
    +

    Framasoft

    @framasoft@mobilizon.fr +
    +
    +
    +
    + + +
    +
    +
    " +`; + +exports[`GroupCard > Show Row mode 1`] = ` +" +
    +
    +
    +
    +
    +
    +

    Framasoft

    @framasoft@mobilizon.fr +
    +
    +
    You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:h-full to apply the h-full utility at only medium screen sizes and above.
    +
    +
    Nantes
    +

    7 members or followers

    +
    +
    +
    " +`; + +exports[`GroupCard > Show With media 1`] = ` +" +
    +
    +
    +
    +
    +
    +

    Framasoft

    @framasoft@mobilizon.fr +
    +
    +
    +
    + + +
    +
    +
    " +`; + +exports[`GroupCard > Show with followers or members 1`] = ` +" +
    +
    +
    +
    +
    +
    +

    Framasoft

    @framasoft@mobilizon.fr +
    +
    +
    You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:h-full to apply the h-full utility at only medium screen sizes and above.
    +
    +
    Nantes
    +

    7 members or followers

    +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupMemberCard.spec.ts.snap b/tests/unit/specs/components/Group/__snapshots__/GroupMemberCard.spec.ts.snap new file mode 100644 index 000000000..b3cc28113 --- /dev/null +++ b/tests/unit/specs/components/Group/__snapshots__/GroupMemberCard.spec.ts.snap @@ -0,0 +1,123 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`GroupMemberCard > Show administrator 1`] = ` +"
    +
    +
    Thomas Citharel (@tcit) +
    +
    +
    + +
    +

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    +

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    +
    " +`; + +exports[`GroupMemberCard > Show moderator 1`] = ` +"
    +
    +
    Thomas Citharel (@tcit) +
    +
    +
    + +
    +

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    +

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    +
    " +`; + +exports[`GroupMemberCard > Show simple member 1`] = ` +"
    +
    +
    Thomas Citharel (@tcit) +
    +
    +
    + +
    +

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    +

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/Home/CategoriesPreview.spec.ts b/tests/unit/specs/components/Home/CategoriesPreview.spec.ts new file mode 100644 index 000000000..9f49a4338 --- /dev/null +++ b/tests/unit/specs/components/Home/CategoriesPreview.spec.ts @@ -0,0 +1,50 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import CategoriesPreview from "@/components/Home/CategoriesPreview.vue"; +import { CATEGORY_STATISTICS } from "@/graphql/statistics"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = () => { + const global_data = getMockClient([CATEGORY_STATISTICS]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(CategoriesPreview, { + props: {}, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("CategoriesPreview", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + expect(requestHandlers.handle_0).toHaveBeenCalledTimes(1); + expect(requestHandlers.handle_0).toHaveBeenCalledWith({}); + }); +}); diff --git a/tests/unit/specs/components/Home/MobilizonPresentation.spec.ts b/tests/unit/specs/components/Home/MobilizonPresentation.spec.ts new file mode 100644 index 000000000..3cedf169d --- /dev/null +++ b/tests/unit/specs/components/Home/MobilizonPresentation.spec.ts @@ -0,0 +1,47 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import MobilizonPresentation from "@/components/Home/MobilizonPresentation.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = () => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(MobilizonPresentation, { + props: {}, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("MobilizonPresentation", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Home/SearchFields.spec.ts b/tests/unit/specs/components/Home/SearchFields.spec.ts new file mode 100644 index 000000000..3cd186a38 --- /dev/null +++ b/tests/unit/specs/components/Home/SearchFields.spec.ts @@ -0,0 +1,50 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import SearchFields from "@/components/Home/SearchFields.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = () => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(SearchFields, { + props: { + search: "", + location: {}, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("SearchFields", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Home/UnloggedIntroduction.spec.ts b/tests/unit/specs/components/Home/UnloggedIntroduction.spec.ts new file mode 100644 index 000000000..52f827e09 --- /dev/null +++ b/tests/unit/specs/components/Home/UnloggedIntroduction.spec.ts @@ -0,0 +1,68 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import UnloggedIntroduction from "@/components/Home/UnloggedIntroduction.vue"; +import { reactive } from "vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(UnloggedIntroduction, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const mockconfig = reactive({ + name: "My instance name", + description: "An instance that doesn't exist", + slogan: "Test! Test! Test!", + registrationsOpen: true, +}); + +const mockconfigClosed = reactive({ ...config, registrationsOpen: false }); + +describe("UnloggedIntroduction", () => { + it("Show open", async () => { + const wrapper = generateWrapper({ + config: mockconfig, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show close", async () => { + const wrapper = generateWrapper({ + config: mockconfigClosed, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Home/__snapshots__/CategoriesPreview.spec.ts.snap b/tests/unit/specs/components/Home/__snapshots__/CategoriesPreview.spec.ts.snap new file mode 100644 index 000000000..1dd51cc89 --- /dev/null +++ b/tests/unit/specs/components/Home/__snapshots__/CategoriesPreview.spec.ts.snap @@ -0,0 +1,3 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`CategoriesPreview > Show simple 1`] = `""`; diff --git a/tests/unit/specs/components/Home/__snapshots__/MobilizonPresentation.spec.ts.snap b/tests/unit/specs/components/Home/__snapshots__/MobilizonPresentation.spec.ts.snap new file mode 100644 index 000000000..1a7a48655 --- /dev/null +++ b/tests/unit/specs/components/Home/__snapshots__/MobilizonPresentation.spec.ts.snap @@ -0,0 +1,23 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`MobilizonPresentation > Show simple 1`] = ` +"
    +
    +
    +

    A practical tool

    +

    Mobilizon is a tool that helps you find, create and organise events.

    +
    +
    +

    An ethical alternative

    +

    Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.

    +
    +
    +

    A federated software

    +

    Mobilizon is not a giant platform, but a multitude of interconnected Mobilizon websites.

    +
    +
    + +
    " +`; diff --git a/tests/unit/specs/components/Home/__snapshots__/SearchFields.spec.ts.snap b/tests/unit/specs/components/Home/__snapshots__/SearchFields.spec.ts.snap new file mode 100644 index 000000000..122463629 --- /dev/null +++ b/tests/unit/specs/components/Home/__snapshots__/SearchFields.spec.ts.snap @@ -0,0 +1,21 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`SearchFields > Show simple 1`] = ` +"" +`; diff --git a/tests/unit/specs/components/Home/__snapshots__/UnloggedIntroduction.spec.ts.snap b/tests/unit/specs/components/Home/__snapshots__/UnloggedIntroduction.spec.ts.snap new file mode 100644 index 000000000..847097be7 --- /dev/null +++ b/tests/unit/specs/components/Home/__snapshots__/UnloggedIntroduction.spec.ts.snap @@ -0,0 +1,15 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`UnloggedIntroduction > Show close 1`] = ` +"
    +

    Gather ⋅ Organize ⋅ Mobilize

    +

    +
    " +`; + +exports[`UnloggedIntroduction > Show open 1`] = ` +"
    +

    Test! Test! Test!

    +

    An instance that doesn't exist

    +
    " +`; diff --git a/tests/unit/specs/components/Post/SharePostModal.spec.ts b/tests/unit/specs/components/Post/SharePostModal.spec.ts new file mode 100644 index 000000000..094aaff50 --- /dev/null +++ b/tests/unit/specs/components/Post/SharePostModal.spec.ts @@ -0,0 +1,64 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import SharePostModal from "@/components/Post/SharePostModal.vue"; +import { PostVisibility } from "@/types/enums"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (props: any = {}) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(SharePostModal, { + props: props, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +const post = { + title: "hello", + url: "https://mobilizon.fr/p/an-uuid", +}; + +describe("SharePostModal", () => { + it("Show public", async () => { + const wrapper = generateWrapper({ + post: { ...post, visibility: PostVisibility.PUBLIC }, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show private", async () => { + const wrapper = generateWrapper({ + post: post, + }); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/Post/__snapshots__/SharePostModal.spec.ts.snap b/tests/unit/specs/components/Post/__snapshots__/SharePostModal.spec.ts.snap new file mode 100644 index 000000000..7f097f3bb --- /dev/null +++ b/tests/unit/specs/components/Post/__snapshots__/SharePostModal.spec.ts.snap @@ -0,0 +1,69 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`SharePostModal > Show private 1`] = ` +"
    +
    +

    Share this post

    +
    +
    +
    +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    " +`; + +exports[`SharePostModal > Show public 1`] = ` +"
    +
    +

    Share this post

    +
    +
    +
    +
    +
    +
    +
    + + + +
    +

    +

    + + + + + +
    +

    +
    +
    + +
    + +
    +
    +
    " +`; diff --git a/tests/unit/specs/components/User/AuthProviders.spec.ts b/tests/unit/specs/components/User/AuthProviders.spec.ts new file mode 100644 index 000000000..8df4c4753 --- /dev/null +++ b/tests/unit/specs/components/User/AuthProviders.spec.ts @@ -0,0 +1,51 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, mount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import AuthProviders from "@/components/User/AuthProviders.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const providers = [{ id: "keycloak", label: "Entreprise" }, { id: "google" }]; + +const generateWrapper = () => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return mount(AuthProviders, { + props: { + oauthProviders: providers, + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("AuthProviders", () => { + it("Show simple", async () => { + const wrapper = generateWrapper(); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/User/__snapshots__/AuthProviders.spec.ts.snap b/tests/unit/specs/components/User/__snapshots__/AuthProviders.spec.ts.snap new file mode 100644 index 000000000..85514b502 --- /dev/null +++ b/tests/unit/specs/components/User/__snapshots__/AuthProviders.spec.ts.snap @@ -0,0 +1,11 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`AuthProviders > Show simple 1`] = ` +"" +`; diff --git a/tests/unit/specs/components/core/MaterialIcon.spec.ts b/tests/unit/specs/components/core/MaterialIcon.spec.ts new file mode 100644 index 000000000..a1aa1daad --- /dev/null +++ b/tests/unit/specs/components/core/MaterialIcon.spec.ts @@ -0,0 +1,63 @@ +import { beforeEach, describe, it, expect } from "vitest"; +import { enUS } from "date-fns/locale"; +import { routes } from "@/router"; +import { createRouter, createWebHistory, Router } from "vue-router"; +import { config, shallowMount } from "@vue/test-utils"; +import { Oruga } from "@oruga-ui/oruga-next"; +import flushPromises from "flush-promises"; +import { getMockClient, requestHandlers } from "../../mocks/client"; +import { htmlRemoveId } from "../../common"; +import MaterialIcon from "@/components/core/MaterialIcon.vue"; + +config.global.plugins.push(Oruga); + +let router: Router; + +beforeEach(async () => { + router = createRouter({ + history: createWebHistory(), + routes: routes, + }); + + // await router.isReady(); +}); + +const generateWrapper = (iconname: string) => { + const global_data = getMockClient([]); + global_data.provide.dateFnsLocale = enUS; + global_data.plugins = [router]; + return shallowMount(MaterialIcon, { + props: { + icon: ["", iconname], + }, + global: { + ...global_data, + stubs: { + RouterLink: false, + }, + }, + }); +}; + +describe("MaterialIcon", () => { + it("Show GoogleHangouts", async () => { + const wrapper = generateWrapper("GoogleHangouts"); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show CalendarStar", async () => { + const wrapper = generateWrapper("CalendarStar"); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); + + it("Show account-multiple-plus", async () => { + const wrapper = generateWrapper("account-multiple-plus"); + await wrapper.vm.$nextTick(); + await flushPromises(); + expect(htmlRemoveId(wrapper.html())).toMatchSnapshot(); + }); +}); diff --git a/tests/unit/specs/components/core/__snapshots__/MaterialIcon.spec.ts.snap b/tests/unit/specs/components/core/__snapshots__/MaterialIcon.spec.ts.snap new file mode 100644 index 000000000..dc3602fa5 --- /dev/null +++ b/tests/unit/specs/components/core/__snapshots__/MaterialIcon.spec.ts.snap @@ -0,0 +1,7 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`MaterialIcon > Show CalendarStar 1`] = `""`; + +exports[`MaterialIcon > Show GoogleHangouts 1`] = `""`; + +exports[`MaterialIcon > Show account-multiple-plus 1`] = `""`; diff --git a/tests/unit/specs/components/stories/ActorCardStory.spec.ts b/tests/unit/specs/components/stories/ActorCardStory.spec.ts deleted file mode 100644 index 2542b39b3..000000000 --- a/tests/unit/specs/components/stories/ActorCardStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import ActorCardStory from "@/components/Account/ActorCard.story.vue"; - -describe("Actor Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(ActorCardStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/ActorInlineStory.spec.ts b/tests/unit/specs/components/stories/ActorInlineStory.spec.ts deleted file mode 100644 index 8c820eebc..000000000 --- a/tests/unit/specs/components/stories/ActorInlineStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import ActorInlineStory from "@/components/Account/ActorInline.story.vue"; - -describe("Actor Inline Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(ActorInlineStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/AddressInfoStory.spec.ts b/tests/unit/specs/components/stories/AddressInfoStory.spec.ts deleted file mode 100644 index 03d6c84a7..000000000 --- a/tests/unit/specs/components/stories/AddressInfoStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import AddressInfoStory from "@/components/Address/AddressInfo.story.vue"; - -describe("Address Info Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(AddressInfoStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/AuthProvidersStory.spec.ts b/tests/unit/specs/components/stories/AuthProvidersStory.spec.ts deleted file mode 100644 index a5192c79b..000000000 --- a/tests/unit/specs/components/stories/AuthProvidersStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import AuthProvidersStory from "@/components/User/AuthProviders.story.vue"; - -describe("Auth Providers Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(AuthProvidersStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/CategoriesPreviewStory.spec.ts b/tests/unit/specs/components/stories/CategoriesPreviewStory.spec.ts deleted file mode 100644 index 911f39133..000000000 --- a/tests/unit/specs/components/stories/CategoriesPreviewStory.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import CategoriesPreviewStory from "@/components/Home/CategoriesPreview.story.vue"; -import { getMockClient } from "../../mocks/client"; -import { CATEGORY_STATISTICS } from "@/graphql/statistics"; - -describe("Categories Preview Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(CategoriesPreviewStory, { - global: getMockClient([CATEGORY_STATISTICS]), - }); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/CategoryCardStory.spec.ts b/tests/unit/specs/components/stories/CategoryCardStory.spec.ts deleted file mode 100644 index 13ed91194..000000000 --- a/tests/unit/specs/components/stories/CategoryCardStory.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { afterEach, describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import CategoryCardStory from "@/components/Categories/CategoryCard.story.vue"; - -describe("Category Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(CategoryCardStory); - }; - afterEach(() => {}); - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/DateCalendarIconStory.spec.ts b/tests/unit/specs/components/stories/DateCalendarIconStory.spec.ts deleted file mode 100644 index ebccf0c4e..000000000 --- a/tests/unit/specs/components/stories/DateCalendarIconStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import DateCalendarIconStory from "@/components/Event/DateCalendarIcon.story.vue"; - -describe("Date Calendar Icon Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(DateCalendarIconStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/DiscussionListItemStory.spec.ts b/tests/unit/specs/components/stories/DiscussionListItemStory.spec.ts deleted file mode 100644 index 400e4ddf4..000000000 --- a/tests/unit/specs/components/stories/DiscussionListItemStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import DiscussionListItemStory from "@/components/Discussion/DiscussionListItem.story.vue"; - -describe("Discussion List Item Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(DiscussionListItemStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/EventCardStory.spec.ts b/tests/unit/specs/components/stories/EventCardStory.spec.ts deleted file mode 100644 index 11d70d806..000000000 --- a/tests/unit/specs/components/stories/EventCardStory.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { beforeEach, describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import EventCardStory from "@/components/Event/EventCard.story.vue"; -import { - createMockIntersectionObserver, - getMockClient, -} from "../../mocks/client"; -import { CONFIG } from "@/graphql/config"; // - -describe("Event Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(EventCardStory, { - global: getMockClient([CONFIG]), - }); - }; - beforeEach(() => { - createMockIntersectionObserver(); - }); - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/EventListViewCardStory.spec.ts b/tests/unit/specs/components/stories/EventListViewCardStory.spec.ts deleted file mode 100644 index 4a2f39361..000000000 --- a/tests/unit/specs/components/stories/EventListViewCardStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import EventListViewCardStory from "@/components/Event/EventListViewCard.story.vue"; - -describe("Event List View Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(EventListViewCardStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/GroupCardStory.spec.ts b/tests/unit/specs/components/stories/GroupCardStory.spec.ts deleted file mode 100644 index 6a1c26b3d..000000000 --- a/tests/unit/specs/components/stories/GroupCardStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import GroupCardStory from "@/components/Group/GroupCard.story.vue"; - -describe("Group Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(GroupCardStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/GroupMemberCardStory.spec.ts b/tests/unit/specs/components/stories/GroupMemberCardStory.spec.ts deleted file mode 100644 index 1eb7514d6..000000000 --- a/tests/unit/specs/components/stories/GroupMemberCardStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import GroupMemberCardStory from "@/components/Group/GroupMemberCard.story.vue"; - -describe("Group Member Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(GroupMemberCardStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/InlineAddressStory.spec.ts b/tests/unit/specs/components/stories/InlineAddressStory.spec.ts deleted file mode 100644 index f8d2233a0..000000000 --- a/tests/unit/specs/components/stories/InlineAddressStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import InlineAddressStory from "@/components/Address/InlineAddress.story.vue"; - -describe("Inline Address Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(InlineAddressStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/InstanceContactLinkStory.spec.ts b/tests/unit/specs/components/stories/InstanceContactLinkStory.spec.ts deleted file mode 100644 index 369079ef2..000000000 --- a/tests/unit/specs/components/stories/InstanceContactLinkStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import InstanceContactLinkStory from "@/components/About/InstanceContactLink.story.vue"; -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; - -describe("Instance Contact Link Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(InstanceContactLinkStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/MaterialIconStory.spec.ts b/tests/unit/specs/components/stories/MaterialIconStory.spec.ts deleted file mode 100644 index 2033e44b7..000000000 --- a/tests/unit/specs/components/stories/MaterialIconStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import MaterialIconStory from "@/components/core/MaterialIcon.story.vue"; - -describe("Material Icon Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(MaterialIconStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/MobilizonPresentationStory.spec.ts b/tests/unit/specs/components/stories/MobilizonPresentationStory.spec.ts deleted file mode 100644 index 06dcd5cf7..000000000 --- a/tests/unit/specs/components/stories/MobilizonPresentationStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import MobilizonPresentationStory from "@/components/Home/MobilizonPresentation.story.vue"; - -describe("Mobilizon Presentation Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(MobilizonPresentationStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/PopoverActorCardStory.spec.ts b/tests/unit/specs/components/stories/PopoverActorCardStory.spec.ts deleted file mode 100644 index fc2388971..000000000 --- a/tests/unit/specs/components/stories/PopoverActorCardStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import PopoverActorCardStory from "@/components/Account/PopoverActorCard.story.vue"; - -describe("Popover Actor Card Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(PopoverActorCardStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/PostListItemStory.spec.ts b/tests/unit/specs/components/stories/PostListItemStory.spec.ts deleted file mode 100644 index 6eb9147e8..000000000 --- a/tests/unit/specs/components/stories/PostListItemStory.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { beforeEach, describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import PostListItemStory from "@/components/Post/PostListItem.story.vue"; -import { - createMockIntersectionObserver, - getMockClient, -} from "../../mocks/client"; -import { CONFIG } from "@/graphql/config"; - -describe("Post List Item Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(PostListItemStory, { - global: getMockClient([CONFIG]), - }); - }; - beforeEach(() => { - createMockIntersectionObserver(); - }); - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/ProfileOnboardingStory.spec.ts b/tests/unit/specs/components/stories/ProfileOnboardingStory.spec.ts deleted file mode 100644 index d44127c71..000000000 --- a/tests/unit/specs/components/stories/ProfileOnboardingStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import ProfileOnboardingStory from "@/components/Account/ProfileOnboarding.story.vue"; - -describe("Profile On boarding Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(ProfileOnboardingStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/ShareEventModalStory.spec.ts b/tests/unit/specs/components/stories/ShareEventModalStory.spec.ts deleted file mode 100644 index 98bd4b148..000000000 --- a/tests/unit/specs/components/stories/ShareEventModalStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import ShareEventModalStory from "@/components/Event/ShareEventModal.story.vue"; - -describe("Share Event Modal Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(ShareEventModalStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/SharePostModalStory.spec.ts b/tests/unit/specs/components/stories/SharePostModalStory.spec.ts deleted file mode 100644 index b41fffbb2..000000000 --- a/tests/unit/specs/components/stories/SharePostModalStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import SharePostModalStory from "@/components/Post/SharePostModal.story.vue"; - -describe("Share Post Modal Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(SharePostModalStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/SkeletonEventResultStory.spec.ts b/tests/unit/specs/components/stories/SkeletonEventResultStory.spec.ts deleted file mode 100644 index 1db68086f..000000000 --- a/tests/unit/specs/components/stories/SkeletonEventResultStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import SkeletonEventResultStory from "@/components/Event/SkeletonEventResult.story.vue"; - -describe("Skeleton Event Result Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(SkeletonEventResultStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/TagInputStory.spec.ts b/tests/unit/specs/components/stories/TagInputStory.spec.ts deleted file mode 100644 index ffc9eeb67..000000000 --- a/tests/unit/specs/components/stories/TagInputStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import TagInputStory from "@/components/Event/TagInput.story.vue"; - -describe("Tag Input Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(TagInputStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/UnloggedIntroductionStory.spec.ts b/tests/unit/specs/components/stories/UnloggedIntroductionStory.spec.ts deleted file mode 100644 index 5ff18b62f..000000000 --- a/tests/unit/specs/components/stories/UnloggedIntroductionStory.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { describe, expect, it } from "vitest"; -import { mount, VueWrapper } from "@vue/test-utils"; -import UnloggedIntroductionStory from "@/components/Home/UnloggedIntroduction.story.vue"; - -describe("Unlogged Introduction Story", () => { - let wrapper: VueWrapper; - - const generateWrapper = () => { - wrapper = mount(UnloggedIntroductionStory); - }; - it("Default", async () => { - generateWrapper(); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/tests/unit/specs/components/stories/__snapshots__/ActorCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/ActorCardStory.spec.ts.snap deleted file mode 100644 index 75780292e..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/ActorCardStory.spec.ts.snap +++ /dev/null @@ -1,110 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Actor Card Story > Default 1`] = ` -" - -
    -
    -
    -
    Thomas Citharel
    -

    @tcit

    - - -
    -
    - -
    -
    - -
    - -
    -
    -
    -
    -
    -
    Framasoft
    -

    @framasoft@framapiaf.org

    - - -
    -
    - -
    -
    - -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/ActorInlineStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/ActorInlineStory.spec.ts.snap deleted file mode 100644 index 4a259664d..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/ActorInlineStory.spec.ts.snap +++ /dev/null @@ -1,26 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Actor Inline Story > Default 1`] = ` -" - -
    -
    -
    -

    Thomas Citharel

    -

    @tcit

    -
    -
    -
    - -
    -
    -
    -
    -
    -

    Framasoft

    -

    @framasoft@framapiaf.org

    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/AddressInfoStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/AddressInfoStory.spec.ts.snap deleted file mode 100644 index 268fd0394..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/AddressInfoStory.spec.ts.snap +++ /dev/null @@ -1,20 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Address Info Story > Default 1`] = ` -" - -
    - -

    Locaux Motiv
    10 Rue Jangot, 69007, Lyon
    - -

    -
    -
    - -
    - -

    Locaux Motiv
    10 Rue Jangot, 69007, Lyon
    🌐 heure d’été irlandaise (UTC+1)

    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/AuthProvidersStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/AuthProvidersStory.spec.ts.snap deleted file mode 100644 index 4c0d14cfb..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/AuthProvidersStory.spec.ts.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Auth Providers Story > Default 1`] = ` -" - -
    Sign in with -
    - Entreprise - Google -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/CategoriesPreviewStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/CategoriesPreviewStory.spec.ts.snap deleted file mode 100644 index aeb6e697d..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/CategoriesPreviewStory.spec.ts.snap +++ /dev/null @@ -1,11 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Categories Preview Story > Default 1`] = ` -" - - - -" -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/CategoryCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/CategoryCardStory.spec.ts.snap deleted file mode 100644 index d5b4e968d..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/CategoryCardStory.spec.ts.snap +++ /dev/null @@ -1,33 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Category Card Story > Default 1`] = ` -" - -
    - - - - - -
    -

    Hello

    -
    - -
    -
    -
    - -
    - - - - - -
    -

    Hello

    -
    5 events -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/DateCalendarIconStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/DateCalendarIconStory.spec.ts.snap deleted file mode 100644 index 3856f5983..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/DateCalendarIconStory.spec.ts.snap +++ /dev/null @@ -1,20 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Date Calendar Icon Story > Default 1`] = ` -" - -
    -
    -
    - -
    -
    - -
    -
    -
    - -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/DiscussionCommentStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/DiscussionCommentStory.spec.ts.snap deleted file mode 100644 index 5c522f1dd..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/DiscussionCommentStory.spec.ts.snap +++ /dev/null @@ -1,87 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Discussion Comment Story > Default 1`] = ` -" - -
    -
    -
    -
    -
    -
    -
    Thomas Citharel@tcit
    Edit Delete -
    - -
    -
    -
    -
    Hello there
    - -
    -
    -
    - -
    -
    -

    Report this comment

    -
    -
    -
    - -

    The report will be sent to the moderators of your instance. You can explain why you report this content below.

    -
    -
    - - - - - -
    -
    -
    - Cancel - Send the report -
    -
    -
    -
    - -
    -
    -
    -
    [deleted] - -
    - -
    -
    -
    [This comment has been deleted by it's author]
    -
    -
    - -
    -
    -

    Report this comment

    -
    -
    -
    - -

    The report will be sent to the moderators of your instance. You can explain why you report this content below.

    -
    -
    - - - - - -
    -
    -
    - Cancel - Send the report -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/DiscussionListItemStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/DiscussionListItemStory.spec.ts.snap deleted file mode 100644 index e057d3cba..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/DiscussionListItemStory.spec.ts.snap +++ /dev/null @@ -1,28 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Discussion List Item Story > Default 1`] = ` -" - - -
    -
    -
    -

    A discussion

    0 seconds -
    -
    -
    -
    -
    - - -
    -
    -
    -

    A discussion

    0 seconds -
    -
    [This comment has been deleted]
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/EventCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/EventCardStory.spec.ts.snap deleted file mode 100644 index 06cf0e0b8..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/EventCardStory.spec.ts.snap +++ /dev/null @@ -1,262 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Event Card Story > Default 1`] = ` -" - - -
    - -
    -
    -
    - - - -
    -
    -
    - - - Something -
    -
    -
    -
    -
    - - -
    -

    A very interesting event

    -
    -
    -
    Hello -
    -
    Somewhere
    - -
    -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - - - -
    -
    -
    - - - Something -
    -
    -
    -
    -
    - - -
    -

    A very long title that will have trouble to display because it will take multiple lines but where will it stop ?! Maybe after 3 lines is enough. Let's say so. But if it doesn't work, we really need to truncate it at some point. Definitively.

    -
    -
    -
    Hello -
    -
    Somewhere
    - -
    -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - - - -
    -
    -
    Tentative - - Something -
    -
    -
    -
    -
    - - -
    -

    A very interesting event

    -
    -
    -
    Hello -
    -
    Somewhere
    - -
    -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - - - -
    -
    -
    - Cancelled - Something -
    -
    -
    -
    -
    - - -
    -

    A very interesting event

    -
    -
    -
    Hello -
    -
    Somewhere
    - -
    -
    -
    -
    -
    -
    - - -
    - -
    -
    -
    - - - -
    -
    - -
    -
    -
    -
    - - -
    -

    A very long title that will have trouble to display because it will take multiple lines but where will it stop ?! Maybe after 3 lines is enough. Let's say so. But if it doesn't work, we really need to truncate it at some point. Definitively.

    -
    -
    -
    Hello -
    -
    Somewhere
    - -
    -
    -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/EventListViewCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/EventListViewCardStory.spec.ts.snap deleted file mode 100644 index e095c3ee5..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/EventListViewCardStory.spec.ts.snap +++ /dev/null @@ -1,59 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Event List View Card Story > Default 1`] = ` -" - -
    -
    -
    -
    -
    -
    - -
    -
    - -

    A very interesting event

    -
    -
    -
    - Published by Hello -
    -
    - - 0 participants -
    -
    -
    - -
    -
    -
    -
    -
    -
    - -
    -
    - -

    A very long title that will have trouble to display because it will take multiple lines but where will it stop ?! Maybe after 3 lines is enough. Let's say so.

    -
    -
    -
    - Published by Hello -
    -
    - - 0 participants -
    -
    -
    - -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/GroupCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/GroupCardStory.spec.ts.snap deleted file mode 100644 index 88b3a5ae1..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/GroupCardStory.spec.ts.snap +++ /dev/null @@ -1,86 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Group Card Story > Default 1`] = ` -" - -
    - -
    -
    -
    -
    -

    Framasoft

    @framasoft@mobilizon.fr -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    Framasoft

    @framasoft@mobilizon.fr -
    -
    -
    -
    - - -
    -
    -
    -
    -
    - -
    - -
    -
    -
    -
    -
    -
    -

    Framasoft

    @framasoft@mobilizon.fr -
    -
    -
    You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:h-full to apply the h-full utility at only medium screen sizes and above.
    -
    -
    Nantes
    -

    7 members or followers

    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    -
    -
    -

    Framasoft

    @framasoft@mobilizon.fr -
    -
    -
    You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:h-full to apply the h-full utility at only medium screen sizes and above.
    -
    -
    Nantes
    -

    7 members or followers

    -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/GroupMemberCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/GroupMemberCardStory.spec.ts.snap deleted file mode 100644 index 67bd3ee3e..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/GroupMemberCardStory.spec.ts.snap +++ /dev/null @@ -1,107 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Group Member Card Story > Default 1`] = ` -" - -
    -
    -
    -
    Thomas Citharel (@tcit) -
    -
    -
    -
    -
    -
    -
    -
    - -

    Framasoft

    -
    @framasoft@mobilizon.fr - -
    -
    -
    -
    -
    -

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    -

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    -
    -
    -
    - - Leave - -
    -
    -
    -
    -
    - -
    -
    -
    -
    Thomas Citharel (@tcit) -
    -
    -
    -
    -
    -
    -
    -
    - -

    Framasoft

    -
    @framasoft@mobilizon.frModerator
    -
    -
    -
    -
    -

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    -

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    -
    -
    -
    - - Leave - -
    -
    -
    -
    -
    - -
    -
    -
    -
    Thomas Citharel (@tcit) -
    -
    -
    -
    -
    -
    -
    -
    - -

    Framasoft

    -
    @framasoft@mobilizon.frAdministrator
    -
    -
    -
    -
    -

    La Fediverse, c'est la Fédération qui englobe l'Univers des réseaux sociaux libres et décentralisés, dont Mobilizon (évènements), Mastodon (microblog), Peertube (vidéos), Pixelfed (photos), Funkwhale (musique), Matrix (messagerie instantanée)... et tant d'autres font partie.

    -

    Et "La Fediverse Nantaise" est un collectif cherchant à faire connaître localement tout le potentiel de ces réseaux ! :-)

    -
    -
    -
    - - Leave - -
    -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/InlineAddressStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/InlineAddressStory.spec.ts.snap deleted file mode 100644 index 0edc634b4..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/InlineAddressStory.spec.ts.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Inline Address Story > Default 1`] = ` -" - -
    Lyon
    -
    - -
    Locaux Motiv
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/InstanceContactLinkStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/InstanceContactLinkStory.spec.ts.snap deleted file mode 100644 index 846b5afb1..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/InstanceContactLinkStory.spec.ts.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Instance Contact Link Story > Default 1`] = ` -" - -

    contact uninformed

    -
    - -

    someone

    -
    - -

    someone@somewhere.tld

    -
    - -

    somewhere.com

    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/MaterialIconStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/MaterialIconStory.spec.ts.snap deleted file mode 100644 index ac624fea6..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/MaterialIconStory.spec.ts.snap +++ /dev/null @@ -1,15 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Material Icon Story > Default 1`] = ` -" - - - - - - - - - -" -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/MobilizonPresentationStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/MobilizonPresentationStory.spec.ts.snap deleted file mode 100644 index 446953f30..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/MobilizonPresentationStory.spec.ts.snap +++ /dev/null @@ -1,27 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Mobilizon Presentation Story > Default 1`] = ` -" - -
    -
    -
    -

    A practical tool

    -

    Mobilizon is a tool that helps you find, create and organise events.

    -
    -
    -

    An ethical alternative

    -

    Ethical alternative to Facebook events, groups and pages, Mobilizon is a tool designed to serve you. Period.

    -
    -
    -

    A federated software

    -

    Mobilizon is not a giant platform, but a multitude of interconnected Mobilizon websites.

    -
    -
    -
    - Learn more about Mobilizon -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/PopoverActorCardStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/PopoverActorCardStory.spec.ts.snap deleted file mode 100644 index 5094b67ff..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/PopoverActorCardStory.spec.ts.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Popover Actor Card Story > Default 1`] = ` -" - -
    - -
    Popover me !
    -
    -
    -
    - -
    - -
    Popover me !
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/PostListItemStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/PostListItemStory.spec.ts.snap deleted file mode 100644 index d92c6bd9e..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/PostListItemStory.spec.ts.snap +++ /dev/null @@ -1,60 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Post List Item Story > Default 1`] = ` -" - - -
    -
    - - - -
    -
    -
    -

    Musique sur Nantes : un groupe à développer ensemble !

    -

    less than a minute ago

    -
    MusiqueConcert
    - - -
    -
    -
    - - -
    -
    - - - -
    -
    -
    -

    Musique sur Nantes : un groupe à développer ensemble ! Musique sur Nantes : un groupe à développer ensemble !

    -

    less than a minute ago

    -
    MusiqueConcertVeryLongTagWhatHappensThen
    - - -
    -
    -
    - - -
    -
    - - - -
    -
    -
    -

    Musique sur Nantes : un groupe à développer ensemble ! Musique sur Nantes : un groupe à développer ensemble !

    -

    less than a minute ago

    -
    MusiqueConcertVeryLongTagWhatHappensThen
    -

    Published by I'm the author

    - -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/ProfileOnboardingStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/ProfileOnboardingStory.spec.ts.snap deleted file mode 100644 index 883a2581c..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/ProfileOnboardingStory.spec.ts.snap +++ /dev/null @@ -1,19 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Profile On boarding Story > Default 1`] = ` -" - -
    -
    -

    Profiles and federation

    -
    -

    Mobilizon uses a system of profiles to compartiment your activities. You will be able to create as many profiles as you want.

    -
    -

    Mobilizon is a federated software, meaning you can interact - depending on your admin's federation settings - with content from other instances, such as joining groups or events that were created elsewhere.This instance, Instance name (localhost), hosts your profile, so remember its name.

    -
    -

    If you are being asked for your federated indentity, it's composed of your username and your instance. For instance, the federated identity for your first profile is:

    -
    tcit@localhost
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/ShareEventModalStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/ShareEventModalStory.spec.ts.snap deleted file mode 100644 index 163075790..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/ShareEventModalStory.spec.ts.snap +++ /dev/null @@ -1,99 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Share Event Modal Story > Default 1`] = ` -" - -
    -
    -
    -

    Share this event

    -
    -
    - -
    -
    -
    -
    - -
    -
    -
    -

    Share this event

    -
    -
    -
    - This event is accessible only through it's link. Be careful where you post this link. - - - - -

    - - -

    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -

    Share this event

    -
    -
    -
    - - This event has been cancelled. - - - -

    - - -

    -
    - -
    -
    -
    -
    -
    - -
    -
    -
    -

    Share this event

    -
    -
    -
    - - - All the places have already been taken - - -

    - - -

    -
    - -
    -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/SharePostModalStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/SharePostModalStory.spec.ts.snap deleted file mode 100644 index 4e8fcaa9e..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/SharePostModalStory.spec.ts.snap +++ /dev/null @@ -1,44 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Share Post Modal Story > Default 1`] = ` -" - -
    -
    -

    Share this post

    -
    -
    - -
    -
    -
    - -
    -
    -

    Share this post

    -
    -
    - -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/SkeletonEventResultStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/SkeletonEventResultStory.spec.ts.snap deleted file mode 100644 index 23f26e63f..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/SkeletonEventResultStory.spec.ts.snap +++ /dev/null @@ -1,64 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Skeleton Event Result Story > Default 1`] = ` -" - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/TagInputStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/TagInputStory.spec.ts.snap deleted file mode 100644 index 3263721de..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/TagInputStory.spec.ts.snap +++ /dev/null @@ -1,14 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Tag Input Story > Default 1`] = ` -" - - - - - - -" -`; diff --git a/tests/unit/specs/components/stories/__snapshots__/UnloggedIntroductionStory.spec.ts.snap b/tests/unit/specs/components/stories/__snapshots__/UnloggedIntroductionStory.spec.ts.snap deleted file mode 100644 index 99c0e832d..000000000 --- a/tests/unit/specs/components/stories/__snapshots__/UnloggedIntroductionStory.spec.ts.snap +++ /dev/null @@ -1,18 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`Unlogged Introduction Story > Default 1`] = ` -" - -
    -

    Test! Test! Test!

    -

    An instance that doesn't exist

    -
    -
    - -
    -

    Test! Test! Test!

    -

    An instance that doesn't exist

    -
    -
    -
    " -`; diff --git a/tests/unit/specs/components/Group/CreateView.spec.ts b/tests/unit/specs/views/Group/CreateView.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/CreateView.spec.ts rename to tests/unit/specs/views/Group/CreateView.spec.ts diff --git a/tests/unit/specs/components/Group/GroupFollowers.spec.ts b/tests/unit/specs/views/Group/GroupFollowers.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/GroupFollowers.spec.ts rename to tests/unit/specs/views/Group/GroupFollowers.spec.ts diff --git a/tests/unit/specs/components/Group/GroupMembers.spec.ts b/tests/unit/specs/views/Group/GroupMembers.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/GroupMembers.spec.ts rename to tests/unit/specs/views/Group/GroupMembers.spec.ts diff --git a/tests/unit/specs/components/Group/GroupSettings.spec.ts b/tests/unit/specs/views/Group/GroupSettings.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/GroupSettings.spec.ts rename to tests/unit/specs/views/Group/GroupSettings.spec.ts diff --git a/tests/unit/specs/components/Group/GroupView.spec.ts b/tests/unit/specs/views/Group/GroupView.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/GroupView.spec.ts rename to tests/unit/specs/views/Group/GroupView.spec.ts diff --git a/tests/unit/specs/components/Group/MyGroups.spec.ts b/tests/unit/specs/views/Group/MyGroups.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/MyGroups.spec.ts rename to tests/unit/specs/views/Group/MyGroups.spec.ts diff --git a/tests/unit/specs/components/Group/SettingsView.spec.ts b/tests/unit/specs/views/Group/SettingsView.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/SettingsView.spec.ts rename to tests/unit/specs/views/Group/SettingsView.spec.ts diff --git a/tests/unit/specs/components/Group/TimelineView.spec.ts b/tests/unit/specs/views/Group/TimelineView.spec.ts similarity index 100% rename from tests/unit/specs/components/Group/TimelineView.spec.ts rename to tests/unit/specs/views/Group/TimelineView.spec.ts diff --git a/tests/unit/specs/components/Group/__snapshots__/CreateView.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/CreateView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/CreateView.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/CreateView.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupFollowers.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/GroupFollowers.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/GroupFollowers.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/GroupFollowers.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupMembers.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/GroupMembers.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/GroupMembers.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/GroupMembers.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupSettings.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/GroupSettings.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/GroupSettings.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/GroupSettings.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/GroupView.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/GroupView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/GroupView.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/GroupView.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/MyGroups.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/MyGroups.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/MyGroups.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/MyGroups.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/SettingsView.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/SettingsView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/SettingsView.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/SettingsView.spec.ts.snap diff --git a/tests/unit/specs/components/Group/__snapshots__/TimelineView.spec.ts.snap b/tests/unit/specs/views/Group/__snapshots__/TimelineView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/Group/__snapshots__/TimelineView.spec.ts.snap rename to tests/unit/specs/views/Group/__snapshots__/TimelineView.spec.ts.snap diff --git a/tests/unit/specs/components/User/PasswordReset.spec.ts b/tests/unit/specs/views/User/PasswordReset.spec.ts similarity index 100% rename from tests/unit/specs/components/User/PasswordReset.spec.ts rename to tests/unit/specs/views/User/PasswordReset.spec.ts diff --git a/tests/unit/specs/components/User/RegisterView.spec.ts b/tests/unit/specs/views/User/RegisterView.spec.ts similarity index 100% rename from tests/unit/specs/components/User/RegisterView.spec.ts rename to tests/unit/specs/views/User/RegisterView.spec.ts diff --git a/tests/unit/specs/components/User/ValidateUser.spec.ts b/tests/unit/specs/views/User/ValidateUser.spec.ts similarity index 100% rename from tests/unit/specs/components/User/ValidateUser.spec.ts rename to tests/unit/specs/views/User/ValidateUser.spec.ts diff --git a/tests/unit/specs/components/User/__snapshots__/RegisterView.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/RegisterView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/RegisterView.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/RegisterView.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/ValidateUser.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/ValidateUser.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/ValidateUser.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/ValidateUser.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/emailValidate.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/emailValidate.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/emailValidate.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/emailValidate.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/providerValidation.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/providerValidation.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/providerValidation.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/providerValidation.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/resendConfirmation.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/resendConfirmation.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/resendConfirmation.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/resendConfirmation.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/sendPasswordReset.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/sendPasswordReset.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/sendPasswordReset.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/sendPasswordReset.spec.ts.snap diff --git a/tests/unit/specs/components/User/__snapshots__/settingsOnboard.spec.ts.snap b/tests/unit/specs/views/User/__snapshots__/settingsOnboard.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/User/__snapshots__/settingsOnboard.spec.ts.snap rename to tests/unit/specs/views/User/__snapshots__/settingsOnboard.spec.ts.snap diff --git a/tests/unit/specs/components/User/emailValidate.spec.ts b/tests/unit/specs/views/User/emailValidate.spec.ts similarity index 100% rename from tests/unit/specs/components/User/emailValidate.spec.ts rename to tests/unit/specs/views/User/emailValidate.spec.ts diff --git a/tests/unit/specs/components/User/login.spec.ts b/tests/unit/specs/views/User/login.spec.ts similarity index 100% rename from tests/unit/specs/components/User/login.spec.ts rename to tests/unit/specs/views/User/login.spec.ts diff --git a/tests/unit/specs/components/User/providerValidation.spec.ts b/tests/unit/specs/views/User/providerValidation.spec.ts similarity index 100% rename from tests/unit/specs/components/User/providerValidation.spec.ts rename to tests/unit/specs/views/User/providerValidation.spec.ts diff --git a/tests/unit/specs/components/User/resendConfirmation.spec.ts b/tests/unit/specs/views/User/resendConfirmation.spec.ts similarity index 100% rename from tests/unit/specs/components/User/resendConfirmation.spec.ts rename to tests/unit/specs/views/User/resendConfirmation.spec.ts diff --git a/tests/unit/specs/components/User/sendPasswordReset.spec.ts b/tests/unit/specs/views/User/sendPasswordReset.spec.ts similarity index 100% rename from tests/unit/specs/components/User/sendPasswordReset.spec.ts rename to tests/unit/specs/views/User/sendPasswordReset.spec.ts diff --git a/tests/unit/specs/components/User/settingsOnboard.spec.ts b/tests/unit/specs/views/User/settingsOnboard.spec.ts similarity index 100% rename from tests/unit/specs/components/User/settingsOnboard.spec.ts rename to tests/unit/specs/views/User/settingsOnboard.spec.ts diff --git a/tests/unit/specs/components/admin/__snapshots__/adminGroupProfile.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/adminGroupProfile.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/adminGroupProfile.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/adminGroupProfile.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/adminProfile.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/adminProfile.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/adminProfile.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/adminProfile.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/adminUsersProfileView.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/adminUsersProfileView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/adminUsersProfileView.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/adminUsersProfileView.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/dashboard.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/dashboard.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/dashboard.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/dashboard.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/groupProfiles.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/groupProfiles.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/groupProfiles.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/groupProfiles.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/instanceView.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/instanceView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/instanceView.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/instanceView.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/instancesView.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/instancesView.spec.ts.snap similarity index 88% rename from tests/unit/specs/components/admin/__snapshots__/instancesView.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/instancesView.spec.ts.snap index bea979cef..ef0219346 100644 --- a/tests/unit/specs/components/admin/__snapshots__/instancesView.spec.ts.snap +++ b/tests/unit/specs/views/admin/__snapshots__/instancesView.spec.ts.snap @@ -64,7 +64,7 @@ exports[`InstancesView > Show simple 1`] = `
    -
    +

    Mobilizon

    diff --git a/tests/unit/specs/components/admin/__snapshots__/profilesView.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/profilesView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/profilesView.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/profilesView.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/settings.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/settings.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/settings.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/settings.spec.ts.snap diff --git a/tests/unit/specs/components/admin/__snapshots__/usersView.spec.ts.snap b/tests/unit/specs/views/admin/__snapshots__/usersView.spec.ts.snap similarity index 100% rename from tests/unit/specs/components/admin/__snapshots__/usersView.spec.ts.snap rename to tests/unit/specs/views/admin/__snapshots__/usersView.spec.ts.snap diff --git a/tests/unit/specs/components/admin/adminGroupProfile.spec.ts b/tests/unit/specs/views/admin/adminGroupProfile.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/adminGroupProfile.spec.ts rename to tests/unit/specs/views/admin/adminGroupProfile.spec.ts diff --git a/tests/unit/specs/components/admin/adminProfile.spec.ts b/tests/unit/specs/views/admin/adminProfile.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/adminProfile.spec.ts rename to tests/unit/specs/views/admin/adminProfile.spec.ts diff --git a/tests/unit/specs/components/admin/adminUsersProfileView.spec.ts b/tests/unit/specs/views/admin/adminUsersProfileView.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/adminUsersProfileView.spec.ts rename to tests/unit/specs/views/admin/adminUsersProfileView.spec.ts diff --git a/tests/unit/specs/components/admin/dashboard.spec.ts b/tests/unit/specs/views/admin/dashboard.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/dashboard.spec.ts rename to tests/unit/specs/views/admin/dashboard.spec.ts diff --git a/tests/unit/specs/components/admin/groupProfiles.spec.ts b/tests/unit/specs/views/admin/groupProfiles.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/groupProfiles.spec.ts rename to tests/unit/specs/views/admin/groupProfiles.spec.ts diff --git a/tests/unit/specs/components/admin/instanceView.spec.ts b/tests/unit/specs/views/admin/instanceView.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/instanceView.spec.ts rename to tests/unit/specs/views/admin/instanceView.spec.ts diff --git a/tests/unit/specs/components/admin/instancesView.spec.ts b/tests/unit/specs/views/admin/instancesView.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/instancesView.spec.ts rename to tests/unit/specs/views/admin/instancesView.spec.ts diff --git a/tests/unit/specs/components/admin/profilesView.spec.ts b/tests/unit/specs/views/admin/profilesView.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/profilesView.spec.ts rename to tests/unit/specs/views/admin/profilesView.spec.ts diff --git a/tests/unit/specs/components/admin/settings.spec.ts b/tests/unit/specs/views/admin/settings.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/settings.spec.ts rename to tests/unit/specs/views/admin/settings.spec.ts diff --git a/tests/unit/specs/components/admin/usersView.spec.ts b/tests/unit/specs/views/admin/usersView.spec.ts similarity index 100% rename from tests/unit/specs/components/admin/usersView.spec.ts rename to tests/unit/specs/views/admin/usersView.spec.ts