diff --git a/.dockerignore b/.dockerignore index d397c3c..b653b8d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,7 +5,6 @@ .git .gitignore .jj -.tls .woodpecker .zed Dockerfile* diff --git a/.gitignore b/.gitignore index 57144a8..72054e0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .cache/ -.tls/ dist node_modules .env.development diff --git a/bun.lock b/bun.lock index c598666..a448063 100644 --- a/bun.lock +++ b/bun.lock @@ -9,7 +9,6 @@ "@thi.ng/color-palettes": "latest", "@thi.ng/pixel": "latest", "@thi.ng/pixel-dither": "latest", - "@xstate/vue": "latest", "a11y-dialog": "latest", "drizzle-orm": "latest", "effect": "latest", @@ -17,7 +16,6 @@ "sqlocal": "latest", "vue": "latest", "vue-router": "latest", - "xstate": "latest", }, "devDependencies": { "@cspell/dict-fr-fr": "latest", @@ -215,11 +213,11 @@ "@effect/experimental": ["@effect/experimental@0.41.4", "", { "dependencies": { "msgpackr": "^1.10.2", "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.77.4", "@effect/platform-node": "^0.73.4", "effect": "^3.13.4", "ioredis": "^5", "lmdb": "^3", "ws": "^8" }, "optionalPeers": ["@effect/platform-node", "ioredis", "lmdb", "ws"] }, "sha512-celrEhl/K2Eis906d3/oOv/3/w+M1jcONvrChG5qQgWYo6CJjSJm4xXopcTbiBhxAhvkd06zABkB3tr/lptUCA=="], - "@effect/platform": ["@effect/platform@0.79.0", "", { "dependencies": { "find-my-way-ts": "^0.1.5", "multipasta": "^0.2.5" }, "peerDependencies": { "effect": "^3.13.9" } }, "sha512-xqnHRsCIvCsGuEIL9Ob4FZsMUU1ziIjZs+2owOGHt3Y3pseBho2A7pIMfUhOPwRrZRRV4/Jp4xpY7Mz5xbQOsw=="], + "@effect/platform": ["@effect/platform@0.77.6", "", { "dependencies": { "find-my-way-ts": "^0.1.5", "multipasta": "^0.2.5" }, "peerDependencies": { "effect": "^3.13.6" } }, "sha512-ghhLNyj/UoQvmp2I29nqngMlAzQB72BhjUKcOA58cUPaUUwNy3K2jmUAzdU6SB3RHIObsX44CM/jXZiYfTv59A=="], "@effect/sql": ["@effect/sql@0.30.4", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.25.1", "uuid": "^11.0.3" }, "peerDependencies": { "@effect/experimental": "^0.41.4", "@effect/platform": "^0.77.4", "effect": "^3.13.4" } }, "sha512-hyGOZsNRlw09yqBcXCTr1o2+vVIVxEnBMNZzi0ZX5JbS8JBT05O7xAu3OYEzSU6bC5i+uVpJJUgdx2zDlOLkeA=="], - "@effect/sql-drizzle": ["@effect/sql-drizzle@0.31.0", "", { "peerDependencies": { "@effect/sql": "^0.32.0", "drizzle-orm": "^0.31", "effect": "^3.13.9" } }, "sha512-PN7BJIX6d/qeBFkXLBJfNjMar2s46AFbzihAtJ7biFDocamq++9SYvpVfUr01go+2MVZ/7CD7kHfOMm1o+YHrg=="], + "@effect/sql-drizzle": ["@effect/sql-drizzle@0.29.6", "", { "peerDependencies": { "@effect/sql": "^0.30.6", "drizzle-orm": "^0.31", "effect": "^3.13.6" } }, "sha512-ST3HEXQZfp9tUXKOKxpfh9bbTukJsomyXXzZLvPo/KvF8nPpRltovYNT55Dsk+0vN8JyOHri+mX8hKBG5JzXcA=="], "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], @@ -281,15 +279,13 @@ "@eslint/config-array": ["@eslint/config-array@0.19.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w=="], - "@eslint/config-helpers": ["@eslint/config-helpers@0.1.0", "", {}, "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA=="], - "@eslint/core": ["@eslint/core@0.10.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw=="], "@eslint/css": ["@eslint/css@0.4.0", "", { "dependencies": { "@eslint/core": "^0.10.0", "@eslint/plugin-kit": "^0.2.5", "@types/css-tree": "file:./typings/css-tree", "css-tree": "^3.1.0" } }, "sha512-aEvoIhIxa6nHvqTQxg56YgV8/9FO78ka1XnqkVnM07ZqJgeeILCNOHzwPs1z0N1vlj0Um2s4yMG8Ilau+D05Hg=="], "@eslint/eslintrc": ["@eslint/eslintrc@3.3.0", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ=="], - "@eslint/js": ["@eslint/js@9.22.0", "", {}, "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ=="], + "@eslint/js": ["@eslint/js@9.21.0", "", {}, "sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw=="], "@eslint/object-schema": ["@eslint/object-schema@2.1.6", "", {}, "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA=="], @@ -373,57 +369,57 @@ "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], - "@thi.ng/api": ["@thi.ng/api@8.11.22", "", {}, "sha512-SbgnYcuyIKvJF+bdpFNZJxggYa6wBt7xh4OjWZwvmbZvibrjvk4xwLaJ8vm/bJoBYK/Oe631CApssa6kumZeNg=="], + "@thi.ng/api": ["@thi.ng/api@8.11.21", "", {}, "sha512-J6BUdUtFtwZirL3M9tkCiqBXj228z7zkxWOaDWTymwBeqY9s02vJP3mQV8l5p+YPDIRmYx/q7XVuLW1UTJRN/A=="], - "@thi.ng/arrays": ["@thi.ng/arrays@2.10.19", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/checks": "^3.7.2", "@thi.ng/compare": "^2.4.14", "@thi.ng/equiv": "^2.1.78", "@thi.ng/errors": "^2.5.28", "@thi.ng/random": "^4.1.13" } }, "sha512-wC1Jkvej8zDfSXZmIGp6qMg452mjt4BExMWSaVqaLbMKYszGLgMHJAa8PTUfHrK5A2wQXn35uZwpVbWd+jeubA=="], + "@thi.ng/arrays": ["@thi.ng/arrays@2.10.18", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/checks": "^3.7.1", "@thi.ng/compare": "^2.4.13", "@thi.ng/equiv": "^2.1.77", "@thi.ng/errors": "^2.5.27", "@thi.ng/random": "^4.1.12" } }, "sha512-4cJCVm67MqtrnwOWNdgeyM/WYAfEYeFtCh1x/3VptV6Ct8DSYyVbSK6RLYgsM04KQqAxEQniCl5/S+ZS3GFd+Q=="], - "@thi.ng/base-n": ["@thi.ng/base-n@2.7.34", "", {}, "sha512-LX7X9uaFIedAtDwzt6PzzaiHRPYGRjdVuAmhDV5bl8oB1SBfGaaj4PVumNbXkvKoelijl77oO6RspppVgE8/+Q=="], + "@thi.ng/base-n": ["@thi.ng/base-n@2.7.33", "", {}, "sha512-WAVoTt1ZIYpDUs/+FauMh0p25MsG2BK0twNmJKWqAcPdP0zxb8TSQJCNrej/vTeq5c5XVsNpfGXIEa2WiXy5XQ=="], - "@thi.ng/binary": ["@thi.ng/binary@3.4.45", "", { "dependencies": { "@thi.ng/api": "^8.11.22" } }, "sha512-VsLh3/zVWk+lquCDw90kIhZdS+VqBeSQyK29KVW66rQ7JAGn1glDhJuaqrucK/NEGnXmqxJfZqJdcEEJsn7M/Q=="], + "@thi.ng/binary": ["@thi.ng/binary@3.4.44", "", { "dependencies": { "@thi.ng/api": "^8.11.21" } }, "sha512-kd6ZZ0xWR5JivkSIjqb6MvFpK2us7dU3ruwmiBAw4oZKsTnfibTbgvtJLL8Q5BJnxYmI3aILQ1sCamxRMwbzBw=="], - "@thi.ng/canvas": ["@thi.ng/canvas@1.0.9", "", {}, "sha512-BptFGkpJBi92IbHKyOmuoRr6M1yRoNReiM8a6lJOXtPwGQAowIAZX3HI/LBYp8jwwnyA/G3adXVoT6wfUqmwgw=="], + "@thi.ng/canvas": ["@thi.ng/canvas@1.0.8", "", {}, "sha512-r4bRWAsiaaNx+ihTtQDi1RQFMfOLwGgoSbZhdxLzEo6t1Ga5a/cqv/WKqUWLjD1LHjxhtflS8uPcihD2ETyAOg=="], - "@thi.ng/checks": ["@thi.ng/checks@3.7.2", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-FGFHQrLOUKxLoNQfaoVKW8xBhFNaxtV0QqREbxYgnpCg8WgX5O8dU/T212bVTOMe0GSzqCkjEs3/BmPb4lxW5Q=="], + "@thi.ng/checks": ["@thi.ng/checks@3.7.1", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-RfVBQgJN0kr00SKptAAzdDOaaRtWlctqegYogynTLkUhf8Ck516Efk/macgWTzSLEPgcumN7E9F1F3lgfRCWew=="], - "@thi.ng/color": ["@thi.ng/color@5.7.28", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/arrays": "^2.10.19", "@thi.ng/binary": "^3.4.45", "@thi.ng/checks": "^3.7.2", "@thi.ng/compare": "^2.4.14", "@thi.ng/compose": "^3.0.25", "@thi.ng/defmulti": "^3.0.62", "@thi.ng/errors": "^2.5.28", "@thi.ng/math": "^5.11.22", "@thi.ng/random": "^4.1.13", "@thi.ng/strings": "^3.9.7", "@thi.ng/transducers": "^9.2.22", "@thi.ng/vectors": "^7.12.24" } }, "sha512-NreMb8WrUXcFMg33m3AmtW8638H9VOVB2kzuy1FqrHL/xQJnNFMsgingEt2ts8uZxKb0dlBBZJfx+u10SmNPlA=="], + "@thi.ng/color": ["@thi.ng/color@5.7.27", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/arrays": "^2.10.18", "@thi.ng/binary": "^3.4.44", "@thi.ng/checks": "^3.7.1", "@thi.ng/compare": "^2.4.13", "@thi.ng/compose": "^3.0.24", "@thi.ng/defmulti": "^3.0.61", "@thi.ng/errors": "^2.5.27", "@thi.ng/math": "^5.11.21", "@thi.ng/random": "^4.1.12", "@thi.ng/strings": "^3.9.6", "@thi.ng/transducers": "^9.2.21", "@thi.ng/vectors": "^7.12.23" } }, "sha512-zXI2X9lzGrp2I3o+qAg0ZFj+vWN9JMAFLfXvzLC/aAstn5N78eryhfQU55JXnlpuN4RkPbL+wlO/CZ/Sc37F1g=="], - "@thi.ng/color-palettes": ["@thi.ng/color-palettes@1.4.37", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/base-n": "^2.7.34", "@thi.ng/checks": "^3.7.2", "@thi.ng/color": "^5.7.28", "@thi.ng/errors": "^2.5.28", "@thi.ng/hex": "^2.3.66" } }, "sha512-NKoAnWJ3QEJYDUGzxCiBuIkiJplqtb6s+hRkLW8KD6Xw5klv9ajeBVxj93NY/4qB92Q0npfNWXCIrff++JM04A=="], + "@thi.ng/color-palettes": ["@thi.ng/color-palettes@1.4.36", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/base-n": "^2.7.33", "@thi.ng/checks": "^3.7.1", "@thi.ng/color": "^5.7.27", "@thi.ng/errors": "^2.5.27", "@thi.ng/hex": "^2.3.65" } }, "sha512-D1dSSp1/RtTnqrBPAvvGzyZZcGFu+fempdUcSlLAd4SvE9zOZfWRS5kXn8IjwfzGCRtXL5vGcJ98Fv8N+BfYew=="], - "@thi.ng/compare": ["@thi.ng/compare@2.4.14", "", { "dependencies": { "@thi.ng/api": "^8.11.22" } }, "sha512-w/Bu2kNWVM94/BYYTB7QdNrd8UEKz/Wfv6w6ZZjdTGJ/69MrT+8m6jqnCeloD+WjkQ3vsfexLhRUmOft+fTrzQ=="], + "@thi.ng/compare": ["@thi.ng/compare@2.4.13", "", { "dependencies": { "@thi.ng/api": "^8.11.21" } }, "sha512-OOhxV5N7zrqKNS07ME8WZNBL81sFnE0BIjyVU0Z6zlwu2oH9mF7pZ6voF/wZH5mFfse8kcSxOA8oiQCCzCnPIQ=="], - "@thi.ng/compose": ["@thi.ng/compose@3.0.25", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/errors": "^2.5.28" } }, "sha512-PAni1jk2b444GwGM+GLs++xeuOZ3OzJ6bVW+xr2D6iutLuqHsySFN2v44yTaWSVf1jxP0yqHla8en84b5ko92A=="], + "@thi.ng/compose": ["@thi.ng/compose@3.0.24", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/errors": "^2.5.27" } }, "sha512-WN6EeKt6EqDMICqrfGWqNpneMWw9OGaMA3T4ZFGD/AFEFmREZ0xsOMDR91oYotlvVDJeVKPYVa5CCLGx6ppQLQ=="], - "@thi.ng/defmulti": ["@thi.ng/defmulti@3.0.62", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/errors": "^2.5.28", "@thi.ng/logger": "^3.1.3" } }, "sha512-38sYjdjl7JFZPEPCRIay1mEHhbXK61iNExkOmJ6Qw2m9fzO0uT9NJ9CkH/iMnyNLfx1nTvZQwo48Q9qVkGMufQ=="], + "@thi.ng/defmulti": ["@thi.ng/defmulti@3.0.61", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/errors": "^2.5.27", "@thi.ng/logger": "^3.1.2" } }, "sha512-BfS0RtXgvphbvpQ9n5mDUbjsXlOafxEC8t8qL41bnPK0UJhA7IrJ/yfraDB2WmeTPGid70L9NdX0bg4ih7GGyg=="], - "@thi.ng/equiv": ["@thi.ng/equiv@2.1.78", "", {}, "sha512-dEyGSzf/62Fv9X9swfqFfsB2/zWOQK+ItlwIarUXWxijYUIw0smCca4oix+eWs4/2QnESV1p0I1Jp66d8Psydg=="], + "@thi.ng/equiv": ["@thi.ng/equiv@2.1.77", "", {}, "sha512-qcpq7yMKNanK6NvoJaJOQeY2lHXuVWWERAHcM+wi3EpQwlVDO0smG3DOdZuAEcynnMli8JX3cyzAGFyZE86tZw=="], - "@thi.ng/errors": ["@thi.ng/errors@2.5.28", "", {}, "sha512-ZYFe7Hq9Oh2e2mOxlTc22/btCkozb0tm0xNAKK5kOoU8BxByh2fnN/qK1rHOfx11TW6EYtMpfEMQDdjmclOwjw=="], + "@thi.ng/errors": ["@thi.ng/errors@2.5.27", "", {}, "sha512-t1sgGuZqHv81lzNPSRySGHnDBvtt6h3MIMn3LdZnqMR0swwOIApw6YlheMYB63u94NdtuneQYcjdvbhOsHbwPQ=="], - "@thi.ng/hex": ["@thi.ng/hex@2.3.66", "", {}, "sha512-X4YVOByqPZYjIlqdDoZOpzNGW8FF5T2yWuAP3j80RPkVsgX2BM+gQYPyY7kkDe3gzWaRJIYE2TIwFHM+0RogJw=="], + "@thi.ng/hex": ["@thi.ng/hex@2.3.65", "", {}, "sha512-rX3U8DCayQVLkm6J6uMf6w1TSRQ3pE4okwkahS/A6/sDmABUlMo7t+s1psQhV07Jigr8q103+JHQpDdrcURiWw=="], - "@thi.ng/logger": ["@thi.ng/logger@3.1.3", "", {}, "sha512-UOxnYsAeVyvPQuT1bcnZJGm5lRhHRYq1oJ08nISOy1lMoluN0Cht5jqGZVCG03hqwXj1sSsfhk6u08H4W5ACCQ=="], + "@thi.ng/logger": ["@thi.ng/logger@3.1.2", "", {}, "sha512-WU/WCAOkxaLvGI2purG0iabueIG3Pq4CeoUogSHp/ctIh9vSVXplJYXlMy5PizttrHIJShJeHHu15x7IRyrAEQ=="], - "@thi.ng/math": ["@thi.ng/math@5.11.22", "", { "dependencies": { "@thi.ng/api": "^8.11.22" } }, "sha512-HpYCjOAZWfpiaGd4dVYrqYI8MbnOCpJWBDCUmGIienNCNnjov4iwmsHhi52kVCEIz3bDJtaEkPqB6L663wvCSw=="], + "@thi.ng/math": ["@thi.ng/math@5.11.21", "", { "dependencies": { "@thi.ng/api": "^8.11.21" } }, "sha512-JLjHdQbCpIP6F76Vq8yBtRtDOaUJ5HKsyEhU++8bjPX7VeDf8um4Ba/PUQZS+SpX0ghTZrqirqoI7H6wWz/TaQ=="], - "@thi.ng/memoize": ["@thi.ng/memoize@4.0.12", "", { "dependencies": { "@thi.ng/api": "^8.11.22" } }, "sha512-fVNaCojN+thuWstM+/Dz6iPOlH1MJD4yHx+pLErfkJjStAH1UGRCZt2C05qJrSDy8KJxNRfxcQivPKiJClzMCg=="], + "@thi.ng/memoize": ["@thi.ng/memoize@4.0.11", "", { "dependencies": { "@thi.ng/api": "^8.11.21" } }, "sha512-acxutHHnYAF8WfxCgDN+V/euhmC/FnjcPg1oLxgCQNET42X5jzhYyxhOEwOnkv+DRezkcgpkM9TFNF/raawlpQ=="], - "@thi.ng/pixel": ["@thi.ng/pixel@7.3.20", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/canvas": "^1.0.9", "@thi.ng/checks": "^3.7.2", "@thi.ng/errors": "^2.5.28", "@thi.ng/math": "^5.11.22", "@thi.ng/porter-duff": "^2.1.100" } }, "sha512-n6CEMda8XYSrItk/llWlbV5GhFVBwWD9peTgXu/uL6BiZrTtrNmuO19hNiOALo/yWIFmWgb36eeSh0AFr6+d6w=="], + "@thi.ng/pixel": ["@thi.ng/pixel@7.3.19", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/canvas": "^1.0.8", "@thi.ng/checks": "^3.7.1", "@thi.ng/errors": "^2.5.27", "@thi.ng/math": "^5.11.21", "@thi.ng/porter-duff": "^2.1.99" } }, "sha512-k1oUFPktxOcJEh0RuzgwoZGBkNqB1zMNvk2QILph54Cj1JJH3CcAuqJTu+N6QkXoxsgoM4DtMiDcmIdyrRokJQ=="], - "@thi.ng/pixel-dither": ["@thi.ng/pixel-dither@1.1.160", "", { "dependencies": { "@thi.ng/checks": "^3.7.2", "@thi.ng/math": "^5.11.22", "@thi.ng/pixel": "^7.3.20" } }, "sha512-3VDO050krFIxiQ8LpwPqFlhyXzVe7upzApPWhIwGyJI2bAs9exqxLU1lrDLG9kqx0R17ktHr22NFOgOWra5iyQ=="], + "@thi.ng/pixel-dither": ["@thi.ng/pixel-dither@1.1.159", "", { "dependencies": { "@thi.ng/checks": "^3.7.1", "@thi.ng/math": "^5.11.21", "@thi.ng/pixel": "^7.3.19" } }, "sha512-1tQfZUPgTEe/sn0URTHbkDEtWpJyqC4WqR9BMdOcE+g+pHhp1AjGB+eru1Mhx0WKJ/jcYl669U73Qooh8L2V6A=="], - "@thi.ng/porter-duff": ["@thi.ng/porter-duff@2.1.100", "", { "dependencies": { "@thi.ng/api": "^8.11.22" } }, "sha512-qkaYL2KySvBBmjPzNvR/mMXO71NEg7grc/TKfTQijArtZdvg5odsjAI+FJXrb2ArrleXqXZKsO3dMdeD3t51ZQ=="], + "@thi.ng/porter-duff": ["@thi.ng/porter-duff@2.1.99", "", { "dependencies": { "@thi.ng/api": "^8.11.21" } }, "sha512-HC4rqfHGfAMijUoNlZslRZypb7MJ8BO6XpRF2Ol/O6JqHzhHtWlwbB/WGfoSiAUfdEHprSZ3KsPCDEl7MnRdpg=="], - "@thi.ng/random": ["@thi.ng/random@4.1.13", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/errors": "^2.5.28" } }, "sha512-FQXVYRLt98hItEpzLrGaG7EUuP6+bJYvXeQ65NjtC0pGf+x/DxubI8Jmqphr5EyH8odyxuDzxdnRbak+p3Dnyg=="], + "@thi.ng/random": ["@thi.ng/random@4.1.12", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/errors": "^2.5.27" } }, "sha512-IpcAgCGDdaHAahY1LJbJ9oULsmhCrQpGeAjPfB0gpGM1D7JXeOaY83ctt3tdqovT2YIaCMIUd8ahJt7VBMD+Ig=="], - "@thi.ng/strings": ["@thi.ng/strings@3.9.7", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/errors": "^2.5.28", "@thi.ng/hex": "^2.3.66", "@thi.ng/memoize": "^4.0.12" } }, "sha512-J1cNbtSaYCiuTYJJE4rFHsnJIMVKKyjGLcBoGMPUTK40uiR+rwM7Rg3nIbalW7QcBfcNejAelHFzHO5aTD3u3w=="], + "@thi.ng/strings": ["@thi.ng/strings@3.9.6", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/errors": "^2.5.27", "@thi.ng/hex": "^2.3.65", "@thi.ng/memoize": "^4.0.11" } }, "sha512-kdh66IfvlHz+iywyojTZCmUXg5d4NISrA3MwNm6fLUsuBA+yNVTOdf484Azbe1SQEUU5e9RLc6bfVeqkdthNxw=="], - "@thi.ng/timestamp": ["@thi.ng/timestamp@1.1.7", "", {}, "sha512-puu4cA5HqBoNeRpgPgKdwDHo6YI1PoS9S/X6HiMDfWVhv6Ln4SzydduvJF7fpCEs/01xtMu/8wSpGHH1icBdaA=="], + "@thi.ng/timestamp": ["@thi.ng/timestamp@1.1.6", "", {}, "sha512-LGVbm9AiGwBcNHh2jieEtccy2edYCdHG3aK0no6ChH1AyAzonDdr05D+nBv0pl1h9C2AFPe9UQj43RdFgQJuUQ=="], - "@thi.ng/transducers": ["@thi.ng/transducers@9.2.22", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/arrays": "^2.10.19", "@thi.ng/checks": "^3.7.2", "@thi.ng/compare": "^2.4.14", "@thi.ng/compose": "^3.0.25", "@thi.ng/errors": "^2.5.28", "@thi.ng/math": "^5.11.22", "@thi.ng/random": "^4.1.13", "@thi.ng/timestamp": "^1.1.7" } }, "sha512-CFYXYRlGsRKUZdroQkEn09HagzXhIhs73jVcJ8ld05O8L+H2Y3RPgsOEcSd/ysB1oH/2LfVuFbYkNXg/1jvlDQ=="], + "@thi.ng/transducers": ["@thi.ng/transducers@9.2.21", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/arrays": "^2.10.18", "@thi.ng/checks": "^3.7.1", "@thi.ng/compare": "^2.4.13", "@thi.ng/compose": "^3.0.24", "@thi.ng/errors": "^2.5.27", "@thi.ng/math": "^5.11.21", "@thi.ng/random": "^4.1.12", "@thi.ng/timestamp": "^1.1.6" } }, "sha512-5uOiddZICcOGW5L8Y301bwjshfLZOvBlJpLneQzzsYbpqfQdOR4NlkbrJVw+IKEuqZU5B64eRqzJzOwjDAsd0g=="], - "@thi.ng/vectors": ["@thi.ng/vectors@7.12.24", "", { "dependencies": { "@thi.ng/api": "^8.11.22", "@thi.ng/binary": "^3.4.45", "@thi.ng/checks": "^3.7.2", "@thi.ng/equiv": "^2.1.78", "@thi.ng/errors": "^2.5.28", "@thi.ng/math": "^5.11.22", "@thi.ng/memoize": "^4.0.12", "@thi.ng/random": "^4.1.13", "@thi.ng/strings": "^3.9.7", "@thi.ng/transducers": "^9.2.22" } }, "sha512-ZxwlnDb/TZBR57BN0bcqFmZfQDu7NCNUBXO/LRhKAPVoqTXyShxELUYhFWKV8oNF8Tr7+dcJUg46tg9pP6VMtA=="], + "@thi.ng/vectors": ["@thi.ng/vectors@7.12.23", "", { "dependencies": { "@thi.ng/api": "^8.11.21", "@thi.ng/binary": "^3.4.44", "@thi.ng/checks": "^3.7.1", "@thi.ng/equiv": "^2.1.77", "@thi.ng/errors": "^2.5.27", "@thi.ng/math": "^5.11.21", "@thi.ng/memoize": "^4.0.11", "@thi.ng/random": "^4.1.12", "@thi.ng/strings": "^3.9.6", "@thi.ng/transducers": "^9.2.21" } }, "sha512-+PbtaA2cYApQrzGpOKC3Yg4jxWiJw6qEchTH+YRyjVA6YdAlSdptwrvEYdUCiKhPLqa0WUrKzCUw4mqIE75yDA=="], - "@types/bun": ["@types/bun@1.2.5", "", { "dependencies": { "bun-types": "1.2.5" } }, "sha512-w2OZTzrZTVtbnJew1pdFmgV99H0/L+Pvw+z1P67HaR18MHOzYnTYOi6qzErhK8HyT+DB782ADVPPE92Xu2/Opg=="], + "@types/bun": ["@types/bun@1.2.4", "", { "dependencies": { "bun-types": "1.2.4" } }, "sha512-QtuV5OMR8/rdKJs213iwXDpfVvnskPXY/S0ZiFbsTjQZycuqPbMW8Gf/XhLfwE5njW8sxI2WjISURXPlHypMFA=="], "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], @@ -433,21 +429,21 @@ "@types/ws": ["@types/ws@8.5.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-bd/YFLW+URhBzMXurx7lWByOu+xzU9+kb3RboOteXYDfW+tr+JZa99OyNmPINEGB/ahzKrEuc8rcv4gnpJmxTw=="], - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.26.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/type-utils": "8.26.0", "@typescript-eslint/utils": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-cLr1J6pe56zjKYajK6SSSre6nl1Gj6xDp1TY0trpgPzjVbgDwd09v2Ws37LABxzkicmUjhEeg/fAUjPJJB1v5Q=="], + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.25.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.25.0", "@typescript-eslint/type-utils": "8.25.0", "@typescript-eslint/utils": "8.25.0", "@typescript-eslint/visitor-keys": "8.25.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-VM7bpzAe7JO/BFf40pIT1lJqS/z1F8OaSsUB3rpFJucQA4cOSuH2RVVVkFULN+En0Djgr29/jb4EQnedUo95KA=="], - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.26.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/types": "8.26.0", "@typescript-eslint/typescript-estree": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-mNtXP9LTVBy14ZF3o7JG69gRPBK/2QWtQd0j0oH26HcY/foyJJau6pNUez7QrM5UHnSvwlQcJXKsk0I99B9pOA=="], + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.25.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.25.0", "@typescript-eslint/types": "8.25.0", "@typescript-eslint/typescript-estree": "8.25.0", "@typescript-eslint/visitor-keys": "8.25.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-4gbs64bnbSzu4FpgMiQ1A+D+urxkoJk/kqlDJ2W//5SygaEiAP2B4GoS7TEdxgwol2el03gckFV9lJ4QOMiiHg=="], - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0" } }, "sha512-E0ntLvsfPqnPwng8b8y4OGuzh/iIOm2z8U3S9zic2TeMLW61u5IH2Q1wu0oSTkfrSzwbDJIB/Lm8O3//8BWMPA=="], + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.25.0", "", { "dependencies": { "@typescript-eslint/types": "8.25.0", "@typescript-eslint/visitor-keys": "8.25.0" } }, "sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg=="], - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.26.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.26.0", "@typescript-eslint/utils": "8.26.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-ruk0RNChLKz3zKGn2LwXuVoeBcUMh+jaqzN461uMMdxy5H9epZqIBtYj7UiPXRuOpaALXGbmRuZQhmwHhaS04Q=="], + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.25.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.25.0", "@typescript-eslint/utils": "8.25.0", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-d77dHgHWnxmXOPJuDWO4FDWADmGQkN5+tt6SFRZz/RtCWl4pHgFl3+WdYCn16+3teG09DY6XtEpf3gGD0a186g=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.26.0", "", {}, "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.25.0", "", {}, "sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "@typescript-eslint/visitor-keys": "8.26.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "typescript": ">=4.8.4 <5.9.0" } }, "sha512-tiJ1Hvy/V/oMVRTbEOIeemA2XoylimlDQ03CgPPNaHYZbpsc78Hmngnt+WXZfJX1pjQ711V7g0H7cSJThGYfPQ=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.25.0", "", { "dependencies": { "@typescript-eslint/types": "8.25.0", "@typescript-eslint/visitor-keys": "8.25.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.0.1" }, "peerDependencies": { "typescript": ">=4.8.4 <5.8.0" } }, "sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q=="], - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.26.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.26.0", "@typescript-eslint/types": "8.26.0", "@typescript-eslint/typescript-estree": "8.26.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-2L2tU3FVwhvU14LndnQCA2frYC8JnPDVKyQtWFPf8IYFMt/ykEN1bPolNhNbCVgOmdzTlWdusCTKA/9nKrf8Ig=="], + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.25.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.25.0", "@typescript-eslint/types": "8.25.0", "@typescript-eslint/typescript-estree": "8.25.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.26.0", "", { "dependencies": { "@typescript-eslint/types": "8.26.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-2z8JQJWAzPdDd51dRQ/oqIJxe99/hoLIqmf8RMCAJQtYDc535W/Jt2+RTP4bP0aKeBG1F65yjIZuczOXCmbWwg=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.25.0", "", { "dependencies": { "@typescript-eslint/types": "8.25.0", "eslint-visitor-keys": "^4.2.0" } }, "sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ=="], "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], @@ -477,7 +473,7 @@ "@vue/devtools-shared": ["@vue/devtools-shared@7.7.2", "", { "dependencies": { "rfdc": "^1.4.1" } }, "sha512-uBFxnp8gwW2vD6FrJB8JZLUzVb6PNRG0B0jBnHsOH8uKyva2qINY8PTF5Te4QlTbMDqU5K6qtJDr6cNsKWhbOA=="], - "@vue/eslint-config-typescript": ["@vue/eslint-config-typescript@14.5.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.26.0", "fast-glob": "^3.3.3", "typescript-eslint": "^8.26.0", "vue-eslint-parser": "^10.1.1" }, "peerDependencies": { "eslint": "^9.10.0", "eslint-plugin-vue": "^9.28.0 || ^10.0.0", "typescript": ">=4.8.4" }, "optionalPeers": ["typescript"] }, "sha512-5oPOyuwkw++AP5gHDh5YFmST50dPfWOcm3/W7Nbh42IK5O3H74ytWAw0TrCRTaBoD/02khnWXuZf1Bz1xflavQ=="], + "@vue/eslint-config-typescript": ["@vue/eslint-config-typescript@14.4.0", "", { "dependencies": { "@typescript-eslint/utils": "^8.23.0", "fast-glob": "^3.3.3", "typescript-eslint": "^8.23.0", "vue-eslint-parser": "^9.4.3" }, "peerDependencies": { "eslint": "^9.10.0", "eslint-plugin-vue": "^9.28.0", "typescript": ">=4.8.4" }, "optionalPeers": ["typescript"] }, "sha512-daU+eAekEeVz3CReE4PRW25fe+OJDKwE28jHN6LimDEnuFMbJ6H4WGogEpNof276wVP6UvzOeJQfLFjB5mW29A=="], "@vue/language-core": ["@vue/language-core@2.2.8", "", { "dependencies": { "@volar/language-core": "~2.4.11", "@vue/compiler-dom": "^3.5.0", "@vue/compiler-vue2": "^2.7.16", "@vue/shared": "^3.5.0", "alien-signals": "^1.0.3", "minimatch": "^9.0.3", "muggle-string": "^0.4.1", "path-browserify": "^1.0.1" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ=="], @@ -493,8 +489,6 @@ "@vue/typescript-plugin": ["@vue/typescript-plugin@2.2.8", "", { "dependencies": { "@volar/typescript": "~2.4.11", "@vue/language-core": "2.2.8", "@vue/shared": "^3.5.0" } }, "sha512-9fzhFYrzIsPm5Qylv6yBmV1tISqkUhE1PD5uBwkeLCxIwNUjIbnGBdN8HszDa1ZWFWuBsbQpx7FxmV7vQincDw=="], - "@xstate/vue": ["@xstate/vue@4.0.2", "", { "peerDependencies": { "vue": "^3.0.0", "xstate": "^5.19.2" }, "optionalPeers": ["xstate"] }, "sha512-2d5/1nEfd3AGMkYoJJPI2uQ9qFKKnpTl5NCLo3utNAKzPsK/9k0cp/FijqtZOxmnHC407qmwErZs1n6u5yBkcQ=="], - "a11y-dialog": ["a11y-dialog@8.1.1", "", { "dependencies": { "focusable-selectors": "^0.8.0" } }, "sha512-7SBLXFwhQBnEHOaIiKUUQZ5VKJa/b1jBDvPJvlejlqX2w9cpi+iHBrdjcmd4Xd6vIdsuMHGo9Is2SWu0Hzu0zg=="], "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], @@ -537,7 +531,7 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], - "bun-types": ["bun-types@1.2.5", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-3oO6LVGGRRKI4kHINx5PIdIgnLRb7l/SprhzqXapmoYkFl5m4j6EvALvbDVuuBFaamB46Ap6HCUxIXNLCGy+tg=="], + "bun-types": ["bun-types@1.2.4", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-nDPymR207ZZEoWD4AavvEaa/KZe/qlrbMSchqpQwovPZCKc7pwMoENjEtHgMKaAjJhy+x6vfqSBA1QU3bJgs0Q=="], "cacheable": ["cacheable@1.8.8", "", { "dependencies": { "hookified": "^1.7.0", "keyv": "^5.2.3" } }, "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw=="], @@ -611,7 +605,7 @@ "defaults": ["defaults@1.0.4", "", { "dependencies": { "clone": "^1.0.2" } }, "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A=="], - "detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], + "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], @@ -629,7 +623,7 @@ "easy-table": ["easy-table@1.2.0", "", { "dependencies": { "ansi-regex": "^5.0.1" }, "optionalDependencies": { "wcwidth": "^1.0.1" } }, "sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww=="], - "effect": ["effect@3.13.9", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-fcynHENQW6pejcN5thnRyCFCZDleYSkxUTCbQL36AUXGBakbLXERrLHBlwJke3687S3Z4o9MHad7v+pUiDBC4Q=="], + "effect": ["effect@3.13.6", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-NKmzyIuOb2UuHFPRz9EYScbhMBxXkzjPRuu+4axE+hMk1f0U7TZxzi2CP3TVVxA2kzvh00aBQEbyH7Opq4PnWg=="], "electron-to-chromium": ["electron-to-chromium@1.5.109", "", {}, "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ=="], @@ -651,13 +645,13 @@ "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], - "eslint": ["eslint@9.22.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", "@eslint/config-helpers": "^0.1.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.0", "@eslint/js": "9.22.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ=="], + "eslint": ["eslint@9.21.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.0", "@eslint/js": "9.21.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg=="], - "eslint-plugin-perfectionist": ["eslint-plugin-perfectionist@4.10.1", "", { "dependencies": { "@typescript-eslint/types": "^8.26.0", "@typescript-eslint/utils": "^8.26.0", "natural-orderby": "^5.0.0" }, "peerDependencies": { "eslint": ">=8.45.0" } }, "sha512-GXwFfL47RfBLZRGQdrvGZw9Ali2T2GPW8p4Gyj2fyWQ9396R/HgJMf0m9kn7D6WXRwrINfTDGLS+QYIeok9qEg=="], + "eslint-plugin-perfectionist": ["eslint-plugin-perfectionist@4.9.0", "", { "dependencies": { "@typescript-eslint/types": "^8.24.0", "@typescript-eslint/utils": "^8.24.0", "natural-orderby": "^5.0.0" }, "peerDependencies": { "eslint": ">=8.0.0" } }, "sha512-76lDfJnonOcXGW3bEXuqhEGId0LrOlvIE1yLHvK/eKMMPOc0b43KchAIR2Bdbqlg+LPXU5/Q+UzuzkO+cWHT6w=="], "eslint-plugin-vue": ["eslint-plugin-vue@10.0.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "natural-compare": "^1.4.0", "nth-check": "^2.1.1", "postcss-selector-parser": "^6.0.15", "semver": "^7.6.3", "xml-name-validator": "^4.0.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "vue-eslint-parser": "^10.0.0" } }, "sha512-XKckedtajqwmaX6u1VnECmZ6xJt+YvlmMzBPZd+/sI3ub2lpYZyFnsyWo7c3nMOQKJQudeyk1lw/JxdgeKT64w=="], - "eslint-scope": ["eslint-scope@8.3.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ=="], + "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], @@ -809,27 +803,27 @@ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lightningcss": ["lightningcss@1.29.2", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.2", "lightningcss-darwin-x64": "1.29.2", "lightningcss-freebsd-x64": "1.29.2", "lightningcss-linux-arm-gnueabihf": "1.29.2", "lightningcss-linux-arm64-gnu": "1.29.2", "lightningcss-linux-arm64-musl": "1.29.2", "lightningcss-linux-x64-gnu": "1.29.2", "lightningcss-linux-x64-musl": "1.29.2", "lightningcss-win32-arm64-msvc": "1.29.2", "lightningcss-win32-x64-msvc": "1.29.2" } }, "sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA=="], + "lightningcss": ["lightningcss@1.29.1", "", { "dependencies": { "detect-libc": "^1.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.1", "lightningcss-darwin-x64": "1.29.1", "lightningcss-freebsd-x64": "1.29.1", "lightningcss-linux-arm-gnueabihf": "1.29.1", "lightningcss-linux-arm64-gnu": "1.29.1", "lightningcss-linux-arm64-musl": "1.29.1", "lightningcss-linux-x64-gnu": "1.29.1", "lightningcss-linux-x64-musl": "1.29.1", "lightningcss-win32-arm64-msvc": "1.29.1", "lightningcss-win32-x64-msvc": "1.29.1" } }, "sha512-FmGoeD4S05ewj+AkhTY+D+myDvXI6eL27FjHIjoyUkO/uw7WZD1fBVs0QxeYWa7E17CUHJaYX/RUGISCtcrG4Q=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.29.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HtR5XJ5A0lvCqYAoSv2QdZZyoHNttBpa5EP9aNuzBQeKGfbyH5+UipLWvVzpP4Uml5ej4BYs5I9Lco9u1fECqw=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k33G9IzKUpHy/J/3+9MCO4e+PzaFblsgBjSGlpAaFikeBFm8B/CkO3cKU9oI4g+fjS2KlkLM/Bza9K/aw8wsNA=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.29.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0SUW22fv/8kln2LnIdOCmSuXnxgxVC276W5KLTwoehiO0hxkacBxjHOL5EtHD8BAXg2BvuhsJPmVMasvby3LiQ=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.2", "", { "os": "linux", "cpu": "arm" }, "sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.29.1", "", { "os": "linux", "cpu": "arm" }, "sha512-sD32pFvlR0kDlqsOZmYqH/68SqUMPNj+0pucGxToXZi4XZgZmqeX/NkxNKCPsswAXU3UeYgDSpGhu05eAufjDg=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-0+vClRIZ6mmJl/dxGuRsE197o1HDEeeRk6nzycSy2GofC2JsY4ifCRnvUWf/CUBQmlrvMzt6SMQNMSEu22csWQ=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.29.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-UKMFrG4rL/uHNgelBsDwJcBqVpzNJbzsKkbI3Ja5fg00sgQnHw/VrzUTEc4jhZ+AN2BvQYz/tkHu4vt1kLuJyw=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.2", "", { "os": "linux", "cpu": "x64" }, "sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u1S+xdODy/eEtjADqirA774y3jLcm8RPtYztwReEXoZKdzgsHYPl0s5V52Tst+GKzqjebkULT86XMSxejzfISw=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.29.1", "", { "os": "linux", "cpu": "x64" }, "sha512-L0Tx0DtaNUTzXv0lbGCLB/c/qEADanHbu4QdcNOXLIe1i8i22rZRpbT3gpWYsCh9aSL9zFujY/WmEXIatWvXbw=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.29.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-QoOVnkIEFfbW4xPi+dpdft/zAKmgLgsRHfJalEPYuJDOWf7cLQzYg0DEh8/sn737FaeMJxHZRc1oBreiwZCjog=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.2", "", { "os": "win32", "cpu": "x64" }, "sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.29.1", "", { "os": "win32", "cpu": "x64" }, "sha512-NygcbThNBe4JElP+olyTI/doBNGJvLs3bFCRPdvuCcxZCcCZ71B858IHpdm7L1btZex0FvCmM17FK98Y9MRy1Q=="], "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], @@ -1045,7 +1039,7 @@ "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="], - "typescript-eslint": ["typescript-eslint@8.26.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.26.0", "@typescript-eslint/parser": "8.26.0", "@typescript-eslint/utils": "8.26.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-PtVz9nAnuNJuAVeUFvwztjuUgSnJInODAUx47VDwWPXzd5vismPOtPtt83tzNXyOjVQbPRp786D6WFW/M2koIA=="], + "typescript-eslint": ["typescript-eslint@8.25.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.25.0", "@typescript-eslint/parser": "8.25.0", "@typescript-eslint/utils": "8.25.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.8.0" } }, "sha512-TxRdQQLH4g7JkoFlYG3caW5v1S6kEkz8rqt80iQJZUYPq1zD1Ra7HfQBJJ88ABRaMvHAXnwRvRB4V+6sQ9xN5Q=="], "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], @@ -1057,7 +1051,7 @@ "uuid": ["uuid@11.1.0", "", { "bin": { "uuid": "dist/esm/bin/uuid" } }, "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A=="], - "vite": ["vite@6.2.1", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q=="], + "vite": ["vite@6.2.0", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ=="], "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], @@ -1065,7 +1059,7 @@ "vue": ["vue@3.5.13", "", { "dependencies": { "@vue/compiler-dom": "3.5.13", "@vue/compiler-sfc": "3.5.13", "@vue/runtime-dom": "3.5.13", "@vue/server-renderer": "3.5.13", "@vue/shared": "3.5.13" }, "peerDependencies": { "typescript": "*" }, "optionalPeers": ["typescript"] }, "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ=="], - "vue-eslint-parser": ["vue-eslint-parser@10.1.1", "", { "dependencies": { "debug": "^4.4.0", "eslint-scope": "^8.2.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.6.0", "lodash": "^4.17.21", "semver": "^7.6.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" } }, "sha512-bh2Z/Au5slro9QJ3neFYLanZtb1jH+W2bKqGHXAoYD4vZgNG3KeotL7JpPv5xzY4UXUXJl7TrIsnzECH63kd3Q=="], + "vue-eslint-parser": ["vue-eslint-parser@9.4.3", "", { "dependencies": { "debug": "^4.3.4", "eslint-scope": "^7.1.1", "eslint-visitor-keys": "^3.3.0", "espree": "^9.3.1", "esquery": "^1.4.0", "lodash": "^4.17.21", "semver": "^7.3.6" }, "peerDependencies": { "eslint": ">=6.0.0" } }, "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg=="], "vue-router": ["vue-router@4.5.0", "", { "dependencies": { "@vue/devtools-api": "^6.6.4" }, "peerDependencies": { "vue": "^3.2.0" } }, "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w=="], @@ -1085,8 +1079,6 @@ "xml-name-validator": ["xml-name-validator@4.0.0", "", {}, "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw=="], - "xstate": ["xstate@5.19.2", "", {}, "sha512-B8fL2aP0ogn5aviAXFzI5oZseAMqN00fg/TeDa3ZtatyDcViYLIfuQl4y8qmHCiKZgGEzmnTyNtNQL9oeJE2gw=="], - "yaml": ["yaml@2.7.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], @@ -1149,6 +1141,8 @@ "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.0.3", "", {}, "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw=="], + "postcss-html/postcss-safe-parser": ["postcss-safe-parser@6.0.0", "", { "peerDependencies": { "postcss": "^8.3.3" } }, "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ=="], "stylelint/file-entry-cache": ["file-entry-cache@10.0.6", "", { "dependencies": { "flat-cache": "^6.1.6" } }, "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA=="], @@ -1161,7 +1155,11 @@ "vite/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], - "vue-eslint-parser/eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], + "vue-eslint-parser/eslint-scope": ["eslint-scope@7.2.2", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg=="], + + "vue-eslint-parser/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], + + "vue-eslint-parser/espree": ["espree@9.6.1", "", { "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" } }, "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ=="], "vue-router/@vue/devtools-api": ["@vue/devtools-api@6.6.4", "", {}, "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="], diff --git a/cfg/dprint.json b/cfg/dprint.json index 4c96bbc..dd32247 100644 --- a/cfg/dprint.json +++ b/cfg/dprint.json @@ -83,7 +83,7 @@ "https://plugins.dprint.dev/json-0.20.0.wasm", "https://plugins.dprint.dev/markdown-0.18.0.wasm", "https://plugins.dprint.dev/toml-0.7.0.wasm", - "https://plugins.dprint.dev/g-plane/malva-v0.11.2.wasm", + "https://plugins.dprint.dev/g-plane/malva-v0.11.1.wasm", "https://plugins.dprint.dev/g-plane/markup_fmt-v0.19.0.wasm", "https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm", "https://plugins.dprint.dev/exec-0.5.1.json@492414e39dea4dccc07b4af796d2f4efdb89e84bae2bd4e1e924c0cc050855bf" diff --git a/containers/Dockerfile b/containers/Dockerfile index 0ef036a..073334f 100644 --- a/containers/Dockerfile +++ b/containers/Dockerfile @@ -22,13 +22,11 @@ COPY . . ENV NODE_ENV=production RUN bun --bun vite build -# TODO: Supprimer les fichiers par défaut Angie. # Créé le nécessaire pour Angie, le proxy inversé servant l'application. FROM docker.angie.software/angie:minimal AS release COPY --from=prerelease /usr/src/app/dist/ /usr/share/angie/html/ COPY containers/angie/default.conf /etc/angie/http.d/default.conf -# TODO: Finir ça. # Met en place les métadonnées OCI. LABEL org.opencontainers.image.title=journal-media-vue \ org.opencontainers.image.description="A modern client-server application for the Soulseek file sharing network" \ diff --git a/cspell.json b/cspell.json index 779eb4a..5d546ed 100644 --- a/cspell.json +++ b/cspell.json @@ -15,8 +15,6 @@ "fieldset", "tabindex", "currentcolor", - "labelledby", - "imdb", - "xstate" + "labelledby" ] } diff --git a/justfile b/justfile index b186532..cdb63a4 100755 --- a/justfile +++ b/justfile @@ -79,12 +79,12 @@ watch-format: watchexec dprint --config "cfg/dprint.json" fmt # Vérifie le code CSS avec stylelint. -lint-css fix="": +lint-css: bun --bun stylelint \ --cache --cache-location "{{ cacheFolder }}/{{ stylelintCacheFile }}" \ --config "{{ stylelintConfigFile }}" \ - "src/**/*.{css,vue}" \ - {{ fix }} + --fix \ + "**/*.{css,vue}" # Analyse le code TypeScript et Vue. lint-js fix="": @@ -111,11 +111,5 @@ lint-dead-code: # Vérifie tous les fichiers. lint-all: - just lint-css --fix - just lint-js --fix - -# Génère le nécessaire pour TLS. -tls: - -rm -rfv .tls/ - mkdir -vp .tls/ - mkcert -key-file ./.tls/key.pem -cert-file ./.tls/cert.pem "journal.site" + just lint-css + just lint-js diff --git a/package.json b/package.json index 4d8f43f..5cdc9fd 100644 --- a/package.json +++ b/package.json @@ -4,38 +4,36 @@ "type": "module", "private": true, "dependencies": { - "@effect/platform": "^0.79.0", - "@effect/sql-drizzle": "^0.31.0", - "@thi.ng/color-palettes": "^1.4.37", - "@thi.ng/pixel": "^7.3.20", - "@thi.ng/pixel-dither": "^1.1.160", - "@xstate/vue": "^4.0.2", + "@effect/platform": "^0.77.6", + "@effect/sql-drizzle": "^0.29.6", + "@thi.ng/color-palettes": "^1.4.36", + "@thi.ng/pixel": "^7.3.19", + "@thi.ng/pixel-dither": "^1.1.159", "a11y-dialog": "^8.1.1", "drizzle-orm": "^0.40.0", - "effect": "^3.13.9", + "effect": "^3.13.6", "pinia": "^3.0.1", "sqlocal": "^0.14.0", "vue": "^3.5.13", - "vue-router": "^4.5.0", - "xstate": "^5.19.2" + "vue-router": "^4.5.0" }, "devDependencies": { "@cspell/dict-fr-fr": "^2.2.5", "@eslint/css": "^0.4.0", - "@types/bun": "^1.2.5", + "@types/bun": "^1.2.4", "@vitejs/plugin-vue": "^5.2.1", - "@vue/eslint-config-typescript": "^14.5.0", + "@vue/eslint-config-typescript": "^14.4.0", "@vue/typescript-plugin": "^2.2.8", "browserslist": "^4.24.4", "cspell": "^8.17.5", "drizzle-kit": "^0.30.5", - "eslint": "^9.22.0", - "eslint-plugin-perfectionist": "^4.10.1", + "eslint": "^9.21.0", + "eslint-plugin-perfectionist": "^4.9.0", "eslint-plugin-vue": "^10.0.0", "globals": "^16.0.0", "jiti": "^2.4.2", "knip": "^5.45.0", - "lightningcss": "^1.29.2", + "lightningcss": "^1.29.1", "prettier": "^3.5.3", "prettier-plugin-pkg": "^0.18.1", "prettier-plugin-sh": "^0.15.0", @@ -47,7 +45,7 @@ "stylelint-plugin-logical-css": "^1.2.1", "tsr": "^1.3.4", "typescript": "^5.8.2", - "vite": "^6.2.1", + "vite": "^6.2.0", "vue-tsc": "^2.2.8" } } diff --git a/src/components/dialogs/EditEntryDialog.vue b/src/components/dialogs/EditEntryDialog.vue index 078cc6e..6c9d12f 100644 --- a/src/components/dialogs/EditEntryDialog.vue +++ b/src/components/dialogs/EditEntryDialog.vue @@ -1,133 +1,66 @@ diff --git a/src/components/loading/LoadingBox.vue b/src/components/loading/LoadingBox.vue index 51a5f3e..8a0665a 100644 --- a/src/components/loading/LoadingBox.vue +++ b/src/components/loading/LoadingBox.vue @@ -1,45 +1,4 @@ - - - + diff --git a/src/db/schemas/constants.ts b/src/db/schemas/constants.ts index f3adf28..40fe09c 100644 --- a/src/db/schemas/constants.ts +++ b/src/db/schemas/constants.ts @@ -11,6 +11,8 @@ export const DIARY_ENTRY_STATES = { TO_FIND: "to_find", /** Un média déjà vu et à revoir. */ TO_REWATCH: "to_rewatch", + /** Un média souhaité mais dont l'état est encore flou. */ + TO_SORT: "to_sort", /** Un média acquis et à regarder. */ TO_WATCH: "to_watch", /** Un média à l'état inconnu (état par défaut). */ diff --git a/src/libs/apis/clients.ts b/src/libs/apis/clients.ts index 6daa11b..69bf478 100644 --- a/src/libs/apis/clients.ts +++ b/src/libs/apis/clients.ts @@ -1,4 +1,4 @@ -import type { Coercible, Input } from "@effect/platform/UrlParams"; +import type { Input } from "@effect/platform/UrlParams"; import { FetchHttpClient, HttpClient, HttpClientRequest, Url, UrlParams } from "@effect/platform"; import { Effect, pipe } from "effect"; @@ -19,14 +19,6 @@ export const createUrlWithParams = (stringUrl: string) => (params: Input) => return Url.setUrlParams(url, urlParams); }); -export const createUrlWithParameterizedPathAndParams = (stringUrl: string, parameter: Coercible) => (params: Input) => - Effect.gen(function*() { - const url: URL = yield* Url.fromString(`${stringUrl}/${String(parameter)}`); - const urlParams: UrlParams.UrlParams = UrlParams.fromInput(params); - - return Url.setUrlParams(url, urlParams); - }); - export const createGetHttpRequest = (url: URL): HttpClientRequest.HttpClientRequest => pipe( HttpClientRequest.get(url), diff --git a/src/libs/apis/routes.ts b/src/libs/apis/routes.ts index 7c1fbb5..aee5801 100644 --- a/src/libs/apis/routes.ts +++ b/src/libs/apis/routes.ts @@ -1,2 +1 @@ export const TMDB_ROUTE_SEARCH_MOVIE = "https://api.themoviedb.org/3/search/movie"; -export const TMDB_ROUTE_MOVIE_DETAILS = "https://api.themoviedb.org/3/movie"; diff --git a/src/libs/apis/tmdb/schemas.ts b/src/libs/apis/tmdb/schemas.ts index 020a18a..e3653ff 100644 --- a/src/libs/apis/tmdb/schemas.ts +++ b/src/libs/apis/tmdb/schemas.ts @@ -1,9 +1,5 @@ import { Schema } from "effect"; -import { TmdbCompany } from "./schemas/companies"; -import { TmdbCredit } from "./schemas/credits"; -import { TmdbLanguage } from "./schemas/languages"; - // Requête export class TmdbMovieSearchQueryParams extends Schema.Class("TmdbMovieSearchArgs")({ @@ -28,14 +24,6 @@ export class TmdbMovieSearchQueryParams extends Schema.Class("TmdbMovieDetailsQueryParams")({ - append_to_response: Schema.Literal("credits"), - language: Schema.NonEmptyString, - movie_id: Schema.NonNegativeInt, - }) -{} - // Réponse export class TmdbMovieSearchResponseResult @@ -63,39 +51,3 @@ export class TmdbMovieSearchResponse extends Schema.Class("TmdbMovieDetailsWithCreditsResponse")({ - adult: Schema.Boolean, - backdrop_path: Schema.Union(Schema.String, Schema.Null), - belongs_to_collection: Schema.Unknown, - budget: Schema.NonNegativeInt, - credits: Schema.Struct({ - cast: Schema.Array(TmdbCredit), - crew: Schema.Array(TmdbCredit), - }), - genres: Schema.Array(Schema.Struct({ - id: Schema.NonNegativeInt, - name: Schema.NonEmptyString, - })), - homepage: Schema.String, - id: Schema.NonNegativeInt, - imdb_id: Schema.Union(Schema.String, Schema.Null), - original_language: Schema.String, - original_title: Schema.String, - overview: Schema.String, - popularity: Schema.Number, - poster_path: Schema.Union(Schema.String, Schema.Null), - production_companies: Schema.Array(TmdbCompany), - release_date: Schema.String, - revenue: Schema.NonNegativeInt, - runtime: Schema.NonNegativeInt, - spoken_languages: Schema.Array(TmdbLanguage), - status: Schema.NonEmptyString, - tagline: Schema.String, - title: Schema.NonEmptyString, - video: Schema.Boolean, - vote_average: Schema.Number, - vote_count: Schema.NonNegativeInt, - }) -{} diff --git a/src/libs/apis/tmdb/schemas/companies.ts b/src/libs/apis/tmdb/schemas/companies.ts deleted file mode 100644 index 3f8c907..0000000 --- a/src/libs/apis/tmdb/schemas/companies.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Brand, Schema } from "effect"; - -import { CountryIsoCode } from "./countries"; - -/** L'ID d'une société sous forme de nombre entier positif. */ -export type CompanyId = Brand.Brand<"CompanyId"> & number; -export const CompanyId = Brand.refined( - n => Number.isInteger(n) && n >= 0, - n => Brand.error(`${String(n)} doit être un nombre entier positif.`), -); - -/** Entité représentant une société (p. ex. de production). */ -export class TmdbCompany extends Schema.Class("TmdbCompany")({ - /** ID de la société. */ - id: Schema.NonNegativeInt.pipe(Schema.fromBrand(CompanyId)), - /** Chemin relatif du logo de la société. */ - logo_path: Schema.Union(Schema.String, Schema.Null), - /** Nom de la société. */ - name: Schema.String, - /** Pays d'origine de la société sous forme de code ISO 3166-1. */ - origin_country: Schema.Union(Schema.String.pipe(Schema.fromBrand(CountryIsoCode)), Schema.String), -}) {} diff --git a/src/libs/apis/tmdb/schemas/countries.ts b/src/libs/apis/tmdb/schemas/countries.ts deleted file mode 100644 index 90d7d1f..0000000 --- a/src/libs/apis/tmdb/schemas/countries.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Brand, Schema } from "effect"; - -// TODO: Vérifier le code ISO dans une liste. -/** Le code ISO 3166-1 (à deux lettres) d'un pays. */ -export type CountryIsoCode = Brand.Brand & string; -export const CountryIsoCode = Brand.refined( - s => s.length == 2, - s => Brand.error(`${s} ne correspond pas au code ISO 3166-1 connu d'un pays.`), -); - -export class TmdbCountry extends Schema.Class("TmdbCountry")({ - iso_3166_1: Schema.NonEmptyString.pipe(Schema.fromBrand(CountryIsoCode)), - name: Schema.String, -}) {} diff --git a/src/libs/apis/tmdb/schemas/credits.ts b/src/libs/apis/tmdb/schemas/credits.ts deleted file mode 100644 index 1cb0dc1..0000000 --- a/src/libs/apis/tmdb/schemas/credits.ts +++ /dev/null @@ -1,66 +0,0 @@ -import type { Values } from "@/libs/utils/types"; - -import { Brand, Match, Schema } from "effect"; - -export const PERSON_GENDER_VALUES = { - FEMALE: "female", - MALE: "male", - NON_BINARY: "non-binary", - OTHER: "other", -} as const; -export type PersonGender = Values; - -const GenderStringFromInteger = Schema.transform( - Schema.Literal(0, 1, 2, 3), - Schema.Enums(PERSON_GENDER_VALUES), - { - decode: (number: 0 | 1 | 2 | 3) => - Match.value(number).pipe( - Match.when(0, () => PERSON_GENDER_VALUES.OTHER), - Match.when(1, () => PERSON_GENDER_VALUES.FEMALE), - Match.when(2, () => PERSON_GENDER_VALUES.MALE), - Match.when(3, () => PERSON_GENDER_VALUES.NON_BINARY), - Match.exhaustive, - ), - encode: (gender: PersonGender) => - Match.value(gender).pipe( - Match.when(PERSON_GENDER_VALUES.OTHER, () => 0 as const), - Match.when(PERSON_GENDER_VALUES.FEMALE, () => 1 as const), - Match.when(PERSON_GENDER_VALUES.MALE, () => 2 as const), - Match.when(PERSON_GENDER_VALUES.NON_BINARY, () => 3 as const), - Match.exhaustive, - ), - strict: true, - }, -); - -/** L'ID d'une personne sous forme de nombre entier positif. */ -export type PersonId = Brand.Brand<"PersonId"> & number; -export const PersonId = Brand.refined( - n => Number.isInteger(n) && n >= 0, - n => Brand.error(`${String(n)} doit être un nombre entier positif.`), -); - -/** Le nom d'une personne. */ -export type PersonName = Brand.Brand<"PersonName"> & string; -export const PersonName = Brand.refined( - s => s.length > 2, - s => Brand.error(`${String(s)} doit contenir au moins 2 lettres.`), -); - -export class TmdbCredit extends Schema.Class("TmdbCredit")({ - adult: Schema.Boolean, - cast_id: Schema.NonNegativeInt.pipe(Schema.optional), - character: Schema.NonEmptyString.pipe(Schema.optional), - credit_id: Schema.String, - department: Schema.String.pipe(Schema.optional), - gender: GenderStringFromInteger, - id: Schema.NonNegativeInt.pipe(Schema.fromBrand(PersonId)), - job: Schema.NonEmptyString.pipe(Schema.optional), - known_for_department: Schema.String, - name: Schema.NonEmptyString.pipe(Schema.fromBrand(PersonName)), - order: Schema.NonNegativeInt.pipe(Schema.optional), - original_name: Schema.NonEmptyString.pipe(Schema.fromBrand(PersonName)), - popularity: Schema.Number, - profile_path: Schema.Union(Schema.String, Schema.Null), -}) {} diff --git a/src/libs/apis/tmdb/schemas/languages.ts b/src/libs/apis/tmdb/schemas/languages.ts deleted file mode 100644 index a13645b..0000000 --- a/src/libs/apis/tmdb/schemas/languages.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Brand, Schema } from "effect"; - -export type LanguageIsoCode = Brand.Brand & string; -export const LanguageIsoCode = Brand.refined( - s => /[a-z]{2}/.test(s), - s => Brand.error(`${s} ne correspond pas au code ISO 639-1 connu d'une langue.`), -); - -export class TmdbLanguage extends Schema.Class("TmdbLanguage")({ - english_name: Schema.NonEmptyString, - iso_639_1: Schema.NonEmptyString.pipe(Schema.fromBrand(LanguageIsoCode)), - name: Schema.NonEmptyString, -}) {} diff --git a/src/machines/EditEntryDialog.ts b/src/machines/EditEntryDialog.ts deleted file mode 100644 index d0f6ffc..0000000 --- a/src/machines/EditEntryDialog.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { MergedTmdbLocalData } from "@/libs/search/schemas"; - -import { not, setup } from "xstate"; - -export const editEntryDialogMachine = setup({ - guards: { - /** Est-ce que l'ouvre présentée possède une entrée dans le Journal ? */ - hasDiaryEntry: ({ context }) => context.entryData?.entryId !== undefined, - }, - types: { - context: {} as { entryData: MergedTmdbLocalData | undefined }, - input: {} as { entryData: MergedTmdbLocalData }, - }, -}) - .createMachine({ - context: ({ input }) => ({ - entryData: input.entryData, - }), - id: "editEntryDialog", - initial: "blankOrEntry", - states: { - blankOrEntry: { - always: [ - { - guard: not("hasDiaryEntry"), - target: "viewing.blank", - }, - { - guard: "hasDiaryEntry", - target: "viewing.entry", - }, - ], - description: "État initial « fantôme » ne servant qu'à déterminer si le média est dans le Journal ou non.", - }, - editing: { - description: "État de finalisation.", - type: "final", - }, - viewing: { - description: "État de lecture seule des données de l'entrée.", - initial: "blank", - on: { - editWanted: { - target: "editing", - }, - }, - states: { - blank: {}, - entry: {}, - }, - }, - }, - }); diff --git a/src/pages/AddEntryPage.vue b/src/pages/AddEntryPage.vue deleted file mode 100644 index a8a6302..0000000 --- a/src/pages/AddEntryPage.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/pages/SearchPage.vue b/src/pages/SearchPage.vue index e09f148..a3b45de 100644 --- a/src/pages/SearchPage.vue +++ b/src/pages/SearchPage.vue @@ -23,7 +23,6 @@ import { Effect, pipe, Schema } from "effect"; import { computed, onMounted, ref, useTemplateRef, watch } from "vue"; import { useRoute, useRouter } from "vue-router"; - import { useEntryStore } from "@/stores/entry.ts"; // États @@ -55,9 +54,6 @@ const editedEntry: Ref = ref(); - // Magasins - const entryStore = useEntryStore(); - // Fonctions let updateUrlQuery = updateUrlQueryFromFormData(router, form.value); @@ -152,32 +148,33 @@ effect => getOrUndefined(effect), ); - const newEntry = yield* Schema.decodeUnknown(MergedTmdbLocalData)( - { - artWorkId: artWork?.id, - artWorkMediumTypeId: artWork?.mediumTypeId, - entryAppreciation: entry?.appreciation, - entryCommentary: entry?.commentary, - entryDateCreated: entry?.dateCreated, - entryDateModified: entry?.dateModified, - entryDateObtained: entry?.dateObtained, - entryId: entry?.id, - entryStateId: entry?.stateId, - genreIds: result.genre_ids, - originalLanguage: result.original_language, - originalResultIndex: index, - originalTitle: result.original_title, - overview: result.overview, - popularity: result.popularity, - posterUrl: result.poster_path, - releaseDate: result.release_date, - title: result.title, - tmdbId: result.id, - } satisfies MergedTmdbLocalData, + // TODO: Uniformiser la casse des propriétés. + searchData.value.set( + result.id, + yield* Schema.decodeUnknown(MergedTmdbLocalData)( + { + artWorkId: artWork?.id, + artWorkMediumTypeId: artWork?.mediumTypeId, + entryAppreciation: entry?.appreciation, + entryCommentary: entry?.commentary, + entryDateCreated: entry?.dateCreated, + entryDateModified: entry?.dateModified, + entryDateObtained: entry?.dateObtained, + entryId: entry?.id, + entryStateId: entry?.stateId, + genreIds: result.genre_ids, + originalLanguage: result.original_language, + originalResultIndex: index, + originalTitle: result.original_title, + overview: result.overview, + popularity: result.popularity, + posterUrl: result.poster_path, + releaseDate: result.release_date, + title: result.title, + tmdbId: result.id, + } satisfies MergedTmdbLocalData, + ), ); - - searchData.value.set(result.id, newEntry); - entryStore.setEntry(newEntry); }).pipe(Effect.runPromise) ); })); diff --git a/src/router/index.ts b/src/router/index.ts index 7c36b72..1372f30 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -29,18 +29,6 @@ const router: Router = createRouter({ name: "Search", path: "/search", }, - { - component: () => import("@/pages/AddEntryPage.vue"), - meta: { title: "Ajouter une entrée au Journal" }, - name: "AddEntry", - path: "/entry/add", - }, - { - component: () => import("@/pages/HomePage.vue"), - meta: { title: "Voir une entrée du Journal" }, - name: "ViewEntry", - path: "/entry/:entryId", - }, ], }); diff --git a/src/router/typed-routes.d.ts b/src/router/typed-routes.d.ts index 37e82ef..480896c 100644 --- a/src/router/typed-routes.d.ts +++ b/src/router/typed-routes.d.ts @@ -3,13 +3,6 @@ import type { RouteRecordInfo } from "vue-router"; import "vue-router"; export interface RouteNamedMap { - AddEntry: RouteRecordInfo< - "AddEntry", - "/entry/add", - Record, - Record, - { title: string } - >; Home: RouteRecordInfo< "Home", "/", @@ -31,13 +24,6 @@ export interface RouteNamedMap { Record, { title: string } >; - ViewEntry: RouteRecordInfo< - "ViewEntry", - "/entry/:entryId", - { entryId: number }, - { entryId: number }, - { title: string } - >; } // Last, you will need to augment the Vue Router types with this map of routes diff --git a/src/services/read-api.ts b/src/services/read-api.ts index 0221c8e..71f80ba 100644 --- a/src/services/read-api.ts +++ b/src/services/read-api.ts @@ -14,6 +14,8 @@ export class ReadApi extends Effect.Service()("ReadApi", { yield* Effect.logDebug("--- READ-API ---"); + // TODO: Implémenter ReadApiError pour des requêtes avec zéro retour. + return { getAllEntries: () => query(_ => _.select().from(DiaryEntries)), getArtworkByTmdbId: (tmdbId: number) => diff --git a/src/services/tmdb-api.ts b/src/services/tmdb-api.ts index a9eeb95..c5b9408 100644 --- a/src/services/tmdb-api.ts +++ b/src/services/tmdb-api.ts @@ -1,16 +1,6 @@ -import { - createGetHttpRequest, - createUrlWithParameterizedPathAndParams, - createUrlWithParams, - DebugHttpClient as Dhc, -} from "@/libs/apis/clients"; -import { TMDB_ROUTE_MOVIE_DETAILS, TMDB_ROUTE_SEARCH_MOVIE } from "@/libs/apis/routes"; -import { - TmdbMovieDetailsQueryParams, - TmdbMovieDetailsWithCreditsResponse, - type TmdbMovieSearchQueryParams, - TmdbMovieSearchResponse, -} from "@/libs/apis/tmdb/schemas"; +import { createGetHttpRequest, createUrlWithParams, DebugHttpClient as Dhc } from "@/libs/apis/clients"; +import { TMDB_ROUTE_SEARCH_MOVIE } from "@/libs/apis/routes"; +import { type TmdbMovieSearchQueryParams, TmdbMovieSearchResponse } from "@/libs/apis/tmdb/schemas"; import { HttpClient, HttpClientRequest, HttpClientResponse } from "@effect/platform"; import { Data, Effect, pipe } from "effect"; @@ -24,20 +14,6 @@ export class TmdbApi extends Effect.Service()("TmdbApi", { const client = yield* Dhc; return { - getMovieDetails: (args: TmdbMovieDetailsQueryParams) => - pipe( - createUrlWithParameterizedPathAndParams(TMDB_ROUTE_MOVIE_DETAILS, args.movie_id)({ - append_to_response: args.append_to_response, - language: args.language, - }), - Effect.andThen((url: URL) => createGetHttpRequest(url)), - Effect.andThen((request: HttpClientRequest.HttpClientRequest) => client.execute(request)), - HttpClient.withTracerPropagation(false), - Effect.andThen((response: HttpClientResponse.HttpClientResponse) => - HttpClientResponse.schemaBodyJson(TmdbMovieDetailsWithCreditsResponse)(response) - ), - Effect.scoped, - ), searchMovie: (args: TmdbMovieSearchQueryParams) => pipe( createUrlWithParams(TMDB_ROUTE_SEARCH_MOVIE)({ ...args }), diff --git a/src/stores/entry.ts b/src/stores/entry.ts deleted file mode 100644 index d806d7d..0000000 --- a/src/stores/entry.ts +++ /dev/null @@ -1,20 +0,0 @@ -import type { TmdbMovieDetailsWithCreditsResponse } from "@/libs/apis/tmdb/schemas"; -import type { MergedTmdbLocalData } from "@/libs/search/schemas"; - -import { defineStore } from "pinia"; -import { type Ref, ref } from "vue"; - -export const useEntryStore = defineStore("entry", () => { - const entry: Ref = ref(); - const tmdbData: Ref = ref(); - - const setEntry = (newEntry: MergedTmdbLocalData | undefined): void => { - entry.value = newEntry; - }; - - const setTmdbData = (newData: TmdbMovieDetailsWithCreditsResponse | undefined): void => { - tmdbData.value = newData; - }; - - return { entry, setEntry, setTmdbData, tmdbData }; -}); diff --git a/src/styles/base/base.css b/src/styles/base/base.css index adc72e5..71d26b2 100755 --- a/src/styles/base/base.css +++ b/src/styles/base/base.css @@ -67,7 +67,7 @@ body { navigation: auto; } -/* @media (prefers-reduced-motion) { +@media (prefers-reduced-motion) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; @@ -77,4 +77,4 @@ body { @view-transition { navigation: none !important; } -} */ +} diff --git a/src/styles/base/variables.css b/src/styles/base/variables.css index 8a4ba58..70c7789 100755 --- a/src/styles/base/variables.css +++ b/src/styles/base/variables.css @@ -11,15 +11,6 @@ --color-tertiary: dimgrey; --color-quartary: #be2727; - /* * - * Depuis saumon : - * Complémentaire : #72ecfa - * Brun foncé : #502924 - * Brun clair : #7a3f38 - * Rouge brun : #a5544b - * Rouge marron : #cf6a5f - */ - /* Hauteurs de ligne */ --line-height-comfortable: 1.4; --line-height-compact: 1.1; @@ -43,11 +34,7 @@ --s5: calc(var(--s4) * var(--ratio)); /* Arrière-plans à motifs */ - --bg25-tertiary: repeating-conic-gradient(var(--color-tertiary) 0% 25%, transparent 0% 100%) 1px - 0.5px / 2px 2px; - --bg75-tertiary: repeating-conic-gradient(var(--color-tertiary) 0% 75%, transparent 0% 100%) 1px - 0.5px / 2px 2px; - --bg25-secondary: repeating-conic-gradient(var(--color-secondary) 0% 25%, transparent 0% 100%) 1px + --bg25-secondary: repeating-conic-gradient(var(--color-tertiary) 0% 25%, transparent 0% 100%) 1px 0.5px / 2px 2px; --bg75-secondary: repeating-conic-gradient(var(--color-secondary) 0% 75%, transparent 0% 100%) 1px 0.5px / 2px 2px; diff --git a/src/styles/components/imposter-box.css b/src/styles/components/imposter-box.css index 0954530..6b222c3 100644 --- a/src/styles/components/imposter-box.css +++ b/src/styles/components/imposter-box.css @@ -1,6 +1,6 @@ /* Élément conteneur de la fenêtre modale. */ .dialog { - --dialog-overlay-background: var(--bg25-tertiary); + --dialog-overlay-background: var(--bg25-secondary); --dialog-background-color: var(--root-background-color); --dialog-border-color: var(--root-text-color); --dialog-shadow-color: var(--root-text-color); @@ -37,16 +37,14 @@ border-block-end: 1px solid var(--dialog-border-color); h2 { - font-family: "BRKLY", monospace; padding-inline: var(--s-1); - text-transform: uppercase; - font-size: var(--s0); - font-weight: var(--brkly-font-weight-semibold); + font-size: var(--s1); } button { padding: var(--s-1); - font-weight: var(--brkly-font-weight-semibold); + font-family: Banquise, monospace; + font-weight: 500; } } diff --git a/src/styles/themes/default/animations.css b/src/styles/themes/default/animations.css index 8dd9d7b..be0e837 100644 --- a/src/styles/themes/default/animations.css +++ b/src/styles/themes/default/animations.css @@ -13,25 +13,3 @@ opacity: 1; } } - -@keyframes loading { - 0% { - content: ""; - } - - 25% { - content: "."; - } - - 50% { - content: ".."; - } - - 75% { - content: "..."; - } - - 100% { - content: ""; - } -} diff --git a/src/styles/themes/default/headings.css b/src/styles/themes/default/headings.css index 9690ab1..891f9e5 100755 --- a/src/styles/themes/default/headings.css +++ b/src/styles/themes/default/headings.css @@ -6,19 +6,16 @@ h1 { font-family: var(--headings-font-family); font-size: var(--s3); letter-spacing: var(--letter-spacing-medium); - line-height: var(--line-height-compact); } h2 { font-family: var(--headings-font-family); font-size: var(--s2); letter-spacing: var(--letter-spacing-small); - line-height: var(--line-height-compact); } h3 { font-family: var(--headings-font-family); font-size: var(--s1); letter-spacing: var(--letter-spacing-small); - line-height: var(--line-height-compact); } diff --git a/vite.config.mts b/vite.config.mts index 46f543e..88adb28 100644 --- a/vite.config.mts +++ b/vite.config.mts @@ -1,5 +1,4 @@ import vue from "@vitejs/plugin-vue"; -import fs from "node:fs"; import { defineConfig } from "vite"; export default defineConfig({ @@ -8,13 +7,7 @@ export default defineConfig({ emptyOutDir: true, outDir: "dist", reportCompressedSize: true, - rollupOptions: { - output: { - compact: true, - format: "esm", - validate: true, - }, - }, + rollupOptions: { output: { compact: true, format: "esm", validate: true } }, sourcemap: false, }, cacheDir: ".cache/vite", @@ -23,27 +16,26 @@ export default defineConfig({ optimizeDeps: { exclude: ["sqlocal"] }, plugins: [ vue(), + { + configureServer: server => { + server.middlewares.use((_req, res, next) => { + res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); + res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); + res.setHeader("Access-Control-Allow-Origin", "http://localhost:4321"); + res.setHeader("Access-Control-Allow-Credentials", "true"); + res.setHeader("Cross-Origin-Embedder-Policy", "require-corp"); + res.setHeader("Cross-Origin-Opener-Policy", "same-origin"); + res.setHeader("Cross-Origin-Resource-Policy", "cross-origin"); + next(); + }); + }, + name: "configure-response-headers", + }, ], resolve: { alias: { "@": Bun.fileURLToPath(new URL("./src", import.meta.url)), }, }, - server: { - allowedHosts: ["journal.site"], - cors: { origin: ["https://journal.site"] }, - hmr: { - clientPort: 5173, - protocol: "wss", - }, - host: "0.0.0.0", - https: { - cert: fs.readFileSync(".tls/cert.pem"), - key: fs.readFileSync(".tls/key.pem"), - }, - port: 5173, - proxy: {}, - strictPort: true, - }, worker: { format: "es" }, });