@cryptotaxi247 / CoPilot / commits / 01bba8c9

Custom case (#284)

* feat: Add optional assigned_to field to CaseCreate model The code changes in this commit modify the `CaseCreate` model in the `db_operations.py` file. It adds an optional `assigned_to` field to the model, allowing cases to be assigned to a specific user. This provides flexibility in managing and tracking case assignments. * update dependencies * update case api/types * refactor * add CaseCreationForm * precommit fixes --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>

taylor_socfortress committed Sep 6, 2024 at 09:19 UTC 01bba8c9a453d72bdab8c1d2bb3f12326c847551
13 files changed +1028 -298
backend/app/incidents/schema/db_operations.py
+1 -1
@@ -207,7 +207,7 @@ class CaseCreate(BaseModel):
207 case_description: str
208 case_creation_time: datetime
209 case_status: str
210 - assigned_to: str
210 + assigned_to: Optional[str] = None
211
212
213 class LinkedCaseCreate(BaseModel):
frontend/package-lock.json
+677 -243
@@ -14,7 +14,7 @@
14 "@fontsource/lexend": "^5.0.21",
15 "@fontsource/public-sans": "^5.0.18",
16 "@popperjs/core": "^2.11.8",
17 - "@shikijs/markdown-it": "^1.16.1",
17 + "@shikijs/markdown-it": "^1.16.2",
18 "@vueuse/components": "^11.0.3",
19 "@vueuse/core": "^11.0.3",
20 "apexcharts": "^3.53.0",
@@ -34,11 +34,11 @@
34 "naive-ui": "^2.39.0",
35 "password-validator": "^5.3.0",
36 "pinia": "^2.2.2",
37 - "pinia-plugin-persistedstate": "^3.2.3",
37 + "pinia-plugin-persistedstate": "^4.0.0",
38 "secure-ls": "^2.0.0",
39 - "shiki": "^1.16.1",
39 + "shiki": "^1.16.2",
40 "validator": "^13.12.0",
41 - "vue": "^3.5.0",
41 + "vue": "^3.5.3",
42 "vue-advanced-cropper": "^2.8.9",
43 "vue-highlight-words": "^3.0.1",
44 "vue-i18n": "^9.14.0",
@@ -58,7 +58,7 @@
58 "@types/inquirer": "^9.0.7",
59 "@types/jsdom": "^21.1.7",
60 "@types/lodash": "^4.17.7",
61 - "@types/node": "^22.5.2",
61 + "@types/node": "^22.5.4",
62 "@types/validator": "^13.12.1",
63 "@vitejs/plugin-vue": "^5.1.3",
64 "@vitejs/plugin-vue-jsx": "^4.0.1",
@@ -67,7 +67,7 @@
67 "@vue/test-utils": "^2.4.6",
68 "@vue/tsconfig": "^0.5.1",
69 "autoprefixer": "^10.4.20",
70 - "cypress": "^13.14.1",
70 + "cypress": "^13.14.2",
71 "eslint": "^9.9.1",
72 "eslint-plugin-cypress": "^3.5.0",
73 "eslint-plugin-vue": "^9.28.0",
@@ -78,9 +78,9 @@
78 "json5": "^2.2.3",
79 "npm-run-all2": "^6.2.2",
80 "picocolors": "^1.1.0",
81 - "postcss": "^8.4.44",
81 + "postcss": "^8.4.45",
82 "prettier": "^3.3.3",
83 - "sass": "^1.77.8",
83 + "sass": "^1.78.0",
84 "start-server-and-test": "^2.0.5",
85 "tailwind-config-viewer": "^2.0.4",
86 "tailwindcss": "^3.4.10",
@@ -90,10 +90,10 @@
90 "vite": "^5.4.3",
91 "vite-bundle-analyzer": "^0.10.6",
92 "vite-bundle-visualizer": "^1.2.1",
93 - "vite-plugin-vue-devtools": "^7.3.9",
93 + "vite-plugin-vue-devtools": "^7.4.4",
94 "vite-svg-loader": "^5.1.0",
95 "vitest": "^2.0.5",
96 - "vue-tsc": "^2.1.5"
96 + "vue-tsc": "^2.1.6"
97 },
98 "engines": {
99 "node": ">=18.0.0"
@@ -126,7 +126,6 @@
126 "version": "2.3.0",
127 "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
128 "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
129 - "dev": true,
129 "dependencies": {
130 "@jridgewell/gen-mapping": "^0.3.5",
131 "@jridgewell/trace-mapping": "^0.3.24"
@@ -162,7 +161,6 @@
161 "version": "7.24.7",
162 "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
163 "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
165 - "dev": true,
164 "dependencies": {
165 "@babel/highlight": "^7.24.7",
166 "picocolors": "^1.0.0"
@@ -175,7 +173,6 @@
173 "version": "7.25.2",
174 "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz",
175 "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==",
178 - "dev": true,
176 "engines": {
177 "node": ">=6.9.0"
178 }
@@ -184,7 +181,6 @@
181 "version": "7.25.2",
182 "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz",
183 "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==",
187 - "dev": true,
184 "dependencies": {
185 "@ampproject/remapping": "^2.2.0",
186 "@babel/code-frame": "^7.24.7",
@@ -214,7 +210,6 @@
210 "version": "6.3.1",
211 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
212 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
217 - "dev": true,
213 "bin": {
214 "semver": "bin/semver.js"
215 }
@@ -223,7 +218,6 @@
218 "version": "7.25.0",
219 "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
220 "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
226 - "dev": true,
221 "dependencies": {
222 "@babel/types": "^7.25.0",
223 "@jridgewell/gen-mapping": "^0.3.5",
@@ -250,7 +244,6 @@
244 "version": "7.25.2",
245 "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
246 "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
253 - "dev": true,
247 "dependencies": {
248 "@babel/compat-data": "^7.25.2",
249 "@babel/helper-validator-option": "^7.24.8",
@@ -266,7 +259,6 @@
259 "version": "6.3.1",
260 "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
261 "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
269 - "dev": true,
262 "bin": {
263 "semver": "bin/semver.js"
264 }
@@ -318,7 +310,6 @@
310 "version": "7.24.7",
311 "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz",
312 "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==",
321 - "dev": true,
313 "dependencies": {
314 "@babel/traverse": "^7.24.7",
315 "@babel/types": "^7.24.7"
@@ -331,7 +322,6 @@
322 "version": "7.25.2",
323 "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
324 "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
334 - "dev": true,
325 "dependencies": {
326 "@babel/helper-module-imports": "^7.24.7",
327 "@babel/helper-simple-access": "^7.24.7",
@@ -387,7 +377,6 @@
377 "version": "7.24.7",
378 "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz",
379 "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==",
390 - "dev": true,
380 "dependencies": {
381 "@babel/traverse": "^7.24.7",
382 "@babel/types": "^7.24.7"
@@ -429,7 +418,6 @@
418 "version": "7.24.8",
419 "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz",
420 "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==",
432 - "dev": true,
421 "engines": {
422 "node": ">=6.9.0"
423 }
@@ -438,7 +426,6 @@
426 "version": "7.25.0",
427 "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
428 "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
441 - "dev": true,
429 "dependencies": {
430 "@babel/template": "^7.25.0",
431 "@babel/types": "^7.25.0"
@@ -451,7 +438,6 @@
438 "version": "7.24.7",
439 "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
440 "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
454 - "dev": true,
441 "dependencies": {
442 "@babel/helper-validator-identifier": "^7.24.7",
443 "chalk": "^2.4.2",
@@ -509,12 +495,12 @@
495 }
496 },
497 "node_modules/@babel/plugin-syntax-import-attributes": {
512 - "version": "7.24.7",
513 - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz",
514 - "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==",
498 + "version": "7.25.6",
499 + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz",
500 + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==",
501 "dev": true,
502 "dependencies": {
517 - "@babel/helper-plugin-utils": "^7.24.7"
503 + "@babel/helper-plugin-utils": "^7.24.8"
504 },
505 "engines": {
506 "node": ">=6.9.0"
@@ -595,11 +581,18 @@
581 "node": ">=6.9.0"
582 }
583 },
584 + "node_modules/@babel/standalone": {
585 + "version": "7.25.6",
586 + "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.25.6.tgz",
587 + "integrity": "sha512-Kf2ZcZVqsKbtYhlA7sP0z5A3q5hmCVYMKMWRWNK/5OVwHIve3JY1djVRmIVAx8FMueLIfZGKQDIILK2w8zO4mg==",
588 + "engines": {
589 + "node": ">=6.9.0"
590 + }
591 + },
592 "node_modules/@babel/template": {
593 "version": "7.25.0",
594 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
595 "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
602 - "dev": true,
596 "dependencies": {
597 "@babel/code-frame": "^7.24.7",
598 "@babel/parser": "^7.25.0",
@@ -613,7 +606,6 @@
606 "version": "7.25.3",
607 "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz",
608 "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==",
616 - "dev": true,
609 "dependencies": {
610 "@babel/code-frame": "^7.24.7",
611 "@babel/generator": "^7.25.0",
@@ -631,7 +623,6 @@
623 "version": "11.12.0",
624 "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
625 "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
634 - "dev": true,
626 "engines": {
627 "node": ">=4"
628 }
@@ -1597,7 +1588,6 @@
1588 "version": "0.3.5",
1589 "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
1590 "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
1600 - "dev": true,
1591 "dependencies": {
1592 "@jridgewell/set-array": "^1.2.1",
1593 "@jridgewell/sourcemap-codec": "^1.4.10",
@@ -1611,7 +1601,6 @@
1601 "version": "3.1.2",
1602 "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
1603 "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
1614 - "dev": true,
1604 "engines": {
1605 "node": ">=6.0.0"
1606 }
@@ -1620,7 +1609,6 @@
1609 "version": "1.2.1",
1610 "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
1611 "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
1623 - "dev": true,
1612 "engines": {
1613 "node": ">=6.0.0"
1614 }
@@ -1634,7 +1622,6 @@
1622 "version": "0.3.25",
1623 "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
1624 "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
1637 - "dev": true,
1625 "dependencies": {
1626 "@jridgewell/resolve-uri": "^3.1.0",
1627 "@jridgewell/sourcemap-codec": "^1.4.14"
@@ -1736,6 +1723,99 @@
1723 "node": "^16.14.0 || >=18.0.0"
1724 }
1725 },
1726 + "node_modules/@nuxt/kit": {
1727 + "version": "3.13.1",
1728 + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.13.1.tgz",
1729 + "integrity": "sha512-FkUL349lp/3nVfTIyws4UDJ3d2jyv5Pk1DC1HQUCOkSloYYMdbRcQAUcb4fe2TCLNWvHM+FhU8jnzGTzjALZYA==",
1730 + "dependencies": {
1731 + "@nuxt/schema": "3.13.1",
1732 + "c12": "^1.11.2",
1733 + "consola": "^3.2.3",
1734 + "defu": "^6.1.4",
1735 + "destr": "^2.0.3",
1736 + "globby": "^14.0.2",
1737 + "hash-sum": "^2.0.0",
1738 + "ignore": "^5.3.2",
1739 + "jiti": "^1.21.6",
1740 + "klona": "^2.0.6",
1741 + "knitwork": "^1.1.0",
1742 + "mlly": "^1.7.1",
1743 + "pathe": "^1.1.2",
1744 + "pkg-types": "^1.2.0",
1745 + "scule": "^1.3.0",
1746 + "semver": "^7.6.3",
1747 + "ufo": "^1.5.4",
1748 + "unctx": "^2.3.1",
1749 + "unimport": "^3.11.1",
1750 + "untyped": "^1.4.2"
1751 + },
1752 + "engines": {
1753 + "node": "^14.18.0 || >=16.10.0"
1754 + }
1755 + },
1756 + "node_modules/@nuxt/kit/node_modules/globby": {
1757 + "version": "14.0.2",
1758 + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz",
1759 + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==",
1760 + "dependencies": {
1761 + "@sindresorhus/merge-streams": "^2.1.0",
1762 + "fast-glob": "^3.3.2",
1763 + "ignore": "^5.2.4",
1764 + "path-type": "^5.0.0",
1765 + "slash": "^5.1.0",
1766 + "unicorn-magic": "^0.1.0"
1767 + },
1768 + "engines": {
1769 + "node": ">=18"
1770 + },
1771 + "funding": {
1772 + "url": "https://github.com/sponsors/sindresorhus"
1773 + }
1774 + },
1775 + "node_modules/@nuxt/kit/node_modules/path-type": {
1776 + "version": "5.0.0",
1777 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
1778 + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==",
1779 + "engines": {
1780 + "node": ">=12"
1781 + },
1782 + "funding": {
1783 + "url": "https://github.com/sponsors/sindresorhus"
1784 + }
1785 + },
1786 + "node_modules/@nuxt/kit/node_modules/slash": {
1787 + "version": "5.1.0",
1788 + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz",
1789 + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==",
1790 + "engines": {
1791 + "node": ">=14.16"
1792 + },
1793 + "funding": {
1794 + "url": "https://github.com/sponsors/sindresorhus"
1795 + }
1796 + },
1797 + "node_modules/@nuxt/schema": {
1798 + "version": "3.13.1",
1799 + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.13.1.tgz",
1800 + "integrity": "sha512-ishbhzVGspjshG9AG0hYnKYY6LWXzCtua7OXV7C/DQ2yA7rRcy1xHpzKZUDbIRyxCHHCAcBd8jfHEUmEuhEPrA==",
1801 + "dependencies": {
1802 + "compatx": "^0.1.8",
1803 + "consola": "^3.2.3",
1804 + "defu": "^6.1.4",
1805 + "hookable": "^5.5.3",
1806 + "pathe": "^1.1.2",
1807 + "pkg-types": "^1.2.0",
1808 + "scule": "^1.3.0",
1809 + "std-env": "^3.7.0",
1810 + "ufo": "^1.5.4",
1811 + "uncrypto": "^0.1.3",
1812 + "unimport": "^3.11.1",
1813 + "untyped": "^1.4.2"
1814 + },
1815 + "engines": {
1816 + "node": "^14.18.0 || >=16.10.0"
1817 + }
1818 + },
1819 "node_modules/@one-ini/wasm": {
1820 "version": "0.1.1",
1821 "resolved": "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz",
@@ -1782,7 +1862,6 @@
1862 "version": "5.1.0",
1863 "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz",
1864 "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==",
1785 - "dev": true,
1865 "dependencies": {
1866 "@types/estree": "^1.0.0",
1867 "estree-walker": "^2.0.2",
@@ -2008,30 +2087,30 @@
2087 ]
2088 },
2089 "node_modules/@shikijs/core": {
2011 - "version": "1.16.1",
2012 - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.16.1.tgz",
2013 - "integrity": "sha512-aI0hBtw+a6KsJp2jcD4YuQqKpeCbURMZbhHVozDknJpm+KJqeMRkEnfBC8BaKE/5XC+uofPgCLsa/TkTk0Ba0w==",
2090 + "version": "1.16.2",
2091 + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.16.2.tgz",
2092 + "integrity": "sha512-XSVH5OZCvE4WLMgdoBqfPMYmGHGmCC3OgZhw0S7KcSi2XKZ+5oHGe71GFnTljgdOxvxx5WrRks6QoTLKrl1eAA==",
2093 "dependencies": {
2094 "@shikijs/vscode-textmate": "^9.2.0",
2095 "@types/hast": "^3.0.4"
2096 }
2097 },
2098 "node_modules/@shikijs/markdown-it": {
2020 - "version": "1.16.1",
2021 - "resolved": "https://registry.npmjs.org/@shikijs/markdown-it/-/markdown-it-1.16.1.tgz",
2022 - "integrity": "sha512-vVEm/htIykOHdUn4OqMFKCBpFWUx+jkGzb0mCWE37nEsjzuE7qY4dC2s9mDtsAO+CnGY5dQNBc3yzgj7poDjeg==",
2099 + "version": "1.16.2",
2100 + "resolved": "https://registry.npmjs.org/@shikijs/markdown-it/-/markdown-it-1.16.2.tgz",
2101 + "integrity": "sha512-GSddEuOaVMHOmfWc3MYyf59WS7VTXwTfsDYmM2iVBe8N4yhA9bCBUkGXYKfod7hclFI2kLiz7BqaGTzsDEXUEw==",
2102 "dependencies": {
2024 - "@shikijs/transformers": "1.16.1",
2103 + "@shikijs/transformers": "1.16.2",
2104 "markdown-it": "^14.1.0",
2026 - "shiki": "1.16.1"
2105 + "shiki": "1.16.2"
2106 }
2107 },
2108 "node_modules/@shikijs/transformers": {
2030 - "version": "1.16.1",
2031 - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.16.1.tgz",
2032 - "integrity": "sha512-mfbe4YMov+1eyIBU3F6BtaPmLgDkRQaVse8xsBlKTVAcNF3cbZMRCyUz2N6gJOMKLJiv9T5gapBPbRxrDMuoxA==",
2109 + "version": "1.16.2",
2110 + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.16.2.tgz",
2111 + "integrity": "sha512-AR6ANiKwi1dJr5g/W0L+Su4PoHurkHLgtNmesbOFOPGKNQC2BeGU/Z2Ghkl+cUF5PfE+UeLkxUwzpE6H37hTSg==",
2112 "dependencies": {
2034 - "shiki": "1.16.1"
2113 + "shiki": "1.16.2"
2114 }
2115 },
2116 "node_modules/@shikijs/vscode-textmate": {
@@ -2060,6 +2139,17 @@
2139 "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==",
2140 "dev": true
2141 },
2142 + "node_modules/@sindresorhus/merge-streams": {
2143 + "version": "2.3.0",
2144 + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
2145 + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==",
2146 + "engines": {
2147 + "node": ">=18"
2148 + },
2149 + "funding": {
2150 + "url": "https://github.com/sponsors/sindresorhus"
2151 + }
2152 + },
2153 "node_modules/@trysound/sax": {
2154 "version": "0.2.0",
2155 "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
@@ -2084,8 +2174,7 @@
2174 "node_modules/@types/estree": {
2175 "version": "1.0.5",
2176 "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
2087 - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
2088 - "dev": true
2177 + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
2178 },
2179 "node_modules/@types/file-saver": {
2180 "version": "2.0.7",
@@ -2165,9 +2254,9 @@
2254 }
2255 },
2256 "node_modules/@types/node": {
2168 - "version": "22.5.2",
2169 - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.2.tgz",
2170 - "integrity": "sha512-acJsPTEqYqulZS/Yp/S3GgeE6GZ0qYODUR8aVr/DkhHQ8l9nd4j5x1/ZJy9/gHrRlFMqkO6i0I3E27Alu4jjPg==",
2257 + "version": "22.5.4",
2258 + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.4.tgz",
2259 + "integrity": "sha512-FDuKUJQm/ju9fT/SeX/6+gBzoPzlVCzfzmGkwKvRHQVxi4BntVbyIwf6a4Xn62mrvndLiml6z/UBXIdEVjQLXg==",
2260 "dev": true,
2261 "dependencies": {
2262 "undici-types": "~6.19.2"
@@ -3004,36 +3093,36 @@
3093 }
3094 },
3095 "node_modules/@vue/compiler-core": {
3007 - "version": "3.5.0",
3008 - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.0.tgz",
3009 - "integrity": "sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw==",
3096 + "version": "3.5.3",
3097 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.3.tgz",
3098 + "integrity": "sha512-adAfy9boPkP233NTyvLbGEqVuIfK/R0ZsBsIOW4BZNfb4BRpRW41Do1u+ozJpsb+mdoy80O20IzAsHaihRb5qA==",
3099 "dependencies": {
3100 "@babel/parser": "^7.25.3",
3012 - "@vue/shared": "3.5.0",
3101 + "@vue/shared": "3.5.3",
3102 "entities": "^4.5.0",
3103 "estree-walker": "^2.0.2",
3104 "source-map-js": "^1.2.0"
3105 }
3106 },
3107 "node_modules/@vue/compiler-dom": {
3019 - "version": "3.5.0",
3020 - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.0.tgz",
3021 - "integrity": "sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ==",
3108 + "version": "3.5.3",
3109 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.3.tgz",
3110 + "integrity": "sha512-wnzFArg9zpvk/811CDOZOadJRugf1Bgl/TQ3RfV4nKfSPok4hi0w10ziYUQR6LnnBAUlEXYLUfZ71Oj9ds/+QA==",
3111 "dependencies": {
3023 - "@vue/compiler-core": "3.5.0",
3024 - "@vue/shared": "3.5.0"
3112 + "@vue/compiler-core": "3.5.3",
3113 + "@vue/shared": "3.5.3"
3114 }
3115 },
3116 "node_modules/@vue/compiler-sfc": {
3028 - "version": "3.5.0",
3029 - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.0.tgz",
3030 - "integrity": "sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ==",
3117 + "version": "3.5.3",
3118 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.3.tgz",
3119 + "integrity": "sha512-P3uATLny2tfyvMB04OQFe7Sczteno7SLFxwrOA/dw01pBWQHB5HL15a8PosoNX2aG/EAMGqnXTu+1LnmzFhpTQ==",
3120 "dependencies": {
3121 "@babel/parser": "^7.25.3",
3033 - "@vue/compiler-core": "3.5.0",
3034 - "@vue/compiler-dom": "3.5.0",
3035 - "@vue/compiler-ssr": "3.5.0",
3036 - "@vue/shared": "3.5.0",
3122 + "@vue/compiler-core": "3.5.3",
3123 + "@vue/compiler-dom": "3.5.3",
3124 + "@vue/compiler-ssr": "3.5.3",
3125 + "@vue/shared": "3.5.3",
3126 "estree-walker": "^2.0.2",
3127 "magic-string": "^0.30.11",
3128 "postcss": "^8.4.44",
@@ -3041,12 +3130,12 @@
3130 }
3131 },
3132 "node_modules/@vue/compiler-ssr": {
3044 - "version": "3.5.0",
3045 - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.0.tgz",
3046 - "integrity": "sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA==",
3133 + "version": "3.5.3",
3134 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.3.tgz",
3135 + "integrity": "sha512-F/5f+r2WzL/2YAPl7UlKcJWHrvoZN8XwEBLnT7S4BXwncH25iDOabhO2M2DWioyTguJAGavDOawejkFXj8EM1w==",
3136 "dependencies": {
3048 - "@vue/compiler-dom": "3.5.0",
3049 - "@vue/shared": "3.5.0"
3137 + "@vue/compiler-dom": "3.5.3",
3138 + "@vue/shared": "3.5.3"
3139 }
3140 },
3141 "node_modules/@vue/compiler-vue2": {
@@ -3065,13 +3154,13 @@
3154 "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw=="
3155 },
3156 "node_modules/@vue/devtools-core": {
3068 - "version": "7.3.9",
3069 - "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.3.9.tgz",
3070 - "integrity": "sha512-B5zAl9ulNjI6nknSnGNRzmP/ldR9ADUwwT8HkI8Hejo1W00uK9ABUahbfrXzME296rBfmwhQuCFwJ6t9KFdbXQ==",
3157 + "version": "7.4.4",
3158 + "resolved": "https://registry.npmjs.org/@vue/devtools-core/-/devtools-core-7.4.4.tgz",
3159 + "integrity": "sha512-DLxgA3DfeADkRzhAfm3G2Rw/cWxub64SdP5b+s5dwL30+whOGj+QNhmyFpwZ8ZTrHDFRIPj0RqNzJ8IRR1pz7w==",
3160 "dev": true,
3161 "dependencies": {
3073 - "@vue/devtools-kit": "^7.3.9",
3074 - "@vue/devtools-shared": "^7.3.9",
3162 + "@vue/devtools-kit": "^7.4.4",
3163 + "@vue/devtools-shared": "^7.4.4",
3164 "mitt": "^3.0.1",
3165 "nanoid": "^3.3.4",
3166 "pathe": "^1.1.2",
@@ -3082,12 +3171,12 @@
3171 }
3172 },
3173 "node_modules/@vue/devtools-kit": {
3085 - "version": "7.3.9",
3086 - "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.3.9.tgz",
3087 - "integrity": "sha512-Gr17nA+DaQzqyhNx1DUJr1CJRzTRfbIuuC80ZgU8MD/qNO302tv9la+ROi+Uaw+ULVwU9T71GnwLy4n8m9Lspg==",
3174 + "version": "7.4.4",
3175 + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.4.4.tgz",
3176 + "integrity": "sha512-awK/4NfsUG0nQ7qnTM37m7ZkEUMREyPh8taFCX+uQYps/MTFEum0AD05VeGDRMXwWvMmGIcWX9xp8ZiBddY0jw==",
3177 "dev": true,
3178 "dependencies": {
3090 - "@vue/devtools-shared": "^7.3.9",
3179 + "@vue/devtools-shared": "^7.4.4",
3180 "birpc": "^0.2.17",
3181 "hookable": "^5.5.3",
3182 "mitt": "^3.0.1",
@@ -3097,9 +3186,9 @@
3186 }
3187 },
3188 "node_modules/@vue/devtools-shared": {
3100 - "version": "7.3.9",
3101 - "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.3.9.tgz",
3102 - "integrity": "sha512-CdfMRZKXyI8vw+hqOcQIiLihB6Hbbi7WNZGp7LsuH1Qe4aYAFmTaKjSciRZ301oTnwmU/knC/s5OGuV6UNiNoA==",
3189 + "version": "7.4.4",
3190 + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.4.4.tgz",
3191 + "integrity": "sha512-yeJULXFHOKIm8yL2JFO050a9ztTVqOCKTqN9JHFxGTJN0b+gjtfn6zC+FfyHUgjwCwf6E3hfKrlohtthcqoYqw==",
3192 "dev": true,
3193 "dependencies": {
3194 "rfdc": "^1.4.1"
@@ -3144,10 +3233,9 @@
3233 }
3234 },
3235 "node_modules/@vue/language-core": {
3147 - "version": "2.1.5",
3148 - "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.5.tgz",
3149 - "integrity": "sha512-YwF5+2v+rnue2/17wP84tnZgaB2hUM4C1U+115vVGrDAPGhBf7YG0nPv1SO0yUeEpYMYtED4ClamkXAwpoz2Yw==",
3150 - "deprecated": "use 2.1.4 instead",
3236 + "version": "2.1.6",
3237 + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz",
3238 + "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==",
3239 "dev": true,
3240 "dependencies": {
3241 "@volar/language-core": "~2.4.1",
@@ -3169,49 +3257,49 @@
3257 }
3258 },
3259 "node_modules/@vue/reactivity": {
3172 - "version": "3.5.0",
3173 - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.0.tgz",
3174 - "integrity": "sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ==",
3260 + "version": "3.5.3",
3261 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.3.tgz",
3262 + "integrity": "sha512-2w61UnRWTP7+rj1H/j6FH706gRBHdFVpIqEkSDAyIpafBXYH8xt4gttstbbCWdU3OlcSWO8/3mbKl/93/HSMpw==",
3263 "dependencies": {
3176 - "@vue/shared": "3.5.0"
3264 + "@vue/shared": "3.5.3"
3265 }
3266 },
3267 "node_modules/@vue/runtime-core": {
3180 - "version": "3.5.0",
3181 - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.0.tgz",
3182 - "integrity": "sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w==",
3268 + "version": "3.5.3",
3269 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.3.tgz",
3270 + "integrity": "sha512-5b2AQw5OZlmCzSsSBWYoZOsy75N4UdMWenTfDdI5bAzXnuVR7iR8Q4AOzQm2OGoA41xjk53VQKrqQhOz2ktWaw==",
3271 "dependencies": {
3184 - "@vue/reactivity": "3.5.0",
3185 - "@vue/shared": "3.5.0"
3272 + "@vue/reactivity": "3.5.3",
3273 + "@vue/shared": "3.5.3"
3274 }
3275 },
3276 "node_modules/@vue/runtime-dom": {
3189 - "version": "3.5.0",
3190 - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.0.tgz",
3191 - "integrity": "sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A==",
3277 + "version": "3.5.3",
3278 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.3.tgz",
3279 + "integrity": "sha512-wPR1DEGc3XnQ7yHbmkTt3GoY0cEnVGQnARRdAkDzZ8MbUKEs26gogCQo6AOvvgahfjIcnvWJzkZArQ1fmWjcSg==",
3280 "dependencies": {
3193 - "@vue/reactivity": "3.5.0",
3194 - "@vue/runtime-core": "3.5.0",
3195 - "@vue/shared": "3.5.0",
3281 + "@vue/reactivity": "3.5.3",
3282 + "@vue/runtime-core": "3.5.3",
3283 + "@vue/shared": "3.5.3",
3284 "csstype": "^3.1.3"
3285 }
3286 },
3287 "node_modules/@vue/server-renderer": {
3200 - "version": "3.5.0",
3201 - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.0.tgz",
3202 - "integrity": "sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg==",
3288 + "version": "3.5.3",
3289 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.3.tgz",
3290 + "integrity": "sha512-28volmaZVG2PGO3V3+gBPKoSHvLlE8FGfG/GKXKkjjfxLuj/50B/0OQGakM/g6ehQeqCrZYM4eHC4Ks48eig1Q==",
3291 "dependencies": {
3204 - "@vue/compiler-ssr": "3.5.0",
3205 - "@vue/shared": "3.5.0"
3292 + "@vue/compiler-ssr": "3.5.3",
3293 + "@vue/shared": "3.5.3"
3294 },
3295 "peerDependencies": {
3208 - "vue": "3.5.0"
3296 + "vue": "3.5.3"
3297 }
3298 },
3299 "node_modules/@vue/shared": {
3212 - "version": "3.5.0",
3213 - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.0.tgz",
3214 - "integrity": "sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q=="
3300 + "version": "3.5.3",
3301 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.3.tgz",
3302 + "integrity": "sha512-Jp2v8nylKBT+PlOUjun2Wp/f++TfJVFjshLzNtJDdmFJabJa7noGMncqXRM1vXGX+Yo2V7WykQFNxusSim8SCA=="
3303 },
3304 "node_modules/@vue/test-utils": {
3305 "version": "2.4.6",
@@ -3481,7 +3569,6 @@
3569 "version": "3.2.1",
3570 "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
3571 "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
3484 - "dev": true,
3572 "dependencies": {
3573 "color-convert": "^1.9.0"
3574 },
@@ -3499,7 +3586,6 @@
3586 "version": "3.1.3",
3587 "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
3588 "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
3502 - "dev": true,
3589 "dependencies": {
3590 "normalize-path": "^3.0.0",
3591 "picomatch": "^2.0.4"
@@ -3740,7 +3826,6 @@
3826 "version": "2.3.0",
3827 "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
3828 "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
3743 - "dev": true,
3829 "engines": {
3830 "node": ">=8"
3831 },
@@ -3797,7 +3882,6 @@
3882 "version": "4.23.3",
3883 "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
3884 "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
3800 - "dev": true,
3885 "funding": [
3886 {
3887 "type": "opencollective",
@@ -3896,6 +3980,33 @@
3980 "node": ">= 0.8"
3981 }
3982 },
3983 + "node_modules/c12": {
3984 + "version": "1.11.2",
3985 + "resolved": "https://registry.npmjs.org/c12/-/c12-1.11.2.tgz",
3986 + "integrity": "sha512-oBs8a4uvSDO9dm8b7OCFW7+dgtVrwmwnrVXYzLm43ta7ep2jCn/0MhoUFygIWtxhyy6+/MG7/agvpY0U1Iemew==",
3987 + "dependencies": {
3988 + "chokidar": "^3.6.0",
3989 + "confbox": "^0.1.7",
3990 + "defu": "^6.1.4",
3991 + "dotenv": "^16.4.5",
3992 + "giget": "^1.2.3",
3993 + "jiti": "^1.21.6",
3994 + "mlly": "^1.7.1",
3995 + "ohash": "^1.1.3",
3996 + "pathe": "^1.1.2",
3997 + "perfect-debounce": "^1.0.0",
3998 + "pkg-types": "^1.2.0",
3999 + "rc9": "^2.1.2"
4000 + },
4001 + "peerDependencies": {
4002 + "magicast": "^0.3.4"
4003 + },
4004 + "peerDependenciesMeta": {
4005 + "magicast": {
4006 + "optional": true
4007 + }
4008 + }
4009 + },
4010 "node_modules/cac": {
4011 "version": "6.7.14",
4012 "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz",
@@ -4008,7 +4119,6 @@
4119 "version": "1.0.30001646",
4120 "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001646.tgz",
4121 "integrity": "sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==",
4011 - "dev": true,
4122 "funding": [
4123 {
4124 "type": "opencollective",
@@ -4050,7 +4160,6 @@
4160 "version": "2.4.2",
4161 "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
4162 "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
4053 - "dev": true,
4163 "dependencies": {
4164 "ansi-styles": "^3.2.1",
4165 "escape-string-regexp": "^1.0.5",
@@ -4082,7 +4191,6 @@
4191 "version": "3.6.0",
4192 "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
4193 "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
4085 - "dev": true,
4194 "dependencies": {
4195 "anymatch": "~3.1.2",
4196 "braces": "~3.0.2",
@@ -4106,7 +4214,6 @@
4214 "version": "5.1.2",
4215 "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
4216 "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
4109 - "dev": true,
4217 "dependencies": {
4218 "is-glob": "^4.0.1"
4219 },
@@ -4118,7 +4225,6 @@
4225 "version": "2.0.0",
4226 "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
4227 "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==",
4121 - "dev": true,
4228 "engines": {
4229 "node": ">=10"
4230 }
@@ -4138,6 +4244,14 @@
4244 "node": ">=8"
4245 }
4246 },
4247 + "node_modules/citty": {
4248 + "version": "0.1.6",
4249 + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
4250 + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
4251 + "dependencies": {
4252 + "consola": "^3.2.3"
4253 + }
4254 + },
4255 "node_modules/classnames": {
4256 "version": "2.5.1",
4257 "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz",
@@ -4273,7 +4387,6 @@
4387 "version": "1.9.3",
4388 "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
4389 "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
4276 - "dev": true,
4390 "dependencies": {
4391 "color-name": "1.1.3"
4392 }
@@ -4281,8 +4394,7 @@
4394 "node_modules/color-name": {
4395 "version": "1.1.3",
4396 "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
4284 - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
4285 - "dev": true
4397 + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="
4398 },
4399 "node_modules/colord": {
4400 "version": "2.9.3",
@@ -4324,6 +4436,11 @@
4436 "node": ">=4.0.0"
4437 }
4438 },
4439 + "node_modules/compatx": {
4440 + "version": "0.1.8",
4441 + "resolved": "https://registry.npmjs.org/compatx/-/compatx-0.1.8.tgz",
4442 + "integrity": "sha512-jcbsEAR81Bt5s1qOFymBufmCbXCXbk0Ql+K5ouj6gCyx2yHlu6AgmGIi9HxfKixpUDO5bCFJUHQ5uM6ecbTebw=="
4443 + },
4444 "node_modules/computeds": {
4445 "version": "0.0.1",
4446 "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz",
@@ -4338,8 +4455,7 @@
4455 "node_modules/confbox": {
4456 "version": "0.1.7",
4457 "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz",
4341 - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==",
4342 - "dev": true
4458 + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA=="
4459 },
4460 "node_modules/config-chain": {
4461 "version": "1.1.13",
@@ -4357,6 +4473,14 @@
4473 "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
4474 "dev": true
4475 },
4476 + "node_modules/consola": {
4477 + "version": "3.2.3",
4478 + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz",
4479 + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==",
4480 + "engines": {
4481 + "node": "^14.18.0 || >=16.10.0"
4482 + }
4483 + },
4484 "node_modules/content-disposition": {
4485 "version": "0.5.4",
4486 "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
@@ -4381,8 +4505,7 @@
4505 "node_modules/convert-source-map": {
4506 "version": "2.0.0",
4507 "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
4384 - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
4385 - "dev": true
4508 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
4509 },
4510 "node_modules/cookies": {
4511 "version": "0.9.1",
@@ -4559,9 +4682,9 @@
4682 "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
4683 },
4684 "node_modules/cypress": {
4562 - "version": "13.14.1",
4563 - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.14.1.tgz",
4564 - "integrity": "sha512-Wo+byPmjps66hACEH5udhXINEiN3qS3jWNGRzJOjrRJF3D0+YrcP2LVB1T7oYaVQM/S+eanqEvBWYc8cf7Vcbg==",
4685 + "version": "13.14.2",
4686 + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.14.2.tgz",
4687 + "integrity": "sha512-lsiQrN17vHMB2fnvxIrKLAjOr9bPwsNbPZNrWf99s4u+DVmCY6U+w7O3GGG9FvP4EUVYaDu+guWeNLiUzBrqvA==",
4688 "dev": true,
4689 "hasInstallScript": true,
4690 "dependencies": {
@@ -4821,6 +4944,11 @@
4944 "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
4945 "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="
4946 },
4947 + "node_modules/deep-pick-omit": {
4948 + "version": "1.2.0",
4949 + "resolved": "https://registry.npmjs.org/deep-pick-omit/-/deep-pick-omit-1.2.0.tgz",
4950 + "integrity": "sha512-2CGvfTM2c+IP/MhdRZMpaHhTc6zIlgz3tQXJ/VGAkc7mjMrjqSU28qiI63yEcy+fcYfd/K+NNJcGRzap4M4bqw=="
4951 + },
4952 "node_modules/default-browser": {
4953 "version": "5.2.1",
4954 "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz",
@@ -4906,8 +5034,7 @@
5034 "node_modules/destr": {
5035 "version": "2.0.3",
5036 "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
4909 - "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==",
4910 - "dev": true
5037 + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ=="
5038 },
5039 "node_modules/destroy": {
5040 "version": "1.2.0",
@@ -5002,6 +5129,17 @@
5129 "url": "https://github.com/fb55/domutils?sponsor=1"
5130 }
5131 },
5132 + "node_modules/dotenv": {
5133 + "version": "16.4.5",
5134 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
5135 + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
5136 + "engines": {
5137 + "node": ">=12"
5138 + },
5139 + "funding": {
5140 + "url": "https://dotenvx.com"
5141 + }
5142 + },
5143 "node_modules/duplexer": {
5144 "version": "0.1.2",
5145 "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -5089,8 +5227,7 @@
5227 "node_modules/electron-to-chromium": {
5228 "version": "1.5.4",
5229 "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.4.tgz",
5092 - "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA==",
5093 - "dev": true
5230 + "integrity": "sha512-orzA81VqLyIGUEA77YkVA1D+N+nNfl2isJVjjmOyrlxuooZ19ynb+dOlaDTqd/idKRS9lDCSBmtzM+kyCsMnkA=="
5231 },
5232 "node_modules/emoji-regex": {
5233 "version": "8.0.0",
@@ -5228,7 +5365,6 @@
5365 "version": "3.1.2",
5366 "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
5367 "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
5231 - "dev": true,
5368 "engines": {
5369 "node": ">=6"
5370 }
@@ -5243,7 +5379,6 @@
5379 "version": "1.0.5",
5380 "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
5381 "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
5246 - "dev": true,
5382 "engines": {
5383 "node": ">=0.8.0"
5384 }
@@ -6067,7 +6202,6 @@
6202 "version": "2.3.3",
6203 "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
6204 "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
6070 - "dev": true,
6205 "hasInstallScript": true,
6206 "optional": true,
6207 "os": [
@@ -6090,7 +6224,6 @@
6224 "version": "1.0.0-beta.2",
6225 "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
6226 "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
6093 - "dev": true,
6227 "engines": {
6228 "node": ">=6.9.0"
6229 }
@@ -6177,6 +6310,24 @@
6310 "assert-plus": "^1.0.0"
6311 }
6312 },
6313 + "node_modules/giget": {
6314 + "version": "1.2.3",
6315 + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz",
6316 + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==",
6317 + "dependencies": {
6318 + "citty": "^0.1.6",
6319 + "consola": "^3.2.3",
6320 + "defu": "^6.1.4",
6321 + "node-fetch-native": "^1.6.3",
6322 + "nypm": "^0.3.8",
6323 + "ohash": "^1.1.3",
6324 + "pathe": "^1.1.2",
6325 + "tar": "^6.2.0"
6326 + },
6327 + "bin": {
6328 + "giget": "dist/cli.mjs"
6329 + }
6330 + },
6331 "node_modules/glob": {
6332 "version": "10.4.5",
6333 "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
@@ -6296,7 +6447,6 @@
6447 "version": "3.0.0",
6448 "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
6449 "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
6299 - "dev": true,
6450 "engines": {
6451 "node": ">=4"
6452 }
@@ -6352,6 +6502,11 @@
6502 "url": "https://github.com/sponsors/ljharb"
6503 }
6504 },
6505 + "node_modules/hash-sum": {
6506 + "version": "2.0.0",
6507 + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz",
6508 + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg=="
6509 + },
6510 "node_modules/hasown": {
6511 "version": "2.0.2",
6512 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
@@ -6389,8 +6544,7 @@
6544 "node_modules/hookable": {
6545 "version": "5.5.3",
6546 "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz",
6392 - "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==",
6393 - "dev": true
6547 + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
6548 },
6549 "node_modules/hosted-git-info": {
6550 "version": "7.0.2",
@@ -6600,9 +6754,9 @@
6754 ]
6755 },
6756 "node_modules/ignore": {
6603 - "version": "5.3.1",
6604 - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
6605 - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
6757 + "version": "5.3.2",
6758 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
6759 + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
6760 "engines": {
6761 "node": ">= 4"
6762 }
@@ -6745,7 +6899,6 @@
6899 "version": "2.1.0",
6900 "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
6901 "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
6748 - "dev": true,
6902 "dependencies": {
6903 "binary-extensions": "^2.0.0"
6904 },
@@ -7072,8 +7225,7 @@
7225 "node_modules/js-tokens": {
7226 "version": "4.0.0",
7227 "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
7075 - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
7076 - "dev": true
7228 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
7229 },
7230 "node_modules/js-yaml": {
7231 "version": "4.1.0",
@@ -7159,7 +7311,6 @@
7311 "version": "2.5.2",
7312 "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
7313 "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
7162 - "dev": true,
7314 "bin": {
7315 "jsesc": "bin/jsesc"
7316 },
@@ -7207,7 +7358,6 @@
7358 "version": "2.2.3",
7359 "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
7360 "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
7210 - "dev": true,
7361 "bin": {
7362 "json5": "lib/cli.js"
7363 },
@@ -7271,6 +7421,19 @@
7421 "json-buffer": "3.0.1"
7422 }
7423 },
7424 + "node_modules/klona": {
7425 + "version": "2.0.6",
7426 + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz",
7427 + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==",
7428 + "engines": {
7429 + "node": ">= 8"
7430 + }
7431 + },
7432 + "node_modules/knitwork": {
7433 + "version": "1.1.0",
7434 + "resolved": "https://registry.npmjs.org/knitwork/-/knitwork-1.1.0.tgz",
7435 + "integrity": "sha512-oHnmiBUVHz1V+URE77PNot2lv3QiYU2zQf1JjOVkMt3YDKGbu8NAFr+c4mcNOhdsGrB/VpVbRwPwhiXrPhxQbw=="
7436 + },
7437 "node_modules/koa": {
7438 "version": "2.15.3",
7439 "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz",
@@ -7568,7 +7731,6 @@
7731 "version": "0.5.0",
7732 "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz",
7733 "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==",
7571 - "dev": true,
7734 "dependencies": {
7735 "mlly": "^1.4.2",
7736 "pkg-types": "^1.0.3"
@@ -7796,7 +7958,6 @@
7958 "version": "5.1.1",
7959 "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
7960 "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
7799 - "dev": true,
7961 "dependencies": {
7962 "yallist": "^3.0.2"
7963 }
@@ -7894,8 +8055,7 @@
8055 "node_modules/merge-stream": {
8056 "version": "2.0.0",
8057 "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
7897 - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
7898 - "dev": true
8058 + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
8059 },
8060 "node_modules/merge2": {
8061 "version": "1.4.1",
@@ -8109,7 +8269,6 @@
8269 "version": "2.1.2",
8270 "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz",
8271 "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
8112 - "dev": true,
8272 "dependencies": {
8273 "minipass": "^3.0.0",
8274 "yallist": "^4.0.0"
@@ -8122,7 +8281,6 @@
8281 "version": "3.3.6",
8282 "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
8283 "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
8125 - "dev": true,
8284 "dependencies": {
8285 "yallist": "^4.0.0"
8286 },
@@ -8133,8 +8291,7 @@
8291 "node_modules/minizlib/node_modules/yallist": {
8292 "version": "4.0.0",
8293 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
8136 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
8137 - "dev": true
8294 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
8295 },
8296 "node_modules/mitt": {
8297 "version": "3.0.1",
@@ -8157,7 +8314,6 @@
8314 "version": "1.7.1",
8315 "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz",
8316 "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==",
8160 - "dev": true,
8317 "dependencies": {
8318 "acorn": "^8.11.3",
8319 "pathe": "^1.1.2",
@@ -8165,6 +8321,14 @@
8321 "ufo": "^1.5.3"
8322 }
8323 },
8324 + "node_modules/mri": {
8325 + "version": "1.2.0",
8326 + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",
8327 + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",
8328 + "engines": {
8329 + "node": ">=4"
8330 + }
8331 + },
8332 "node_modules/mrmime": {
8333 "version": "2.0.0",
8334 "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
@@ -8259,14 +8423,12 @@
8423 "node_modules/node-fetch-native": {
8424 "version": "1.6.4",
8425 "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz",
8262 - "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==",
8263 - "dev": true
8426 + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ=="
8427 },
8428 "node_modules/node-releases": {
8429 "version": "2.0.18",
8430 "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
8268 - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
8269 - "dev": true
8431 + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="
8432 },
8433 "node_modules/nopt": {
8434 "version": "7.2.1",
@@ -8287,7 +8449,6 @@
8449 "version": "3.0.0",
8450 "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
8451 "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
8290 - "dev": true,
8452 "engines": {
8453 "node": ">=0.10.0"
8454 }
@@ -8410,6 +8571,149 @@
8571 "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==",
8572 "dev": true
8573 },
8574 + "node_modules/nypm": {
8575 + "version": "0.3.11",
8576 + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.11.tgz",
8577 + "integrity": "sha512-E5GqaAYSnbb6n1qZyik2wjPDZON43FqOJO59+3OkWrnmQtjggrMOVnsyzfjxp/tS6nlYJBA4zRA5jSM2YaadMg==",
8578 + "dependencies": {
8579 + "citty": "^0.1.6",
8580 + "consola": "^3.2.3",
8581 + "execa": "^8.0.1",
8582 + "pathe": "^1.1.2",
8583 + "pkg-types": "^1.2.0",
8584 + "ufo": "^1.5.4"
8585 + },
8586 + "bin": {
8587 + "nypm": "dist/cli.mjs"
8588 + },
8589 + "engines": {
8590 + "node": "^14.16.0 || >=16.10.0"
8591 + }
8592 + },
8593 + "node_modules/nypm/node_modules/execa": {
8594 + "version": "8.0.1",
8595 + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
8596 + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
8597 + "dependencies": {
8598 + "cross-spawn": "^7.0.3",
8599 + "get-stream": "^8.0.1",
8600 + "human-signals": "^5.0.0",
8601 + "is-stream": "^3.0.0",
8602 + "merge-stream": "^2.0.0",
8603 + "npm-run-path": "^5.1.0",
8604 + "onetime": "^6.0.0",
8605 + "signal-exit": "^4.1.0",
8606 + "strip-final-newline": "^3.0.0"
8607 + },
8608 + "engines": {
8609 + "node": ">=16.17"
8610 + },
8611 + "funding": {
8612 + "url": "https://github.com/sindresorhus/execa?sponsor=1"
8613 + }
8614 + },
8615 + "node_modules/nypm/node_modules/get-stream": {
8616 + "version": "8.0.1",
8617 + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
8618 + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
8619 + "engines": {
8620 + "node": ">=16"
8621 + },
8622 + "funding": {
8623 + "url": "https://github.com/sponsors/sindresorhus"
8624 + }
8625 + },
8626 + "node_modules/nypm/node_modules/human-signals": {
8627 + "version": "5.0.0",
8628 + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
8629 + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
8630 + "engines": {
8631 + "node": ">=16.17.0"
8632 + }
8633 + },
8634 + "node_modules/nypm/node_modules/is-stream": {
8635 + "version": "3.0.0",
8636 + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
8637 + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
8638 + "engines": {
8639 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
8640 + },
8641 + "funding": {
8642 + "url": "https://github.com/sponsors/sindresorhus"
8643 + }
8644 + },
8645 + "node_modules/nypm/node_modules/mimic-fn": {
8646 + "version": "4.0.0",
8647 + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
8648 + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
8649 + "engines": {
8650 + "node": ">=12"
8651 + },
8652 + "funding": {
8653 + "url": "https://github.com/sponsors/sindresorhus"
8654 + }
8655 + },
8656 + "node_modules/nypm/node_modules/npm-run-path": {
8657 + "version": "5.3.0",
8658 + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
8659 + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
8660 + "dependencies": {
8661 + "path-key": "^4.0.0"
8662 + },
8663 + "engines": {
8664 + "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
8665 + },
8666 + "funding": {
8667 + "url": "https://github.com/sponsors/sindresorhus"
8668 + }
8669 + },
8670 + "node_modules/nypm/node_modules/onetime": {
8671 + "version": "6.0.0",
8672 + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
8673 + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
8674 + "dependencies": {
8675 + "mimic-fn": "^4.0.0"
8676 + },
8677 + "engines": {
8678 + "node": ">=12"
8679 + },
8680 + "funding": {
8681 + "url": "https://github.com/sponsors/sindresorhus"
8682 + }
8683 + },
8684 + "node_modules/nypm/node_modules/path-key": {
8685 + "version": "4.0.0",
8686 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
8687 + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
8688 + "engines": {
8689 + "node": ">=12"
8690 + },
8691 + "funding": {
8692 + "url": "https://github.com/sponsors/sindresorhus"
8693 + }
8694 + },
8695 + "node_modules/nypm/node_modules/signal-exit": {
8696 + "version": "4.1.0",
8697 + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
8698 + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
8699 + "engines": {
8700 + "node": ">=14"
8701 + },
8702 + "funding": {
8703 + "url": "https://github.com/sponsors/isaacs"
8704 + }
8705 + },
8706 + "node_modules/nypm/node_modules/strip-final-newline": {
8707 + "version": "3.0.0",
8708 + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
8709 + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
8710 + "engines": {
8711 + "node": ">=12"
8712 + },
8713 + "funding": {
8714 + "url": "https://github.com/sponsors/sindresorhus"
8715 + }
8716 + },
8717 "node_modules/object-assign": {
8718 "version": "4.1.1",
8719 "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -8451,6 +8755,11 @@
8755 "ufo": "^1.5.3"
8756 }
8757 },
8758 + "node_modules/ohash": {
8759 + "version": "1.1.3",
8760 + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz",
8761 + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw=="
8762 + },
8763 "node_modules/on-finished": {
8764 "version": "2.4.1",
8765 "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
@@ -8702,8 +9011,7 @@
9011 "node_modules/pathe": {
9012 "version": "1.1.2",
9013 "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz",
8705 - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==",
8706 - "dev": true
9014 + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ=="
9015 },
9016 "node_modules/pathval": {
9017 "version": "2.0.0",
@@ -8732,8 +9040,7 @@
9040 "node_modules/perfect-debounce": {
9041 "version": "1.0.0",
9042 "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
8735 - "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
8736 - "dev": true
9043 + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
9044 },
9045 "node_modules/performance-now": {
9046 "version": "2.1.0",
@@ -8804,11 +9111,26 @@
9111 }
9112 },
9113 "node_modules/pinia-plugin-persistedstate": {
8807 - "version": "3.2.3",
8808 - "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-3.2.3.tgz",
8809 - "integrity": "sha512-Cm819WBj/s5K5DGw55EwbXDtx+EZzM0YR5AZbq9XE3u0xvXwvX2JnWoFpWIcdzISBHqy9H1UiSIUmXyXqWsQRQ==",
9114 + "version": "4.0.0",
9115 + "resolved": "https://registry.npmjs.org/pinia-plugin-persistedstate/-/pinia-plugin-persistedstate-4.0.0.tgz",
9116 + "integrity": "sha512-yTly/5XMwgd4hQmZOTAdeK3Kfz89h9TMS2/d0VzVJEL9v2LanZdjhckpwnE+jelL+vsT7DnRLmSOtkzSJjO6Ng==",
9117 + "dependencies": {
9118 + "@nuxt/kit": "^3.13.0",
9119 + "deep-pick-omit": "^1.2.0",
9120 + "defu": "^6.1.4",
9121 + "destr": "^2.0.3"
9122 + },
9123 "peerDependencies": {
8811 - "pinia": "^2.0.0"
9124 + "@pinia/nuxt": ">=0.5.0",
9125 + "pinia": ">=2.0.0"
9126 + },
9127 + "peerDependenciesMeta": {
9128 + "@pinia/nuxt": {
9129 + "optional": true
9130 + },
9131 + "pinia": {
9132 + "optional": true
9133 + }
9134 }
9135 },
9136 "node_modules/pinia/node_modules/vue-demi": {
@@ -8846,10 +9168,9 @@
9168 }
9169 },
9170 "node_modules/pkg-types": {
8849 - "version": "1.1.3",
8850 - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz",
8851 - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==",
8852 - "dev": true,
9171 + "version": "1.2.0",
9172 + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz",
9173 + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==",
9174 "dependencies": {
9175 "confbox": "^0.1.7",
9176 "mlly": "^1.7.1",
@@ -8889,9 +9210,9 @@
9210 }
9211 },
9212 "node_modules/postcss": {
8892 - "version": "8.4.44",
8893 - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.44.tgz",
8894 - "integrity": "sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==",
9213 + "version": "8.4.45",
9214 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.45.tgz",
9215 + "integrity": "sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==",
9216 "funding": [
9217 {
9218 "type": "opencollective",
@@ -9216,6 +9537,15 @@
9537 }
9538 ]
9539 },
9540 + "node_modules/rc9": {
9541 + "version": "2.1.2",
9542 + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
9543 + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
9544 + "dependencies": {
9545 + "defu": "^6.1.4",
9546 + "destr": "^2.0.3"
9547 + }
9548 + },
9549 "node_modules/read-cache": {
9550 "version": "1.0.0",
9551 "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
@@ -9242,7 +9572,6 @@
9572 "version": "3.6.0",
9573 "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
9574 "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
9245 - "dev": true,
9575 "dependencies": {
9576 "picomatch": "^2.2.1"
9577 },
@@ -9542,7 +9871,7 @@
9871 "version": "4.21.0",
9872 "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz",
9873 "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==",
9545 - "dev": true,
9874 + "devOptional": true,
9875 "dependencies": {
9876 "@types/estree": "1.0.5"
9877 },
@@ -9705,9 +10034,9 @@
10034 "dev": true
10035 },
10036 "node_modules/sass": {
9708 - "version": "1.77.8",
9709 - "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz",
9710 - "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
10037 + "version": "1.78.0",
10038 + "resolved": "https://registry.npmjs.org/sass/-/sass-1.78.0.tgz",
10039 + "integrity": "sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ==",
10040 "dev": true,
10041 "dependencies": {
10042 "chokidar": ">=3.0.0 <4.0.0",
@@ -9733,6 +10062,11 @@
10062 "node": ">=v12.22.7"
10063 }
10064 },
10065 + "node_modules/scule": {
10066 + "version": "1.3.0",
10067 + "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz",
10068 + "integrity": "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="
10069 + },
10070 "node_modules/secure-ls": {
10071 "version": "2.0.0",
10072 "resolved": "https://registry.npmjs.org/secure-ls/-/secure-ls-2.0.0.tgz",
@@ -9813,11 +10147,11 @@
10147 }
10148 },
10149 "node_modules/shiki": {
9816 - "version": "1.16.1",
9817 - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.16.1.tgz",
9818 - "integrity": "sha512-tCJIMaxDVB1mEIJ5TvfZU7kCPB5eo9fli5+21Olc/bmyv+w8kye3JOp+LZRmGkAyT71hrkefQhTiY+o9mBikRQ==",
10150 + "version": "1.16.2",
10151 + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.16.2.tgz",
10152 + "integrity": "sha512-gSym0hZf5a1U0iDPsdoOAZbvoi+e0c6c3NKAi03FoSLTm7oG20tum29+gk0wzzivOasn3loxfGUPT+jZXIUbWg==",
10153 "dependencies": {
9820 - "@shikijs/core": "1.16.1",
10154 + "@shikijs/core": "1.16.2",
10155 "@shikijs/vscode-textmate": "^9.2.0",
10156 "@types/hast": "^3.0.4"
10157 }
@@ -10137,8 +10471,7 @@
10471 "node_modules/std-env": {
10472 "version": "3.7.0",
10473 "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz",
10140 - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==",
10141 - "dev": true
10474 + "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg=="
10475 },
10476 "node_modules/stream-combiner": {
10477 "version": "0.0.4",
@@ -10222,6 +10555,22 @@
10555 "url": "https://github.com/sponsors/sindresorhus"
10556 }
10557 },
10558 + "node_modules/strip-literal": {
10559 + "version": "2.1.0",
10560 + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz",
10561 + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==",
10562 + "dependencies": {
10563 + "js-tokens": "^9.0.0"
10564 + },
10565 + "funding": {
10566 + "url": "https://github.com/sponsors/antfu"
10567 + }
10568 + },
10569 + "node_modules/strip-literal/node_modules/js-tokens": {
10570 + "version": "9.0.0",
10571 + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz",
10572 + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ=="
10573 + },
10574 "node_modules/sucrase": {
10575 "version": "3.35.0",
10576 "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
@@ -10269,7 +10618,6 @@
10618 "version": "5.5.0",
10619 "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
10620 "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
10272 - "dev": true,
10621 "dependencies": {
10622 "has-flag": "^3.0.0"
10623 },
@@ -10520,7 +10868,6 @@
10868 "version": "6.2.1",
10869 "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz",
10870 "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==",
10523 - "dev": true,
10871 "dependencies": {
10872 "chownr": "^2.0.0",
10873 "fs-minipass": "^2.0.0",
@@ -10537,7 +10884,6 @@
10884 "version": "2.1.0",
10885 "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
10886 "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
10540 - "dev": true,
10887 "dependencies": {
10888 "minipass": "^3.0.0"
10889 },
@@ -10549,7 +10895,6 @@
10895 "version": "3.3.6",
10896 "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz",
10897 "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
10552 - "dev": true,
10898 "dependencies": {
10899 "yallist": "^4.0.0"
10900 },
@@ -10561,7 +10906,6 @@
10906 "version": "5.0.0",
10907 "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz",
10908 "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==",
10564 - "dev": true,
10909 "engines": {
10910 "node": ">=8"
10911 }
@@ -10570,7 +10914,6 @@
10914 "version": "1.0.4",
10915 "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
10916 "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
10573 - "dev": true,
10917 "bin": {
10918 "mkdirp": "bin/cmd.js"
10919 },
@@ -10581,8 +10924,7 @@
10924 "node_modules/tar/node_modules/yallist": {
10925 "version": "4.0.0",
10926 "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
10584 - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
10585 - "dev": true
10927 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
10928 },
10929 "node_modules/taze": {
10930 "version": "0.16.7",
@@ -10912,8 +11254,7 @@
11254 "node_modules/ufo": {
11255 "version": "1.5.4",
11256 "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
10915 - "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
10916 - "dev": true
11257 + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ=="
11258 },
11259 "node_modules/unconfig": {
11260 "version": "0.3.13",
@@ -10928,12 +11269,86 @@
11269 "url": "https://github.com/sponsors/antfu"
11270 }
11271 },
11272 + "node_modules/uncrypto": {
11273 + "version": "0.1.3",
11274 + "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz",
11275 + "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="
11276 + },
11277 + "node_modules/unctx": {
11278 + "version": "2.3.1",
11279 + "resolved": "https://registry.npmjs.org/unctx/-/unctx-2.3.1.tgz",
11280 + "integrity": "sha512-PhKke8ZYauiqh3FEMVNm7ljvzQiph0Mt3GBRve03IJm7ukfaON2OBK795tLwhbyfzknuRRkW0+Ze+CQUmzOZ+A==",
11281 + "dependencies": {
11282 + "acorn": "^8.8.2",
11283 + "estree-walker": "^3.0.3",
11284 + "magic-string": "^0.30.0",
11285 + "unplugin": "^1.3.1"
11286 + }
11287 + },
11288 + "node_modules/unctx/node_modules/estree-walker": {
11289 + "version": "3.0.3",
11290 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
11291 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
11292 + "dependencies": {
11293 + "@types/estree": "^1.0.0"
11294 + }
11295 + },
11296 "node_modules/undici-types": {
11297 "version": "6.19.6",
11298 "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz",
11299 "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==",
11300 "dev": true
11301 },
11302 + "node_modules/unicorn-magic": {
11303 + "version": "0.1.0",
11304 + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz",
11305 + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==",
11306 + "engines": {
11307 + "node": ">=18"
11308 + },
11309 + "funding": {
11310 + "url": "https://github.com/sponsors/sindresorhus"
11311 + }
11312 + },
11313 + "node_modules/unimport": {
11314 + "version": "3.11.1",
11315 + "resolved": "https://registry.npmjs.org/unimport/-/unimport-3.11.1.tgz",
11316 + "integrity": "sha512-DuB1Uoq01LrrXTScxnwOoMSlTXxyKcULguFxbLrMDFcE/CO0ZWHpEiyhovN0mycPt7K6luAHe8laqvwvuoeUPg==",
11317 + "dependencies": {
11318 + "@rollup/pluginutils": "^5.1.0",
11319 + "acorn": "^8.12.1",
11320 + "escape-string-regexp": "^5.0.0",
11321 + "estree-walker": "^3.0.3",
11322 + "fast-glob": "^3.3.2",
11323 + "local-pkg": "^0.5.0",
11324 + "magic-string": "^0.30.11",
11325 + "mlly": "^1.7.1",
11326 + "pathe": "^1.1.2",
11327 + "pkg-types": "^1.2.0",
11328 + "scule": "^1.3.0",
11329 + "strip-literal": "^2.1.0",
11330 + "unplugin": "^1.12.2"
11331 + }
11332 + },
11333 + "node_modules/unimport/node_modules/escape-string-regexp": {
11334 + "version": "5.0.0",
11335 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
11336 + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
11337 + "engines": {
11338 + "node": ">=12"
11339 + },
11340 + "funding": {
11341 + "url": "https://github.com/sponsors/sindresorhus"
11342 + }
11343 + },
11344 + "node_modules/unimport/node_modules/estree-walker": {
11345 + "version": "3.0.3",
11346 + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
11347 + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
11348 + "dependencies": {
11349 + "@types/estree": "^1.0.0"
11350 + }
11351 + },
11352 "node_modules/unique-filename": {
11353 "version": "3.0.0",
11354 "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
@@ -10968,18 +11383,23 @@
11383 }
11384 },
11385 "node_modules/unplugin": {
10971 - "version": "1.12.1",
10972 - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.12.1.tgz",
10973 - "integrity": "sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==",
10974 - "dev": true,
11386 + "version": "1.13.1",
11387 + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.13.1.tgz",
11388 + "integrity": "sha512-6Kq1iSSwg7KyjcThRUks9LuqDAKvtnioxbL9iEtB9ctTyBA5OmrB8gZd/d225VJu1w3UpUsKV7eGrvf59J7+VA==",
11389 "dependencies": {
11390 "acorn": "^8.12.1",
10977 - "chokidar": "^3.6.0",
10978 - "webpack-sources": "^3.2.3",
11391 "webpack-virtual-modules": "^0.6.2"
11392 },
11393 "engines": {
11394 "node": ">=14.0.0"
11395 + },
11396 + "peerDependencies": {
11397 + "webpack-sources": "^3"
11398 + },
11399 + "peerDependenciesMeta": {
11400 + "webpack-sources": {
11401 + "optional": true
11402 + }
11403 }
11404 },
11405 "node_modules/unplugin-vue-components": {
@@ -11043,11 +11463,27 @@
11463 "node": ">=8"
11464 }
11465 },
11466 + "node_modules/untyped": {
11467 + "version": "1.4.2",
11468 + "resolved": "https://registry.npmjs.org/untyped/-/untyped-1.4.2.tgz",
11469 + "integrity": "sha512-nC5q0DnPEPVURPhfPQLahhSTnemVtPzdx7ofiRxXpOB2SYnb3MfdU3DVGyJdS8Lx+tBWeAePO8BfU/3EgksM7Q==",
11470 + "dependencies": {
11471 + "@babel/core": "^7.23.7",
11472 + "@babel/standalone": "^7.23.8",
11473 + "@babel/types": "^7.23.6",
11474 + "defu": "^6.1.4",
11475 + "jiti": "^1.21.0",
11476 + "mri": "^1.2.0",
11477 + "scule": "^1.2.0"
11478 + },
11479 + "bin": {
11480 + "untyped": "dist/cli.mjs"
11481 + }
11482 + },
11483 "node_modules/update-browserslist-db": {
11484 "version": "1.1.0",
11485 "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
11486 "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
11050 - "dev": true,
11487 "funding": [
11488 {
11489 "type": "opencollective",
@@ -11274,15 +11710,15 @@
11710 }
11711 },
11712 "node_modules/vite-plugin-inspect": {
11277 - "version": "0.8.5",
11278 - "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.5.tgz",
11279 - "integrity": "sha512-JvTUqsP1JNDw0lMZ5Z/r5cSj81VK2B7884LO1DC3GMBhdcjcsAnJjdWq7bzQL01Xbh+v60d3lju3g+z7eAtNew==",
11713 + "version": "0.8.7",
11714 + "resolved": "https://registry.npmjs.org/vite-plugin-inspect/-/vite-plugin-inspect-0.8.7.tgz",
11715 + "integrity": "sha512-/XXou3MVc13A5O9/2Nd6xczjrUwt7ZyI9h8pTnUMkr5SshLcb0PJUOVq2V+XVkdeU4njsqAtmK87THZuO2coGA==",
11716 "dev": true,
11717 "dependencies": {
11718 "@antfu/utils": "^0.7.10",
11719 "@rollup/pluginutils": "^5.1.0",
11284 - "debug": "^4.3.5",
11285 - "error-stack-parser-es": "^0.1.4",
11720 + "debug": "^4.3.6",
11721 + "error-stack-parser-es": "^0.1.5",
11722 "fs-extra": "^11.2.0",
11723 "open": "^10.1.0",
11724 "perfect-debounce": "^1.0.0",
@@ -11350,18 +11786,18 @@
11786 }
11787 },
11788 "node_modules/vite-plugin-vue-devtools": {
11353 - "version": "7.3.9",
11354 - "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.3.9.tgz",
11355 - "integrity": "sha512-ybDV2kepW0NpusvtfbRKHs0pvyrReNcFtL572gyZ6Alox6u5uebYefd2eAG/7mJSU3NPI5UxUH1e/Mof5exdlw==",
11789 + "version": "7.4.4",
11790 + "resolved": "https://registry.npmjs.org/vite-plugin-vue-devtools/-/vite-plugin-vue-devtools-7.4.4.tgz",
11791 + "integrity": "sha512-lJ7Vr6gznv1nf2S75XJTpXl4XcwnHfyvqJQ7szOvTUfumQALDGo772TEH69wx8gkY/ZWZQea4DZR5IQZMOZKUA==",
11792 "dev": true,
11793 "dependencies": {
11358 - "@vue/devtools-core": "^7.3.9",
11359 - "@vue/devtools-kit": "^7.3.9",
11360 - "@vue/devtools-shared": "^7.3.9",
11794 + "@vue/devtools-core": "^7.4.4",
11795 + "@vue/devtools-kit": "^7.4.4",
11796 + "@vue/devtools-shared": "^7.4.4",
11797 "execa": "^8.0.1",
11798 "sirv": "^2.0.4",
11363 - "vite-plugin-inspect": "^0.8.5",
11364 - "vite-plugin-vue-inspector": "^5.1.3"
11799 + "vite-plugin-inspect": "^0.8.7",
11800 + "vite-plugin-vue-inspector": "^5.2.0"
11801 },
11802 "engines": {
11803 "node": ">=v14.21.3"
@@ -11505,9 +11941,9 @@
11941 }
11942 },
11943 "node_modules/vite-plugin-vue-inspector": {
11508 - "version": "5.1.3",
11509 - "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.1.3.tgz",
11510 - "integrity": "sha512-pMrseXIDP1Gb38mOevY+BvtNGNqiqmqa2pKB99lnLsADQww9w9xMbAfT4GB6RUoaOkSPrtlXqpq2Fq+Dj2AgFg==",
11944 + "version": "5.2.0",
11945 + "resolved": "https://registry.npmjs.org/vite-plugin-vue-inspector/-/vite-plugin-vue-inspector-5.2.0.tgz",
11946 + "integrity": "sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==",
11947 "dev": true,
11948 "dependencies": {
11949 "@babel/core": "^7.23.0",
@@ -11752,15 +12188,15 @@
12188 "dev": true
12189 },
12190 "node_modules/vue": {
11755 - "version": "3.5.0",
11756 - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.0.tgz",
11757 - "integrity": "sha512-1t70favYoFijwfWJ7g81aTd32obGaAnKYE9FNyMgnEzn3F4YncRi/kqAHHKloG0VXTD8vBYMhbgLKCA+Sk6QDw==",
12191 + "version": "3.5.3",
12192 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.3.tgz",
12193 + "integrity": "sha512-xvRbd0HpuLovYbOHXRHlSBsSvmUJbo0pzbkKTApWnQGf3/cu5Z39mQeA5cZdLRVIoNf3zI6MSoOgHUT5i2jO+Q==",
12194 "dependencies": {
11759 - "@vue/compiler-dom": "3.5.0",
11760 - "@vue/compiler-sfc": "3.5.0",
11761 - "@vue/runtime-dom": "3.5.0",
11762 - "@vue/server-renderer": "3.5.0",
11763 - "@vue/shared": "3.5.0"
12195 + "@vue/compiler-dom": "3.5.3",
12196 + "@vue/compiler-sfc": "3.5.3",
12197 + "@vue/runtime-dom": "3.5.3",
12198 + "@vue/server-renderer": "3.5.3",
12199 + "@vue/shared": "3.5.3"
12200 },
12201 "peerDependencies": {
12202 "typescript": "*"
@@ -11901,14 +12337,13 @@
12337 }
12338 },
12339 "node_modules/vue-tsc": {
11904 - "version": "2.1.5",
11905 - "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.5.tgz",
11906 - "integrity": "sha512-r4uljp8HQkGXPnNHR0qKkoE/g5OYYycr9Kfblxg0pLaPAxVr7SU/wmYhD7Y/ETApDl4+ZwvgFgn3RTOE7Xgy0Q==",
11907 - "deprecated": "use 2.1.4 instead",
12340 + "version": "2.1.6",
12341 + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz",
12342 + "integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==",
12343 "dev": true,
12344 "dependencies": {
12345 "@volar/typescript": "~2.4.1",
11911 - "@vue/language-core": "2.1.5",
12346 + "@vue/language-core": "2.1.6",
12347 "semver": "^7.5.4"
12348 },
12349 "bin": {
@@ -12019,7 +12454,8 @@
12454 "version": "3.2.3",
12455 "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz",
12456 "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==",
12022 - "dev": true,
12457 + "optional": true,
12458 + "peer": true,
12459 "engines": {
12460 "node": ">=10.13.0"
12461 }
@@ -12027,8 +12463,7 @@
12463 "node_modules/webpack-virtual-modules": {
12464 "version": "0.6.2",
12465 "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz",
12030 - "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
12031 - "dev": true
12466 + "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="
12467 },
12468 "node_modules/whatwg-encoding": {
12469 "version": "3.1.1",
@@ -12285,8 +12720,7 @@
12720 "node_modules/yallist": {
12721 "version": "3.1.1",
12722 "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
12288 - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
12289 - "dev": true
12723 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
12724 },
12725 "node_modules/yaml": {
12726 "version": "2.5.0",
frontend/package.json
+10 -10
@@ -36,7 +36,7 @@
36 "@fontsource/lexend": "^5.0.21",
37 "@fontsource/public-sans": "^5.0.18",
38 "@popperjs/core": "^2.11.8",
39 - "@shikijs/markdown-it": "^1.16.1",
39 + "@shikijs/markdown-it": "^1.16.2",
40 "@vueuse/components": "^11.0.3",
41 "@vueuse/core": "^11.0.3",
42 "apexcharts": "^3.53.0",
@@ -56,11 +56,11 @@
56 "naive-ui": "^2.39.0",
57 "password-validator": "^5.3.0",
58 "pinia": "^2.2.2",
59 - "pinia-plugin-persistedstate": "^3.2.3",
59 + "pinia-plugin-persistedstate": "^4.0.0",
60 "secure-ls": "^2.0.0",
61 - "shiki": "^1.16.1",
61 + "shiki": "^1.16.2",
62 "validator": "^13.12.0",
63 - "vue": "^3.5.0",
63 + "vue": "^3.5.3",
64 "vue-advanced-cropper": "^2.8.9",
65 "vue-highlight-words": "^3.0.1",
66 "vue-i18n": "^9.14.0",
@@ -80,7 +80,7 @@
80 "@types/inquirer": "^9.0.7",
81 "@types/jsdom": "^21.1.7",
82 "@types/lodash": "^4.17.7",
83 - "@types/node": "^22.5.2",
83 + "@types/node": "^22.5.4",
84 "@types/validator": "^13.12.1",
85 "@vitejs/plugin-vue": "^5.1.3",
86 "@vitejs/plugin-vue-jsx": "^4.0.1",
@@ -89,7 +89,7 @@
89 "@vue/test-utils": "^2.4.6",
90 "@vue/tsconfig": "^0.5.1",
91 "autoprefixer": "^10.4.20",
92 - "cypress": "^13.14.1",
92 + "cypress": "^13.14.2",
93 "eslint": "^9.9.1",
94 "eslint-plugin-cypress": "^3.5.0",
95 "eslint-plugin-vue": "^9.28.0",
@@ -100,9 +100,9 @@
100 "json5": "^2.2.3",
101 "npm-run-all2": "^6.2.2",
102 "picocolors": "^1.1.0",
103 - "postcss": "^8.4.44",
103 + "postcss": "^8.4.45",
104 "prettier": "^3.3.3",
105 - "sass": "^1.77.8",
105 + "sass": "^1.78.0",
106 "start-server-and-test": "^2.0.5",
107 "tailwind-config-viewer": "^2.0.4",
108 "tailwindcss": "^3.4.10",
@@ -112,10 +112,10 @@
112 "vite": "^5.4.3",
113 "vite-bundle-analyzer": "^0.10.6",
114 "vite-bundle-visualizer": "^1.2.1",
115 - "vite-plugin-vue-devtools": "^7.3.9",
115 + "vite-plugin-vue-devtools": "^7.4.4",
116 "vite-svg-loader": "^5.1.0",
117 "vitest": "^2.0.5",
118 - "vue-tsc": "^2.1.5"
118 + "vue-tsc": "^2.1.6"
119 },
120 "optionalDependencies": {
121 "@rollup/rollup-linux-x64-gnu": "^4.21.2"
frontend/src/api/endpoints/incidentManagement.ts
+5 -2
@@ -10,7 +10,7 @@ import type {
10 AlertTag,
11 AlertTimeline
12 } from "@/types/incidentManagement/alerts.d"
13 -import type { Case } from "@/types/incidentManagement/cases.d"
13 +import type { Case, CasePayload } from "@/types/incidentManagement/cases.d"
14 import type { IncidentNotification, IncidentNotificationPayload } from "@/types/incidentManagement/notifications.d"
15
16 export type AlertsFilter =
@@ -192,7 +192,10 @@ export default {
192 getCase(caseId: number) {
193 return HttpClient.get<FlaskBaseResponse & { cases: Case[] }>(`/incidents/db_operations/case/${caseId}`)
194 },
195 - createCase(alertId: number) {
195 + createCase(payload: CasePayload) {
196 + return HttpClient.post<FlaskBaseResponse & { case: Case }>(`/incidents/db_operations/case/create`, payload)
197 + },
198 + createCaseFromAlert(alertId: number) {
199 return HttpClient.post<FlaskBaseResponse & { case_alert_link: { case_id: number; alert_id: number } }>(
200 `/incidents/db_operations/case/from-alert`,
201 {
frontend/src/components/cloudSecurityAssessment/AvailableReportsList.vue
+7 -7
@@ -30,8 +30,8 @@
30 </div>
31 </div>
32 <n-spin :show="loading" class="min-h-32">
33 - <div class="list grid gap-4 grid-auto-fill-250">
34 - <template v-if="reportsList.length">
33 + <template v-if="reportsList.length">
34 + <div class="list grid gap-4 grid-auto-fill-250">
35 <AvailableReportsItem
36 v-for="report of reportsList"
37 :key="report"
@@ -39,11 +39,11 @@
39 class="item-appear item-appear-bottom item-appear-005"
40 @deleted="getReports()"
41 />
42 - </template>
43 - <template v-else>
44 - <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
45 - </template>
46 - </div>
42 + </div>
43 + </template>
44 + <template v-else>
45 + <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
46 + </template>
47 </n-spin>
48
49 <n-modal
frontend/src/components/incidentManagement/alerts/AlertCreateCaseButton.vue
+1 -1
@@ -32,7 +32,7 @@ function createCase() {
32 creating.value = true
33
34 Api.incidentManagement
35 - .createCase(alert.value.id)
35 + .createCaseFromAlert(alert.value.id)
36 .then(res => {
37 if (res.data.success) {
38 updateAlert({
frontend/src/components/incidentManagement/cases/CaseCreationButton.vue new
+50
@@ -0,0 +1,50 @@
1 +<template>
2 + <n-button size="small" type="primary" @click="showForm = true" :loading="loading">
3 + <template #icon>
4 + <Icon :name="NewCaseIcon" :size="14"></Icon>
5 + </template>
6 + <span v-if="!onlyIcon">Create Case</span>
7 + </n-button>
8 +
9 + <n-modal
10 + v-model:show="showForm"
11 + display-directive="show"
12 + preset="card"
13 + :style="{ maxWidth: 'min(600px, 90vw)', minHeight: 'min(300px, 90vh)', overflow: 'hidden' }"
14 + title="Create a new Case"
15 + :bordered="false"
16 + segmented
17 + >
18 + <CaseCreationForm
19 + @mounted="formCTX = $event"
20 + v-model:loading="loading"
21 + @submitted="emit('submitted', $event)"
22 + />
23 + </n-modal>
24 +</template>
25 +
26 +<script setup lang="ts">
27 +import { ref, toRefs, watch } from "vue"
28 +import { NButton, NModal } from "naive-ui"
29 +import Icon from "@/components/common/Icon.vue"
30 +import CaseCreationForm from "./CaseCreationForm.vue"
31 +import type { Case } from "@/types/incidentManagement/cases"
32 +
33 +const emit = defineEmits<{
34 + (e: "submitted", value: Case): void
35 +}>()
36 +
37 +const props = defineProps<{ onlyIcon?: boolean }>()
38 +const { onlyIcon } = toRefs(props)
39 +
40 +const NewCaseIcon = "carbon:fetch-upload-cloud"
41 +const formCTX = ref<{ load: () => void } | null>(null)
42 +const showForm = ref(false)
43 +const loading = ref(false)
44 +
45 +watch(showForm, val => {
46 + if (val) {
47 + formCTX.value?.load()
48 + }
49 +})
50 +</script>
frontend/src/components/incidentManagement/cases/CaseCreationForm.vue new
+242
@@ -0,0 +1,242 @@
1 +<template>
2 + <n-spin :show="loading" class="customer-provisioning-default-settings-form">
3 + <n-form :label-width="80" :model="form" :rules="rules" ref="formRef">
4 + <div class="flex flex-col gap-3">
5 + <div>
6 + <n-form-item label="Name" path="case_name">
7 + <n-input v-model:value.trim="form.case_name" placeholder="Input the case name..." clearable />
8 + </n-form-item>
9 + </div>
10 + <div>
11 + <n-form-item label="Description" path="case_description">
12 + <n-input
13 + v-model:value.trim="form.case_description"
14 + placeholder="Input the case description..."
15 + clearable
16 + type="textarea"
17 + :autosize="{
18 + minRows: 5,
19 + maxRows: 15
20 + }"
21 + />
22 + </n-form-item>
23 + </div>
24 + <div class="flex gap-3">
25 + <n-form-item label="Status" path="case_status" class="basis-1/2">
26 + <n-select
27 + v-model:value="form.case_status"
28 + :options="statusOptions"
29 + placeholder="Value..."
30 + clearable
31 + to="body"
32 + />
33 + </n-form-item>
34 + <n-form-item label="Assigned user" path="assigned_to" class="basis-1/2">
35 + <n-select
36 + v-model:value="form.assigned_to"
37 + :options="usersOptions"
38 + placeholder="Value..."
39 + clearable
40 + to="body"
41 + />
42 + </n-form-item>
43 + </div>
44 +
45 + <div class="flex justify-between gap-4">
46 + <div class="flex gap-4">
47 + <slot name="additionalActions"></slot>
48 + </div>
49 + <div class="flex gap-4">
50 + <n-button @click="reset()" :disabled="loading">Reset</n-button>
51 + <n-button type="primary" :disabled="!isValid" @click="validate()" :loading="submitting">
52 + Submit
53 + </n-button>
54 + </div>
55 + </div>
56 + </div>
57 + </n-form>
58 + </n-spin>
59 +</template>
60 +
61 +<script setup lang="ts">
62 +import { computed, inject, onBeforeMount, onMounted, ref, watch, type Ref } from "vue"
63 +import {
64 + NForm,
65 + NFormItem,
66 + NInput,
67 + NButton,
68 + NSpin,
69 + NSelect,
70 + useMessage,
71 + type FormValidationError,
72 + type FormInst,
73 + type FormRules
74 +} from "naive-ui"
75 +import Api from "@/api"
76 +import _trim from "lodash/trim"
77 +import _get from "lodash/get"
78 +import type { AlertStatus } from "@/types/incidentManagement/alerts.d"
79 +import type { Case, CasePayload } from "@/types/incidentManagement/cases.d"
80 +
81 +const emit = defineEmits<{
82 + (e: "update:loading", value: boolean): void
83 + (e: "submitted", value: Case): void
84 + (
85 + e: "mounted",
86 + value: {
87 + load: () => void
88 + }
89 + ): void
90 +}>()
91 +
92 +const loadingAvailableUsers = ref(false)
93 +const submitting = ref(false)
94 +const loading = computed(() => loadingAvailableUsers.value || submitting.value)
95 +const message = useMessage()
96 +const form = ref<CasePayload>(getForm())
97 +const formRef = ref<FormInst | null>(null)
98 +const availableUsers = inject<Ref<string[]>>("assignable-users", ref([]))
99 +
100 +const rules: FormRules = {
101 + case_name: {
102 + message: "Please input the Name",
103 + required: true,
104 + trigger: ["input", "blur"]
105 + },
106 + case_description: {
107 + message: "Please input the Description",
108 + required: true,
109 + trigger: ["input", "blur"]
110 + },
111 + assigned_to: {
112 + message: "Please input the Assigned user",
113 + required: true,
114 + trigger: ["input", "blur"]
115 + },
116 + case_status: {
117 + message: "Please input the Status",
118 + required: true,
119 + trigger: ["input", "blur"]
120 + }
121 +}
122 +
123 +const statusOptions: { label: string; value: AlertStatus }[] = [
124 + { label: "Open", value: "OPEN" },
125 + { label: "Closed", value: "CLOSED" },
126 + { label: "In progress", value: "IN_PROGRESS" }
127 +]
128 +
129 +const usersOptions = computed(() => availableUsers.value.map(o => ({ label: o, value: o })))
130 +
131 +const isValid = computed(() => {
132 + let valid = true
133 +
134 + for (const key in rules) {
135 + const rule = rules[key] as FormRules
136 +
137 + if (rule.required && !_trim(_get(form.value, key))) {
138 + valid = false
139 + }
140 + }
141 +
142 + return valid
143 +})
144 +
145 +function validate() {
146 + if (!formRef.value) return
147 +
148 + formRef.value.validate((errors?: Array<FormValidationError>) => {
149 + if (!errors) {
150 + submit()
151 + } else {
152 + message.warning("You must fill in the required fields correctly.")
153 + return false
154 + }
155 + })
156 +}
157 +
158 +function getForm() {
159 + const payload = {
160 + case_name: "",
161 + case_creation_time: new Date(),
162 + case_description: "",
163 + assigned_to: null,
164 + case_status: null
165 + }
166 + return payload
167 +}
168 +
169 +function reset(force?: boolean) {
170 + if (!loading.value || force) {
171 + resetForm()
172 + formRef.value?.restoreValidation()
173 + }
174 +}
175 +
176 +function resetForm() {
177 + form.value = getForm()
178 +}
179 +
180 +function submit() {
181 + submitting.value = true
182 +
183 + Api.incidentManagement
184 + .createCase(form.value)
185 + .then(res => {
186 + if (res.data.success) {
187 + message.success(res.data?.message || "Case created successfully")
188 + reset(true)
189 + emit("submitted", res.data.case)
190 + } else {
191 + message.warning(res.data?.message || "An error occurred. Please try again later.")
192 + }
193 + })
194 + .catch(err => {
195 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
196 + })
197 + .finally(() => {
198 + submitting.value = false
199 + })
200 +}
201 +
202 +function getAvailableUsers() {
203 + loadingAvailableUsers.value = true
204 +
205 + Api.incidentManagement
206 + .getAvailableUsers()
207 + .then(res => {
208 + if (res.data.success) {
209 + availableUsers.value = res.data?.available_users || []
210 + } else {
211 + message.warning(res.data?.message || "An error occurred. Please try again later.")
212 + }
213 + })
214 + .catch(err => {
215 + message.error(err.response?.data?.message || "An error occurred. Please try again later.")
216 + })
217 + .finally(() => {
218 + loadingAvailableUsers.value = false
219 + })
220 +}
221 +
222 +function load() {
223 + if (!availableUsers.value.length) {
224 + getAvailableUsers()
225 + }
226 + reset()
227 +}
228 +
229 +watch(loading, val => {
230 + emit("update:loading", val)
231 +})
232 +
233 +onBeforeMount(() => {
234 + load()
235 +})
236 +
237 +onMounted(() => {
238 + emit("mounted", {
239 + load
240 + })
241 +})
242 +</script>
frontend/src/components/incidentManagement/cases/CaseDetails.vue
+14 -9
@@ -15,14 +15,19 @@
15 </n-tab-pane>
16 <n-tab-pane name="Alerts" tab="Alerts" display-directive="show:lazy">
17 <div class="p-7 pt-4 flex flex-col gap-2">
18 - <AlertItem
19 - v-for="alert of caseEntity.alerts"
20 - :key="alert.id"
21 - :alertData="alert"
22 - embedded
23 - @deleted="getCase(caseEntity.id)"
24 - @updated="getCase(caseEntity.id)"
25 - />
18 + <template v-if="caseEntity.alerts.length">
19 + <AlertItem
20 + v-for="alert of caseEntity.alerts"
21 + :key="alert.id"
22 + :alertData="alert"
23 + embedded
24 + @deleted="getCase(caseEntity.id)"
25 + @updated="getCase(caseEntity.id)"
26 + />
27 + </template>
28 + <template v-else>
29 + <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
30 + </template>
31 </div>
32 </n-tab-pane>
33 </n-tabs>
@@ -31,7 +36,7 @@
36
37 <script setup lang="ts">
38 import { defineAsyncComponent, onBeforeMount, ref, toRefs } from "vue"
34 -import { NTabs, NTabPane, NSpin, useMessage } from "naive-ui"
39 +import { NTabs, NTabPane, NSpin, NEmpty, useMessage } from "naive-ui"
40 import _clone from "lodash/cloneDeep"
41 import Api from "@/api"
42 import type { Case } from "@/types/incidentManagement/cases.d"
frontend/src/components/incidentManagement/cases/CaseOverview.vue
+5 -1
@@ -89,7 +89,11 @@
89 <div class="px-7">
90 <KVCard>
91 <template #key>description</template>
92 - <template #value>{{ caseData.case_description ?? "-" }}</template>
92 + <template #value>
93 + <span class="whitespace-pre-wrap">
94 + {{ caseData.case_description ?? "-" }}
95 + </span>
96 + </template>
97 </KVCard>
98 </div>
99
frontend/src/components/incidentManagement/cases/CasesList.vue
+7 -17
@@ -1,7 +1,7 @@
1 <template>
2 <div class="cases-list">
3 <div class="header flex items-center justify-end gap-2" ref="header">
4 - <div class="info grow flex gap-2 lg:!hidden">
4 + <div class="info grow flex gap-2">
5 <n-popover overlap placement="left">
6 <template #trigger>
7 <div class="bg-color border-radius">
@@ -35,22 +35,8 @@
35 </div>
36 </div>
37 </n-popover>
38 - </div>
39 - <div class="info grow lg:flex gap-2 hidden text-sm">
40 - Total :
41 - <code>{{ total }}</code>
42 - <span>/</span>
43 - <span class="text-secondary-color">Open :</span>
44 - <code class="text-error-color">{{ statusOpenTotal }}</code>
45 - <span>/</span>
46 - <span class="text-secondary-color">In Progress :</span>
47 - <code class="text-warning-color">{{ statusInProgressTotal }}</code>
48 - <span>/</span>
49 - <span class="text-secondary-color">Close :</span>
50 - <code class="text-success-color">{{ statusCloseTotal }}</code>
51 - <span>/</span>
52 - <span class="text-secondary-color">N/D :</span>
53 - <code>{{ statusUndefinedTotal }}</code>
38 +
39 + <CaseCreationButton @submitted="getData()" :only-icon="caseCreationButtonOnlyIcon" />
40 </div>
41 <n-pagination
42 v-model:page="currentPage"
@@ -176,6 +162,7 @@ import Api from "@/api"
162 import _cloneDeep from "lodash/cloneDeep"
163 import _orderBy from "lodash/orderBy"
164 import Icon from "@/components/common/Icon.vue"
165 +import CaseCreationButton from "./CaseCreationButton.vue"
166 import { useResizeObserver } from "@vueuse/core"
167 import type { AlertStatus } from "@/types/incidentManagement/alerts.d"
168 import type { Case } from "@/types/incidentManagement/cases.d"
@@ -199,6 +186,7 @@ const availableUsers = ref<string[]>([])
186 const pageSize = ref(25)
187 const currentPage = ref(1)
188 const simpleMode = ref(false)
189 +const caseCreationButtonOnlyIcon = ref(false)
190 const showSizePicker = ref(true)
191 const pageSizes = [10, 25, 50, 100]
192 const header = ref()
@@ -367,6 +355,8 @@ useResizeObserver(header, entries => {
355
356 pageSlot.value = width < 700 ? 5 : 8
357 simpleMode.value = width < 550
358 +
359 + caseCreationButtonOnlyIcon.value = (width < 580 && width > 549) || width < 390
360 })
361
362 onBeforeMount(() => {
frontend/src/components/webVulnerabilityAssessment/ReportsList.vue
+7 -7
@@ -30,8 +30,8 @@
30 </div>
31 </div>
32 <n-spin :show="loading" class="min-h-32">
33 - <div class="list grid gap-4 grid-auto-fill-250">
34 - <template v-if="reportsList.length">
33 + <template v-if="reportsList.length">
34 + <div class="list grid gap-4 grid-auto-fill-250">
35 <ReportsItem
36 v-for="report of reportsList"
37 :key="report"
@@ -39,11 +39,11 @@
39 class="item-appear item-appear-bottom item-appear-005"
40 @deleted="getReports()"
41 />
42 - </template>
43 - <template v-else>
44 - <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
45 - </template>
46 - </div>
42 + </div>
43 + </template>
44 + <template v-else>
45 + <n-empty description="No items found" class="justify-center h-48" v-if="!loading" />
46 + </template>
47 </n-spin>
48
49 <n-modal
frontend/src/types/incidentManagement/cases.d.ts
+2
@@ -9,3 +9,5 @@ export interface Case {
9 alerts: Alert[]
10 case_status: null | AlertStatus
11 }
12 +
13 +export type CasePayload = Omit<Case, "id" | "alerts">