This commit is contained in:
parent
3f546c4396
commit
5688e10d0d
42 changed files with 635 additions and 295 deletions
210
bun.lock
210
bun.lock
|
|
@ -59,9 +59,9 @@
|
|||
|
||||
"@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="],
|
||||
|
||||
"@babel/parser": ["@babel/parser@7.26.9", "", { "dependencies": { "@babel/types": "^7.26.9" }, "bin": "./bin/babel-parser.js" }, "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A=="],
|
||||
"@babel/parser": ["@babel/parser@7.26.10", "", { "dependencies": { "@babel/types": "^7.26.10" }, "bin": "./bin/babel-parser.js" }, "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA=="],
|
||||
|
||||
"@babel/types": ["@babel/types@7.26.9", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw=="],
|
||||
"@babel/types": ["@babel/types@7.26.10", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ=="],
|
||||
|
||||
"@cspell/cspell-bundled-dicts": ["@cspell/cspell-bundled-dicts@8.17.5", "", { "dependencies": { "@cspell/dict-ada": "^4.1.0", "@cspell/dict-al": "^1.1.0", "@cspell/dict-aws": "^4.0.9", "@cspell/dict-bash": "^4.2.0", "@cspell/dict-companies": "^3.1.14", "@cspell/dict-cpp": "^6.0.4", "@cspell/dict-cryptocurrencies": "^5.0.4", "@cspell/dict-csharp": "^4.0.6", "@cspell/dict-css": "^4.0.17", "@cspell/dict-dart": "^2.3.0", "@cspell/dict-data-science": "^2.0.7", "@cspell/dict-django": "^4.1.4", "@cspell/dict-docker": "^1.1.12", "@cspell/dict-dotnet": "^5.0.9", "@cspell/dict-elixir": "^4.0.7", "@cspell/dict-en-common-misspellings": "^2.0.9", "@cspell/dict-en-gb": "1.1.33", "@cspell/dict-en_us": "^4.3.33", "@cspell/dict-filetypes": "^3.0.11", "@cspell/dict-flutter": "^1.1.0", "@cspell/dict-fonts": "^4.0.4", "@cspell/dict-fsharp": "^1.1.0", "@cspell/dict-fullstack": "^3.2.5", "@cspell/dict-gaming-terms": "^1.1.0", "@cspell/dict-git": "^3.0.4", "@cspell/dict-golang": "^6.0.18", "@cspell/dict-google": "^1.0.8", "@cspell/dict-haskell": "^4.0.5", "@cspell/dict-html": "^4.0.11", "@cspell/dict-html-symbol-entities": "^4.0.3", "@cspell/dict-java": "^5.0.11", "@cspell/dict-julia": "^1.1.0", "@cspell/dict-k8s": "^1.0.10", "@cspell/dict-kotlin": "^1.1.0", "@cspell/dict-latex": "^4.0.3", "@cspell/dict-lorem-ipsum": "^4.0.4", "@cspell/dict-lua": "^4.0.7", "@cspell/dict-makefile": "^1.0.4", "@cspell/dict-markdown": "^2.0.9", "@cspell/dict-monkeyc": "^1.0.10", "@cspell/dict-node": "^5.0.6", "@cspell/dict-npm": "^5.1.27", "@cspell/dict-php": "^4.0.14", "@cspell/dict-powershell": "^5.0.14", "@cspell/dict-public-licenses": "^2.0.13", "@cspell/dict-python": "^4.2.15", "@cspell/dict-r": "^2.1.0", "@cspell/dict-ruby": "^5.0.7", "@cspell/dict-rust": "^4.0.11", "@cspell/dict-scala": "^5.0.7", "@cspell/dict-shell": "^1.1.0", "@cspell/dict-software-terms": "^4.2.5", "@cspell/dict-sql": "^2.2.0", "@cspell/dict-svelte": "^1.0.6", "@cspell/dict-swift": "^2.0.5", "@cspell/dict-terraform": "^1.1.0", "@cspell/dict-typescript": "^3.2.0", "@cspell/dict-vue": "^3.0.4" } }, "sha512-b/Ntabar+g4gsRNwOct909cvatO/auHhNvBzJZfyFQzryI1nqHMaSFuDsrrtzbhQkGJ4GiMAKCXZC2EOdHMgmw=="],
|
||||
|
||||
|
|
@ -85,7 +85,7 @@
|
|||
|
||||
"@cspell/dict-companies": ["@cspell/dict-companies@3.1.14", "", {}, "sha512-iqo1Ce4L7h0l0GFSicm2wCLtfuymwkvgFGhmu9UHyuIcTbdFkDErH+m6lH3Ed+QuskJlpQ9dM7puMIGqUlVERw=="],
|
||||
|
||||
"@cspell/dict-cpp": ["@cspell/dict-cpp@6.0.4", "", {}, "sha512-IvXx3TlM+OL0CFriapk7ZHmeY89dSSdo/BZ3DGf+WUS+BWd64H+z/xr3xkkqY0Eu6MV/vdzNfkLm5zl45FDMGg=="],
|
||||
"@cspell/dict-cpp": ["@cspell/dict-cpp@6.0.6", "", {}, "sha512-HMV1chsExuZt5IL9rYBW7GmhNZDVdQJEd1WtFgOO6jqiNxbpTG3Is3Pkldl7FpusBQQZr4BdjMit5bnPpVRy3A=="],
|
||||
|
||||
"@cspell/dict-cryptocurrencies": ["@cspell/dict-cryptocurrencies@5.0.4", "", {}, "sha512-6iFu7Abu+4Mgqq08YhTKHfH59mpMpGTwdzDB2Y8bbgiwnGFCeoiSkVkgLn1Kel2++hYcZ8vsAW/MJS9oXxuMag=="],
|
||||
|
||||
|
|
@ -105,11 +105,11 @@
|
|||
|
||||
"@cspell/dict-elixir": ["@cspell/dict-elixir@4.0.7", "", {}, "sha512-MAUqlMw73mgtSdxvbAvyRlvc3bYnrDqXQrx5K9SwW8F7fRYf9V4vWYFULh+UWwwkqkhX9w03ZqFYRTdkFku6uA=="],
|
||||
|
||||
"@cspell/dict-en-common-misspellings": ["@cspell/dict-en-common-misspellings@2.0.9", "", {}, "sha512-O/jAr1VNtuyCFckbTmpeEf43ZFWVD9cJFvWaA6rO2IVmLirJViHWJUyBZOuQcesSplzEIw80MAYmnK06/MDWXQ=="],
|
||||
"@cspell/dict-en-common-misspellings": ["@cspell/dict-en-common-misspellings@2.0.10", "", {}, "sha512-80mXJLtr0tVEtzowrI7ycVae/ULAYImZUlr0kUTpa8i57AUk7Zy3pYBs44EYIKW7ZC9AHu4Qjjfq4vriAtyTDQ=="],
|
||||
|
||||
"@cspell/dict-en-gb": ["@cspell/dict-en-gb@1.1.33", "", {}, "sha512-tKSSUf9BJEV+GJQAYGw5e+ouhEe2ZXE620S7BLKe3ZmpnjlNG9JqlnaBhkIMxKnNFkLY2BP/EARzw31AZnOv4g=="],
|
||||
|
||||
"@cspell/dict-en_us": ["@cspell/dict-en_us@4.3.33", "", {}, "sha512-HniqQjzPVn24NEkHooBIw1cH+iO3AKMA9oDTwazUYQP1/ldqXsz6ce4+fdHia2nqypmic/lHVkQgIVhP48q/sA=="],
|
||||
"@cspell/dict-en_us": ["@cspell/dict-en_us@4.3.34", "", {}, "sha512-ewJXNV7Nk5vxbGvHvxYLDGoXN0Lq5sfSgX8SAlcYL+2bZ7r25nNOLHou5hdFlNgvviGTx/SFPlVKjdjVJlblgA=="],
|
||||
|
||||
"@cspell/dict-filetypes": ["@cspell/dict-filetypes@3.0.11", "", {}, "sha512-bBtCHZLo7MiSRUqx5KEiPdGOmXIlDGY+L7SJEtRWZENpAKE+96rT7hj+TUUYWBbCzheqHr0OXZJFEKDgsG/uZg=="],
|
||||
|
||||
|
|
@ -121,13 +121,13 @@
|
|||
|
||||
"@cspell/dict-fsharp": ["@cspell/dict-fsharp@1.1.0", "", {}, "sha512-oguWmHhGzgbgbEIBKtgKPrFSVAFtvGHaQS0oj+vacZqMObwkapcTGu7iwf4V3Bc2T3caf0QE6f6rQfIJFIAVsw=="],
|
||||
|
||||
"@cspell/dict-fullstack": ["@cspell/dict-fullstack@3.2.5", "", {}, "sha512-XNmNdovPUS9Vc2JvfBscy8zZfwyxR11sB4fxU2lXh7LzUvOn2/OkKAzj41JTdiWfVnJ/yvsRkspe+b7kr+DIQw=="],
|
||||
"@cspell/dict-fullstack": ["@cspell/dict-fullstack@3.2.6", "", {}, "sha512-cSaq9rz5RIU9j+0jcF2vnKPTQjxGXclntmoNp4XB7yFX2621PxJcekGjwf/lN5heJwVxGLL9toR0CBlGKwQBgA=="],
|
||||
|
||||
"@cspell/dict-gaming-terms": ["@cspell/dict-gaming-terms@1.1.0", "", {}, "sha512-46AnDs9XkgJ2f1Sqol1WgfJ8gOqp60fojpc9Wxch7x+BA63g4JfMV5/M5x0sI0TLlLY8EBSglcr8wQF/7C80AQ=="],
|
||||
|
||||
"@cspell/dict-git": ["@cspell/dict-git@3.0.4", "", {}, "sha512-C44M+m56rYn6QCsLbiKiedyPTMZxlDdEYAsPwwlL5bhMDDzXZ3Ic8OCQIhMbiunhCOJJT+er4URmOmM+sllnjg=="],
|
||||
|
||||
"@cspell/dict-golang": ["@cspell/dict-golang@6.0.18", "", {}, "sha512-Mt+7NwfodDwUk7423DdaQa0YaA+4UoV3XSxQwZioqjpFBCuxfvvv4l80MxCTAAbK6duGj0uHbGTwpv8fyKYPKg=="],
|
||||
"@cspell/dict-golang": ["@cspell/dict-golang@6.0.19", "", {}, "sha512-VS+oinB2/CbgmHE06kMJlj52OVMZM0S2EEXph3oaroNTgTuclSwdFylQmOEjquZi55kW+n3FM9MyWXiitB7Dtg=="],
|
||||
|
||||
"@cspell/dict-google": ["@cspell/dict-google@1.0.8", "", {}, "sha512-BnMHgcEeaLyloPmBs8phCqprI+4r2Jb8rni011A8hE+7FNk7FmLE3kiwxLFrcZnnb7eqM0agW4zUaNoB0P+z8A=="],
|
||||
|
||||
|
|
@ -159,7 +159,7 @@
|
|||
|
||||
"@cspell/dict-node": ["@cspell/dict-node@5.0.6", "", {}, "sha512-CEbhPCpxGvRNByGolSBTrXXW2rJA4bGqZuTx1KKO85mwR6aadeOmUE7xf/8jiCkXSy+qvr9aJeh+jlfXcsrziQ=="],
|
||||
|
||||
"@cspell/dict-npm": ["@cspell/dict-npm@5.1.27", "", {}, "sha512-LGss1yrjhxSmxL4VfMC+UBDMVHfqHudgC7b39M74EVys+nNC4/lqDHacb6Aw7i6aUn9mzdNIkdTTD+LdDcHvPA=="],
|
||||
"@cspell/dict-npm": ["@cspell/dict-npm@5.1.30", "", {}, "sha512-qRMJZFz4FBPECH5rGQN9p2Ld6nfpSaPFQvlG6V2RowWcrJQqF4RFmLUNuRQpvndpSeIUo32yX1hxb7AT45ARCQ=="],
|
||||
|
||||
"@cspell/dict-php": ["@cspell/dict-php@4.0.14", "", {}, "sha512-7zur8pyncYZglxNmqsRycOZ6inpDoVd4yFfz1pQRe5xaRWMiK3Km4n0/X/1YMWhh3e3Sl/fQg5Axb2hlN68t1g=="],
|
||||
|
||||
|
|
@ -167,11 +167,11 @@
|
|||
|
||||
"@cspell/dict-public-licenses": ["@cspell/dict-public-licenses@2.0.13", "", {}, "sha512-1Wdp/XH1ieim7CadXYE7YLnUlW0pULEjVl9WEeziZw3EKCAw8ZI8Ih44m4bEa5VNBLnuP5TfqC4iDautAleQzQ=="],
|
||||
|
||||
"@cspell/dict-python": ["@cspell/dict-python@4.2.15", "", { "dependencies": { "@cspell/dict-data-science": "^2.0.7" } }, "sha512-VNXhj0Eh+hdHN89MgyaoSAexBQKmYtJaMhucbMI7XmBs4pf8fuFFN3xugk51/A4TZJr8+RImdFFsGMOw+I4bDA=="],
|
||||
"@cspell/dict-python": ["@cspell/dict-python@4.2.16", "", { "dependencies": { "@cspell/dict-data-science": "^2.0.7" } }, "sha512-LkQssFt1hPOWXIQiD8ScTkz/41RL7Ti0V/2ytUzEW82dc0atIEksrBg8MuOjWXktp0Dk5tDwRLgmIvhV3CFFOA=="],
|
||||
|
||||
"@cspell/dict-r": ["@cspell/dict-r@2.1.0", "", {}, "sha512-k2512wgGG0lTpTYH9w5Wwco+lAMf3Vz7mhqV8+OnalIE7muA0RSuD9tWBjiqLcX8zPvEJr4LdgxVju8Gk3OKyA=="],
|
||||
|
||||
"@cspell/dict-ruby": ["@cspell/dict-ruby@5.0.7", "", {}, "sha512-4/d0hcoPzi5Alk0FmcyqlzFW9lQnZh9j07MJzPcyVO62nYJJAGKaPZL2o4qHeCS/od/ctJC5AHRdoUm0ktsw6Q=="],
|
||||
"@cspell/dict-ruby": ["@cspell/dict-ruby@5.0.8", "", {}, "sha512-ixuTneU0aH1cPQRbWJvtvOntMFfeQR2KxT8LuAv5jBKqQWIHSxzGlp+zX3SVyoeR0kOWiu64/O5Yn836A5yMcQ=="],
|
||||
|
||||
"@cspell/dict-rust": ["@cspell/dict-rust@4.0.11", "", {}, "sha512-OGWDEEzm8HlkSmtD8fV3pEcO2XBpzG2XYjgMCJCRwb2gRKvR+XIm6Dlhs04N/K2kU+iH8bvrqNpM8fS/BFl0uw=="],
|
||||
|
||||
|
|
@ -187,7 +187,7 @@
|
|||
|
||||
"@cspell/dict-swift": ["@cspell/dict-swift@2.0.5", "", {}, "sha512-3lGzDCwUmnrfckv3Q4eVSW3sK3cHqqHlPprFJZD4nAqt23ot7fic5ALR7J4joHpvDz36nHX34TgcbZNNZOC/JA=="],
|
||||
|
||||
"@cspell/dict-terraform": ["@cspell/dict-terraform@1.1.0", "", {}, "sha512-G55pcUUxeXAhejstmD35B47SkFd4uqCQimc+CMgq8Nx0dr03guL2iMsz8faRWQGkCnGimX8S91rbOhDv9p/heg=="],
|
||||
"@cspell/dict-terraform": ["@cspell/dict-terraform@1.1.1", "", {}, "sha512-07KFDwCU7EnKl4hOZLsLKlj6Zceq/IsQ3LRWUyIjvGFfZHdoGtFdCp3ZPVgnFaAcd/DKv+WVkrOzUBSYqHopQQ=="],
|
||||
|
||||
"@cspell/dict-typescript": ["@cspell/dict-typescript@3.2.0", "", {}, "sha512-Pk3zNePLT8qg51l0M4g1ISowYAEGxTuNfZlgkU5SvHa9Cu7x/BWoyYq9Fvc3kAyoisCjRPyvWF4uRYrPitPDFw=="],
|
||||
|
||||
|
|
@ -213,11 +213,11 @@
|
|||
|
||||
"@dual-bundle/import-meta-resolve": ["@dual-bundle/import-meta-resolve@4.1.0", "", {}, "sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg=="],
|
||||
|
||||
"@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/experimental": ["@effect/experimental@0.43.1", "", { "dependencies": { "msgpackr": "^1.10.2", "uuid": "^11.0.3" }, "peerDependencies": { "@effect/platform": "^0.79.1", "@effect/platform-node": "^0.75.1", "effect": "^3.13.10", "ioredis": "^5", "lmdb": "^3", "ws": "^8" }, "optionalPeers": ["@effect/platform-node", "ioredis", "lmdb", "ws"] }, "sha512-d0PjBA2EYWoroiA161IM7OF4vIsgIlPuVzTdM2sPvsLc0g+U056YQi4qMAWThrnswGzzI7arsIqIn6kMorcyBg=="],
|
||||
|
||||
"@effect/platform": ["@effect/platform@0.79.1", "", { "dependencies": { "find-my-way-ts": "^0.1.5", "multipasta": "^0.2.5" }, "peerDependencies": { "effect": "^3.13.10" } }, "sha512-kCoeBuQrdMuEigcuXk9eDoL9WiFIlLlLZeQZj/LapxC3kgnw/6BViJsRQm+Iqei7Z+zRr930suMpdX75CujCXA=="],
|
||||
|
||||
"@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": ["@effect/sql@0.32.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.25.1", "uuid": "^11.0.3" }, "peerDependencies": { "@effect/experimental": "^0.43.1", "@effect/platform": "^0.79.1", "effect": "^3.13.10" } }, "sha512-dYBfH+q9RlC70lY2gWNzQHHUCjsL8hj+w5f/scIxaenrVZqH1rdMPPS8T8OtoMyh0MU8mD4bkc4bhbd6MPC95Q=="],
|
||||
|
||||
"@effect/sql-drizzle": ["@effect/sql-drizzle@0.31.1", "", { "peerDependencies": { "@effect/sql": "^0.32.1", "drizzle-orm": "^0.31", "effect": "^3.13.10" } }, "sha512-1Ko+BMRwTPxnA/lnVVUFr+4nuCOuZ6WxSRy4rl3wXp9vVbGThFaoKqDl27/eSDrszaLZ/Itlp3ArGlurqV4IpQ=="],
|
||||
|
||||
|
|
@ -259,11 +259,11 @@
|
|||
|
||||
"@esbuild/linux-x64": ["@esbuild/linux-x64@0.19.12", "", { "os": "linux", "cpu": "x64" }, "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg=="],
|
||||
|
||||
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="],
|
||||
"@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.1", "", { "os": "none", "cpu": "arm64" }, "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g=="],
|
||||
|
||||
"@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.19.12", "", { "os": "none", "cpu": "x64" }, "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA=="],
|
||||
|
||||
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="],
|
||||
"@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg=="],
|
||||
|
||||
"@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.19.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw=="],
|
||||
|
||||
|
|
@ -275,7 +275,7 @@
|
|||
|
||||
"@esbuild/win32-x64": ["@esbuild/win32-x64@0.19.12", "", { "os": "win32", "cpu": "x64" }, "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA=="],
|
||||
|
||||
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="],
|
||||
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.5.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w=="],
|
||||
|
||||
"@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="],
|
||||
|
||||
|
|
@ -285,7 +285,9 @@
|
|||
|
||||
"@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/css": ["@eslint/css@0.5.0", "", { "dependencies": { "@eslint/core": "^0.10.0", "@eslint/css-tree": "^3.2.0", "@eslint/plugin-kit": "^0.2.5" } }, "sha512-40n/DbZuJwYe15u64BCck1wU4X67wgvoejiOrc4GKJeFojv2jVZvy7zU2rYADxglCXn/US8SreXSrAsNJDSKFg=="],
|
||||
|
||||
"@eslint/css-tree": ["@eslint/css-tree@3.2.0", "", { "dependencies": { "mdn-data": "^2.18.0", "source-map-js": "^1.0.1" } }, "sha512-GWGIXIhTS+lUgO+L9pydqeDbWtMiYB5o8hRQmUmBM3oaU3VFSL1szgU0joCkNwW2J9m9ZVrb8rrYO+HCtW2/oQ=="],
|
||||
|
||||
"@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=="],
|
||||
|
||||
|
|
@ -327,45 +329,45 @@
|
|||
|
||||
"@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.30.0", "", {}, "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw=="],
|
||||
|
||||
"@petamoriken/float16": ["@petamoriken/float16@3.9.1", "", {}, "sha512-j+ejhYwY6PeB+v1kn7lZFACUIG97u90WxMuGosILFsl9d4Ovi0sjk0GlPfoEcx+FzvXZDAfioD+NGnnPamXgMA=="],
|
||||
"@petamoriken/float16": ["@petamoriken/float16@3.9.2", "", {}, "sha512-VgffxawQde93xKxT3qap3OH+meZf7VaSB5Sqd4Rqc+FP5alWbpOyan/7tRbOAvynjpG3GpdtAuGU/NdhQpmrog=="],
|
||||
|
||||
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.34.8", "", { "os": "android", "cpu": "arm" }, "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw=="],
|
||||
"@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.35.0", "", { "os": "android", "cpu": "arm" }, "sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ=="],
|
||||
|
||||
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.34.8", "", { "os": "android", "cpu": "arm64" }, "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q=="],
|
||||
"@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.35.0", "", { "os": "android", "cpu": "arm64" }, "sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA=="],
|
||||
|
||||
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.34.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q=="],
|
||||
"@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.35.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q=="],
|
||||
|
||||
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.34.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw=="],
|
||||
"@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.35.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q=="],
|
||||
|
||||
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.34.8", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA=="],
|
||||
"@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.35.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ=="],
|
||||
|
||||
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.34.8", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q=="],
|
||||
"@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.35.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw=="],
|
||||
|
||||
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.34.8", "", { "os": "linux", "cpu": "arm" }, "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g=="],
|
||||
"@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.35.0", "", { "os": "linux", "cpu": "arm" }, "sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg=="],
|
||||
|
||||
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.34.8", "", { "os": "linux", "cpu": "arm" }, "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA=="],
|
||||
"@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.35.0", "", { "os": "linux", "cpu": "arm" }, "sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A=="],
|
||||
|
||||
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.34.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A=="],
|
||||
"@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.35.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A=="],
|
||||
|
||||
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.34.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q=="],
|
||||
"@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.35.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg=="],
|
||||
|
||||
"@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.34.8", "", { "os": "linux", "cpu": "none" }, "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ=="],
|
||||
"@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.35.0", "", { "os": "linux", "cpu": "none" }, "sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g=="],
|
||||
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.34.8", "", { "os": "linux", "cpu": "ppc64" }, "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw=="],
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.35.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA=="],
|
||||
|
||||
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.34.8", "", { "os": "linux", "cpu": "none" }, "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw=="],
|
||||
"@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.35.0", "", { "os": "linux", "cpu": "none" }, "sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g=="],
|
||||
|
||||
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.34.8", "", { "os": "linux", "cpu": "s390x" }, "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA=="],
|
||||
"@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.35.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw=="],
|
||||
|
||||
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.34.8", "", { "os": "linux", "cpu": "x64" }, "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA=="],
|
||||
"@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.35.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA=="],
|
||||
|
||||
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.34.8", "", { "os": "linux", "cpu": "x64" }, "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ=="],
|
||||
"@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.35.0", "", { "os": "linux", "cpu": "x64" }, "sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg=="],
|
||||
|
||||
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.34.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ=="],
|
||||
"@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.35.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg=="],
|
||||
|
||||
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.34.8", "", { "os": "win32", "cpu": "ia32" }, "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w=="],
|
||||
"@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.35.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw=="],
|
||||
|
||||
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.34.8", "", { "os": "win32", "cpu": "x64" }, "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g=="],
|
||||
"@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.35.0", "", { "os": "win32", "cpu": "x64" }, "sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw=="],
|
||||
|
||||
"@snyk/github-codeowners": ["@snyk/github-codeowners@1.1.0", "", { "dependencies": { "commander": "^4.1.1", "ignore": "^5.1.8", "p-map": "^4.0.0" }, "bin": { "github-codeowners": "dist/cli.js" } }, "sha512-lGFf08pbkEac0NYgVf4hdANpAgApRjNByLXB+WBip3qj1iendOIyAwP2GKkKbQMNVy2r1xxDf0ssfWscoiC+Vw=="],
|
||||
|
||||
|
|
@ -429,25 +431,25 @@
|
|||
|
||||
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
||||
|
||||
"@types/node": ["@types/node@22.13.5", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg=="],
|
||||
"@types/node": ["@types/node@22.13.10", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.26.1", "@typescript-eslint/type-utils": "8.26.1", "@typescript-eslint/utils": "8.26.1", "@typescript-eslint/visitor-keys": "8.26.1", "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-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.26.1", "@typescript-eslint/types": "8.26.1", "@typescript-eslint/typescript-estree": "8.26.1", "@typescript-eslint/visitor-keys": "8.26.1", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@typescript-eslint/types": "8.26.1", "@typescript-eslint/visitor-keys": "8.26.1" } }, "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.26.1", "@typescript-eslint/utils": "8.26.1", "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-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg=="],
|
||||
|
||||
"@typescript-eslint/types": ["@typescript-eslint/types@8.26.0", "", {}, "sha512-89B1eP3tnpr9A8L6PZlSjBvnJhWXtYfZhECqlBl1D9Lme9mHO6iWlsprBtVenQvY1HMhax1mWOjhtL3fh/u+pA=="],
|
||||
"@typescript-eslint/types": ["@typescript-eslint/types@8.26.1", "", {}, "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@typescript-eslint/types": "8.26.1", "@typescript-eslint/visitor-keys": "8.26.1", "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-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "8.26.1", "@typescript-eslint/types": "8.26.1", "@typescript-eslint/typescript-estree": "8.26.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg=="],
|
||||
|
||||
"@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.26.1", "", { "dependencies": { "@typescript-eslint/types": "8.26.1", "eslint-visitor-keys": "^4.2.0" } }, "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg=="],
|
||||
|
||||
"@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="],
|
||||
|
||||
|
|
@ -455,11 +457,11 @@
|
|||
|
||||
"@vitejs/plugin-vue": ["@vitejs/plugin-vue@5.2.1", "", { "peerDependencies": { "vite": "^5.0.0 || ^6.0.0", "vue": "^3.2.25" } }, "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ=="],
|
||||
|
||||
"@volar/language-core": ["@volar/language-core@2.4.11", "", { "dependencies": { "@volar/source-map": "2.4.11" } }, "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg=="],
|
||||
"@volar/language-core": ["@volar/language-core@2.4.12", "", { "dependencies": { "@volar/source-map": "2.4.12" } }, "sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA=="],
|
||||
|
||||
"@volar/source-map": ["@volar/source-map@2.4.11", "", {}, "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ=="],
|
||||
"@volar/source-map": ["@volar/source-map@2.4.12", "", {}, "sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw=="],
|
||||
|
||||
"@volar/typescript": ["@volar/typescript@2.4.11", "", { "dependencies": { "@volar/language-core": "2.4.11", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw=="],
|
||||
"@volar/typescript": ["@volar/typescript@2.4.12", "", { "dependencies": { "@volar/language-core": "2.4.12", "path-browserify": "^1.0.1", "vscode-uri": "^3.0.8" } }, "sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g=="],
|
||||
|
||||
"@vue/compiler-core": ["@vue/compiler-core@3.5.13", "", { "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.0" } }, "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q=="],
|
||||
|
||||
|
|
@ -497,7 +499,7 @@
|
|||
|
||||
"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=="],
|
||||
"acorn": ["acorn@8.14.1", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg=="],
|
||||
|
||||
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
|
||||
|
||||
|
|
@ -539,11 +541,11 @@
|
|||
|
||||
"bun-types": ["bun-types@1.2.5", "", { "dependencies": { "@types/node": "*", "@types/ws": "~8.5.10" } }, "sha512-3oO6LVGGRRKI4kHINx5PIdIgnLRb7l/SprhzqXapmoYkFl5m4j6EvALvbDVuuBFaamB46Ap6HCUxIXNLCGy+tg=="],
|
||||
|
||||
"cacheable": ["cacheable@1.8.8", "", { "dependencies": { "hookified": "^1.7.0", "keyv": "^5.2.3" } }, "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw=="],
|
||||
"cacheable": ["cacheable@1.8.9", "", { "dependencies": { "hookified": "^1.7.1", "keyv": "^5.3.1" } }, "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ=="],
|
||||
|
||||
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
|
||||
|
||||
"caniuse-lite": ["caniuse-lite@1.0.30001701", "", {}, "sha512-faRs/AW3jA9nTwmJBSO1PQ6L/EOgsB5HMQQq4iCu5zhPgVVgO/pZRHlmatwijZKetFw8/Pr4q6dEN8sJuq8qTw=="],
|
||||
"caniuse-lite": ["caniuse-lite@1.0.30001704", "", {}, "sha512-+L2IgBbV6gXB4ETf0keSvLr7JUrRVbIaB/lrQ1+z8mRcQiisG5k+lG6O4n6Y5q6f5EuNfaYXKgymucphlEXQew=="],
|
||||
|
||||
"chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="],
|
||||
|
||||
|
|
@ -631,7 +633,7 @@
|
|||
|
||||
"effect": ["effect@3.13.10", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-f2n51BJJ25G9rb/C1ClkgsVFXH6YTkCHmd6ebpu6cAkwQxfhnfbkVWKgkn3nyW9YnC9z4K8bGohRYaZ+HyWtLg=="],
|
||||
|
||||
"electron-to-chromium": ["electron-to-chromium@1.5.109", "", {}, "sha512-AidaH9JETVRr9DIPGfp1kAarm/W6hRJTPuCnkF+2MqhF4KaAgRIcBc8nvjk+YMXZhwfISof/7WG29eS4iGxQLQ=="],
|
||||
"electron-to-chromium": ["electron-to-chromium@1.5.116", "", {}, "sha512-mufxTCJzLBQVvSdZzX1s5YAuXsN1M4tTyYxOOL1TcSKtIzQ9rjIrm7yFK80rN5dwGTePgdoABDSHpuVtRQh0Zw=="],
|
||||
|
||||
"emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
|
||||
|
||||
|
|
@ -703,7 +705,7 @@
|
|||
|
||||
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
|
||||
|
||||
"find-up-simple": ["find-up-simple@1.0.0", "", {}, "sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw=="],
|
||||
"find-up-simple": ["find-up-simple@1.0.1", "", {}, "sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ=="],
|
||||
|
||||
"flat-cache": ["flat-cache@5.0.0", "", { "dependencies": { "flatted": "^3.3.1", "keyv": "^4.5.4" } }, "sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ=="],
|
||||
|
||||
|
|
@ -715,7 +717,7 @@
|
|||
|
||||
"gc-hook": ["gc-hook@0.3.1", "", {}, "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A=="],
|
||||
|
||||
"gel": ["gel@2.0.0", "", { "dependencies": { "@petamoriken/float16": "^3.8.7", "debug": "^4.3.4", "env-paths": "^3.0.0", "semver": "^7.6.2", "shell-quote": "^1.8.1", "which": "^4.0.0" }, "bin": { "gel": "dist/cli.mjs" } }, "sha512-Oq3Fjay71s00xzDc0BF/mpcLmnA+uRqMEJK8p5K4PaZjUEsxaeo+kR9OHBVAf289/qPd+0OcLOLUN0UhqiUCog=="],
|
||||
"gel": ["gel@2.0.1", "", { "dependencies": { "@petamoriken/float16": "^3.8.7", "debug": "^4.3.4", "env-paths": "^3.0.0", "semver": "^7.6.2", "shell-quote": "^1.8.1", "which": "^4.0.0" }, "bin": { "gel": "dist/cli.mjs" } }, "sha512-gfem3IGvqKqXwEq7XseBogyaRwGsQGuE7Cw/yQsjLGdgiyqX92G1xENPCE0ltunPGcsJIa6XBOTx/PK169mOqw=="],
|
||||
|
||||
"gensequence": ["gensequence@7.0.0", "", {}, "sha512-47Frx13aZh01afHJTB3zTtKIlFI6vWY+MYCN9Qpew6i52rfKjnhCF/l1YlC8UmEMvvntZZ6z4PiCcmyuedR2aQ=="],
|
||||
|
||||
|
|
@ -803,33 +805,33 @@
|
|||
|
||||
"kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="],
|
||||
|
||||
"knip": ["knip@5.45.0", "", { "dependencies": { "@nodelib/fs.walk": "3.0.1", "@snyk/github-codeowners": "1.1.0", "easy-table": "1.2.0", "enhanced-resolve": "^5.18.0", "fast-glob": "^3.3.3", "jiti": "^2.4.2", "js-yaml": "^4.1.0", "minimist": "^1.2.8", "picocolors": "^1.1.0", "picomatch": "^4.0.1", "pretty-ms": "^9.0.0", "smol-toml": "^1.3.1", "strip-json-comments": "5.0.1", "summary": "2.1.0", "zod": "^3.22.4", "zod-validation-error": "^3.0.3" }, "peerDependencies": { "@types/node": ">=18", "typescript": ">=5.0.4" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-OUyO9FUEVCM6/j0gl+PP/LDeJEs4hIdE8n4vK4xrtjN1g3Qu4Ws1oexbWTCJ+8xt8Tgse4Yvhx96OqF/UVl3Ug=="],
|
||||
"knip": ["knip@5.46.0", "", { "dependencies": { "@nodelib/fs.walk": "3.0.1", "@snyk/github-codeowners": "1.1.0", "easy-table": "1.2.0", "enhanced-resolve": "^5.18.0", "fast-glob": "^3.3.3", "jiti": "^2.4.2", "js-yaml": "^4.1.0", "minimist": "^1.2.8", "picocolors": "^1.1.0", "picomatch": "^4.0.1", "pretty-ms": "^9.0.0", "smol-toml": "^1.3.1", "strip-json-comments": "5.0.1", "summary": "2.1.0", "zod": "^3.22.4", "zod-validation-error": "^3.0.3" }, "peerDependencies": { "@types/node": ">=18", "typescript": ">=5.0.4" }, "bin": { "knip": "bin/knip.js", "knip-bun": "bin/knip-bun.js" } }, "sha512-WedHSK5xNBWYgm64Rt5B9b0CVXL2kRBcyCeet3NHgdv9en3QE4AWSDPEiX48NoPUBW3h//9S0VwLF5MG/MPi3g=="],
|
||||
|
||||
"known-css-properties": ["known-css-properties@0.35.0", "", {}, "sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A=="],
|
||||
|
||||
"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.3", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.29.3", "lightningcss-darwin-x64": "1.29.3", "lightningcss-freebsd-x64": "1.29.3", "lightningcss-linux-arm-gnueabihf": "1.29.3", "lightningcss-linux-arm64-gnu": "1.29.3", "lightningcss-linux-arm64-musl": "1.29.3", "lightningcss-linux-x64-gnu": "1.29.3", "lightningcss-linux-x64-musl": "1.29.3", "lightningcss-win32-arm64-msvc": "1.29.3", "lightningcss-win32-x64-msvc": "1.29.3" } }, "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ=="],
|
||||
|
||||
"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.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg=="],
|
||||
|
||||
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w=="],
|
||||
"lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.29.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ=="],
|
||||
|
||||
"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.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw=="],
|
||||
|
||||
"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.3", "", { "os": "linux", "cpu": "arm" }, "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg=="],
|
||||
|
||||
"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.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw=="],
|
||||
|
||||
"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.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A=="],
|
||||
|
||||
"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.3", "", { "os": "linux", "cpu": "x64" }, "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg=="],
|
||||
|
||||
"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.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ=="],
|
||||
|
||||
"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.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ=="],
|
||||
|
||||
"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.3", "", { "os": "win32", "cpu": "x64" }, "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ=="],
|
||||
|
||||
"lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
|
||||
|
||||
|
|
@ -845,7 +847,7 @@
|
|||
|
||||
"mathml-tag-names": ["mathml-tag-names@2.1.3", "", {}, "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg=="],
|
||||
|
||||
"mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
|
||||
"mdn-data": ["mdn-data@2.18.0", "", {}, "sha512-gtCy1yim/vpHF/tq3B4Z43x3zKWpYeb4IM3d/Mf4oMYcNuoXOYEaqtoFlLHw9zd7+WNN3jNh6/WXyUrD3OIiwQ=="],
|
||||
|
||||
"meow": ["meow@13.2.0", "", {}, "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA=="],
|
||||
|
||||
|
|
@ -873,7 +875,7 @@
|
|||
|
||||
"mvdan-sh": ["mvdan-sh@0.10.1", "", {}, "sha512-kMbrH0EObaKmK3nVRKUIIya1dpASHIEusM13S4V1ViHFuxuNxCo+arxoa6j/dbV22YBGjl7UKJm9QQKJ2Crzhg=="],
|
||||
|
||||
"nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="],
|
||||
"nanoid": ["nanoid@3.3.9", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg=="],
|
||||
|
||||
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
|
||||
|
||||
|
|
@ -961,7 +963,7 @@
|
|||
|
||||
"rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="],
|
||||
|
||||
"rollup": ["rollup@4.34.8", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.34.8", "@rollup/rollup-android-arm64": "4.34.8", "@rollup/rollup-darwin-arm64": "4.34.8", "@rollup/rollup-darwin-x64": "4.34.8", "@rollup/rollup-freebsd-arm64": "4.34.8", "@rollup/rollup-freebsd-x64": "4.34.8", "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", "@rollup/rollup-linux-arm-musleabihf": "4.34.8", "@rollup/rollup-linux-arm64-gnu": "4.34.8", "@rollup/rollup-linux-arm64-musl": "4.34.8", "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", "@rollup/rollup-linux-riscv64-gnu": "4.34.8", "@rollup/rollup-linux-s390x-gnu": "4.34.8", "@rollup/rollup-linux-x64-gnu": "4.34.8", "@rollup/rollup-linux-x64-musl": "4.34.8", "@rollup/rollup-win32-arm64-msvc": "4.34.8", "@rollup/rollup-win32-ia32-msvc": "4.34.8", "@rollup/rollup-win32-x64-msvc": "4.34.8", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ=="],
|
||||
"rollup": ["rollup@4.35.0", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.35.0", "@rollup/rollup-android-arm64": "4.35.0", "@rollup/rollup-darwin-arm64": "4.35.0", "@rollup/rollup-darwin-x64": "4.35.0", "@rollup/rollup-freebsd-arm64": "4.35.0", "@rollup/rollup-freebsd-x64": "4.35.0", "@rollup/rollup-linux-arm-gnueabihf": "4.35.0", "@rollup/rollup-linux-arm-musleabihf": "4.35.0", "@rollup/rollup-linux-arm64-gnu": "4.35.0", "@rollup/rollup-linux-arm64-musl": "4.35.0", "@rollup/rollup-linux-loongarch64-gnu": "4.35.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.35.0", "@rollup/rollup-linux-riscv64-gnu": "4.35.0", "@rollup/rollup-linux-s390x-gnu": "4.35.0", "@rollup/rollup-linux-x64-gnu": "4.35.0", "@rollup/rollup-linux-x64-musl": "4.35.0", "@rollup/rollup-win32-arm64-msvc": "4.35.0", "@rollup/rollup-win32-ia32-msvc": "4.35.0", "@rollup/rollup-win32-x64-msvc": "4.35.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg=="],
|
||||
|
||||
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
|
||||
|
||||
|
|
@ -999,7 +1001,7 @@
|
|||
|
||||
"strip-json-comments": ["strip-json-comments@5.0.1", "", {}, "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw=="],
|
||||
|
||||
"stylelint": ["stylelint@16.15.0", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2", "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.3.7", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^10.0.6", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", "ignore": "^7.0.3", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw=="],
|
||||
"stylelint": ["stylelint@16.16.0", "", { "dependencies": { "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2", "@csstools/selector-specificity": "^5.0.0", "@dual-bundle/import-meta-resolve": "^4.1.0", "balanced-match": "^2.0.0", "colord": "^2.9.3", "cosmiconfig": "^9.0.0", "css-functions-list": "^3.2.3", "css-tree": "^3.1.0", "debug": "^4.3.7", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", "file-entry-cache": "^10.0.7", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", "html-tags": "^3.3.1", "ignore": "^7.0.3", "imurmurhash": "^0.1.4", "is-plain-object": "^5.0.0", "known-css-properties": "^0.35.0", "mathml-tag-names": "^2.1.3", "meow": "^13.2.0", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.5.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" }, "bin": { "stylelint": "bin/stylelint.mjs" } }, "sha512-40X5UOb/0CEFnZVEHyN260HlSSUxPES+arrUphOumGWgXERHfwCD0kNBVILgQSij8iliYVwlc0V7M5bcLP9vPg=="],
|
||||
|
||||
"stylelint-config-clean-order": ["stylelint-config-clean-order@7.0.0", "", { "dependencies": { "stylelint-order": "^6.0.4" }, "peerDependencies": { "stylelint": ">=14" } }, "sha512-R28w1xNliIbem3o+VIrNjAU8cMgxrGlDoXVqWW7lJ1OvSDsmNGj5aKSW6Xm7i5PK4E99T3Hs19BJFni5IbE56g=="],
|
||||
|
||||
|
|
@ -1015,7 +1017,7 @@
|
|||
|
||||
"stylelint-order": ["stylelint-order@6.0.4", "", { "dependencies": { "postcss": "^8.4.32", "postcss-sorting": "^8.0.2" }, "peerDependencies": { "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.1" } }, "sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA=="],
|
||||
|
||||
"stylelint-plugin-logical-css": ["stylelint-plugin-logical-css@1.2.1", "", { "peerDependencies": { "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, "sha512-56r1xGVZ/ExZT5SFJ7AhyZVUjOvRTCbLLl68PFTN1R55KU0SQEe22YyE53570cxeTf9plpvqckHAQBiUU714YQ=="],
|
||||
"stylelint-plugin-logical-css": ["stylelint-plugin-logical-css@1.2.2", "", { "peerDependencies": { "stylelint": "^14.0.0 || ^15.0.0 || ^16.0.0" } }, "sha512-UYtMSKBMTUytlhFwoYzwIK6Tzq0qD9Kt43wWuo9uUtRc1wAfpVGZxO7SY8t9wcZudW8lPbv6zGhZAC7KgisctQ=="],
|
||||
|
||||
"summary": ["summary@2.1.0", "", {}, "sha512-nMIjMrd5Z2nuB2RZCKJfFMjgS3fygbeyGk9PxPPaJR1RIcyN9yn4A63Isovzm3ZtQuEkLBVgMdPup8UeLH7aQw=="],
|
||||
|
||||
|
|
@ -1045,7 +1047,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.26.1", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.26.1", "@typescript-eslint/parser": "8.26.1", "@typescript-eslint/utils": "8.26.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <5.9.0" } }, "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg=="],
|
||||
|
||||
"undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="],
|
||||
|
||||
|
|
@ -1057,7 +1059,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.2", "", { "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-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ=="],
|
||||
|
||||
"vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="],
|
||||
|
||||
|
|
@ -1103,8 +1105,6 @@
|
|||
|
||||
"@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
|
||||
|
||||
"@eslint/css/@types/css-tree": ["@types/css-tree@file:./typings/css-tree", {}],
|
||||
|
||||
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
|
||||
|
||||
"@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
|
||||
|
|
@ -1123,12 +1123,14 @@
|
|||
|
||||
"brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||
|
||||
"cacheable/keyv": ["keyv@5.2.3", "", { "dependencies": { "@keyv/serialize": "^1.0.2" } }, "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw=="],
|
||||
"cacheable/keyv": ["keyv@5.3.1", "", { "dependencies": { "@keyv/serialize": "^1.0.3" } }, "sha512-13hQT2q2VIwOoaJdJa7nY3J8UVbYtMTJFHnwm9LI+SaQRfUiM6Em9KZeOVTCKbMnGcRIL3NSUFpAdjZCq24nLQ=="],
|
||||
|
||||
"cosmiconfig/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="],
|
||||
|
||||
"cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
||||
|
||||
"css-tree/mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="],
|
||||
|
||||
"eslint/@eslint/core": ["@eslint/core@0.12.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg=="],
|
||||
|
||||
"eslint/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
||||
|
|
@ -1151,7 +1153,7 @@
|
|||
|
||||
"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=="],
|
||||
"stylelint/file-entry-cache": ["file-entry-cache@10.0.7", "", { "dependencies": { "flat-cache": "^6.1.7" } }, "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw=="],
|
||||
|
||||
"stylelint/ignore": ["ignore@7.0.3", "", {}, "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA=="],
|
||||
|
||||
|
|
@ -1159,9 +1161,7 @@
|
|||
|
||||
"table/ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="],
|
||||
|
||||
"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=="],
|
||||
"vite/esbuild": ["esbuild@0.25.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.1", "@esbuild/android-arm": "0.25.1", "@esbuild/android-arm64": "0.25.1", "@esbuild/android-x64": "0.25.1", "@esbuild/darwin-arm64": "0.25.1", "@esbuild/darwin-x64": "0.25.1", "@esbuild/freebsd-arm64": "0.25.1", "@esbuild/freebsd-x64": "0.25.1", "@esbuild/linux-arm": "0.25.1", "@esbuild/linux-arm64": "0.25.1", "@esbuild/linux-ia32": "0.25.1", "@esbuild/linux-loong64": "0.25.1", "@esbuild/linux-mips64el": "0.25.1", "@esbuild/linux-ppc64": "0.25.1", "@esbuild/linux-riscv64": "0.25.1", "@esbuild/linux-s390x": "0.25.1", "@esbuild/linux-x64": "0.25.1", "@esbuild/netbsd-arm64": "0.25.1", "@esbuild/netbsd-x64": "0.25.1", "@esbuild/openbsd-arm64": "0.25.1", "@esbuild/openbsd-x64": "0.25.1", "@esbuild/sunos-x64": "0.25.1", "@esbuild/win32-arm64": "0.25.1", "@esbuild/win32-ia32": "0.25.1", "@esbuild/win32-x64": "0.25.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ=="],
|
||||
|
||||
"vue-router/@vue/devtools-api": ["@vue/devtools-api@6.6.4", "", {}, "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g=="],
|
||||
|
||||
|
|
@ -1221,55 +1221,55 @@
|
|||
|
||||
"global-prefix/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
||||
|
||||
"stylelint/file-entry-cache/flat-cache": ["flat-cache@6.1.6", "", { "dependencies": { "cacheable": "^1.8.8", "flatted": "^3.3.2", "hookified": "^1.7.0" } }, "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ=="],
|
||||
"stylelint/file-entry-cache/flat-cache": ["flat-cache@6.1.7", "", { "dependencies": { "cacheable": "^1.8.9", "flatted": "^3.3.3", "hookified": "^1.7.1" } }, "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew=="],
|
||||
|
||||
"table/ajv/json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="],
|
||||
|
||||
"vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="],
|
||||
"vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="],
|
||||
"vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.1", "", { "os": "android", "cpu": "arm" }, "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q=="],
|
||||
|
||||
"vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="],
|
||||
"vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.1", "", { "os": "android", "cpu": "arm64" }, "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA=="],
|
||||
|
||||
"vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="],
|
||||
"vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.1", "", { "os": "android", "cpu": "x64" }, "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw=="],
|
||||
|
||||
"vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="],
|
||||
"vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="],
|
||||
"vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA=="],
|
||||
|
||||
"vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="],
|
||||
"vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A=="],
|
||||
|
||||
"vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="],
|
||||
"vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="],
|
||||
"vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.1", "", { "os": "linux", "cpu": "arm" }, "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="],
|
||||
"vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="],
|
||||
"vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="],
|
||||
"vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.1", "", { "os": "linux", "cpu": "none" }, "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="],
|
||||
"vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.1", "", { "os": "linux", "cpu": "none" }, "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="],
|
||||
"vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="],
|
||||
"vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.1", "", { "os": "linux", "cpu": "none" }, "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="],
|
||||
"vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="],
|
||||
"vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.1", "", { "os": "linux", "cpu": "x64" }, "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA=="],
|
||||
|
||||
"vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="],
|
||||
"vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.1", "", { "os": "none", "cpu": "x64" }, "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA=="],
|
||||
|
||||
"vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="],
|
||||
"vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw=="],
|
||||
|
||||
"vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="],
|
||||
"vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg=="],
|
||||
|
||||
"vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="],
|
||||
"vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ=="],
|
||||
|
||||
"vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="],
|
||||
"vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A=="],
|
||||
|
||||
"vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="],
|
||||
"vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.1", "", { "os": "win32", "cpu": "x64" }, "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg=="],
|
||||
|
||||
"@typescript-eslint/typescript-estree/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
|
||||
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
"currentcolor",
|
||||
"labelledby",
|
||||
"imdb",
|
||||
"xstate"
|
||||
"xstate",
|
||||
"ARGB"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
12
package.json
12
package.json
|
|
@ -21,7 +21,7 @@
|
|||
},
|
||||
"devDependencies": {
|
||||
"@cspell/dict-fr-fr": "^2.2.5",
|
||||
"@eslint/css": "^0.4.0",
|
||||
"@eslint/css": "^0.5.0",
|
||||
"@types/bun": "^1.2.5",
|
||||
"@vitejs/plugin-vue": "^5.2.1",
|
||||
"@vue/eslint-config-typescript": "^14.5.0",
|
||||
|
|
@ -34,20 +34,20 @@
|
|||
"eslint-plugin-vue": "^10.0.0",
|
||||
"globals": "^16.0.0",
|
||||
"jiti": "^2.4.2",
|
||||
"knip": "^5.45.0",
|
||||
"lightningcss": "^1.29.2",
|
||||
"knip": "^5.46.0",
|
||||
"lightningcss": "^1.29.3",
|
||||
"prettier": "^3.5.3",
|
||||
"prettier-plugin-pkg": "^0.18.1",
|
||||
"prettier-plugin-sh": "^0.15.0",
|
||||
"stylelint": "^16.15.0",
|
||||
"stylelint": "^16.16.0",
|
||||
"stylelint-config-clean-order": "^7.0.0",
|
||||
"stylelint-config-recommended-vue": "^1.6.0",
|
||||
"stylelint-config-standard": "^37.0.0",
|
||||
"stylelint-declaration-block-no-ignored-properties": "^2.8.0",
|
||||
"stylelint-plugin-logical-css": "^1.2.1",
|
||||
"stylelint-plugin-logical-css": "^1.2.2",
|
||||
"tsr": "^1.3.4",
|
||||
"typescript": "^5.8.2",
|
||||
"vite": "^6.2.1",
|
||||
"vite": "^6.2.2",
|
||||
"vue-tsc": "^2.2.8"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import "@/styles/main.css";
|
||||
import SidebarView from "@/views/SidebarView.vue";
|
||||
import { RouterView } from "vue-router";
|
||||
|
||||
import MainHeader from "./components/MainHeader.vue";
|
||||
|
|
@ -20,8 +19,6 @@
|
|||
-->
|
||||
<RouterView></RouterView>
|
||||
</main>
|
||||
|
||||
<SidebarView></SidebarView>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,27 @@
|
|||
<script setup lang="ts">
|
||||
import NavigationMenu from "./NavigationMenu.vue";
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<header class="">
|
||||
<h1 class="invert">Journal Média</h1>
|
||||
<NavigationMenu></NavigationMenu>
|
||||
</header>
|
||||
</template>
|
||||
|
||||
<style lang="css" scoped>
|
||||
header > h1 {
|
||||
padding: var(--s-2);
|
||||
header {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
gap: var(--s2);
|
||||
align-items: baseline;
|
||||
|
||||
> h1 {
|
||||
padding: var(--s-2);
|
||||
}
|
||||
|
||||
nav {
|
||||
flex-grow: 1;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -3,12 +3,19 @@
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<aside class="box sidebar">
|
||||
<nav id="primary-navigation">
|
||||
<ul>
|
||||
<li><RouterLink to="/">Accueil</RouterLink></li>
|
||||
<li><RouterLink to="/search">Recherche</RouterLink></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
<nav id="primary-navigation">
|
||||
<ul>
|
||||
<li><RouterLink to="/">Accueil</RouterLink></li>
|
||||
<li><RouterLink to="/search">Recherche</RouterLink></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<style lang="css" scoped>
|
||||
ul {
|
||||
display: flex;
|
||||
flex-flow: row wrap;
|
||||
gap: var(--s0);
|
||||
justify-content: end;
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script setup lang="ts">
|
||||
import type { MergedTmdbLocalData } from "@/libs/search/schemas.ts";
|
||||
import type { MergedTmdbDataDiaryEntry } from "@/libs/search/schemas.ts";
|
||||
import type { AriaSortValues } from "@/libs/search/types.ts";
|
||||
import type { Values } from "@/libs/utils/types.ts";
|
||||
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
import { computed, ref } from "vue";
|
||||
|
||||
const emit = defineEmits<(e: "entry-dialog-wanted", tmdbId: number) => void>();
|
||||
const { searchData } = defineProps<{ searchData: Map<number, MergedTmdbLocalData> }>();
|
||||
const { searchData } = defineProps<{ searchData: Map<number, MergedTmdbDataDiaryEntry> }>();
|
||||
const sort = ref<TmdbSortData>({
|
||||
sortOrder: ARIA_SORT_VALUES.NONE,
|
||||
sortValue: TMDB_SORT_VALUES.ORIGINAL,
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
const sortedData = computed(() =>
|
||||
pipe(
|
||||
Array.from(searchData.entries()),
|
||||
(result: [number, MergedTmdbLocalData][]) => Arr.sort(result, getTmdbSortFunction(sort.value)),
|
||||
(result: [number, MergedTmdbDataDiaryEntry][]) => Arr.sort(result, getTmdbSortFunction(sort.value)),
|
||||
)
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,22 @@
|
|||
<script setup lang="ts">
|
||||
import type { TmdbMovieDetailsQueryParams, TmdbMovieDetailsWithCreditsResponse } from "@/libs/apis/tmdb/schemas";
|
||||
import type { MovieMainCrew, TmdbCredit } from "@/libs/apis/tmdb/schemas/credits";
|
||||
import type { MovieMainCrew } from "@/libs/apis/tmdb/schemas/credits";
|
||||
import type { ArtWorkTitle } from "@/libs/apis/tmdb/schemas/works";
|
||||
import type { MergedTmdbLocalData } from "@/libs/search/schemas";
|
||||
import type { MergedTmdbDataDiaryEntry } from "@/libs/search/schemas";
|
||||
import type { Ref, ShallowRef } from "vue";
|
||||
|
||||
import ImposterBox from "@/components/dialogs/ImposterBox.vue";
|
||||
import LoadingBox from "@/components/loading/LoadingBox.vue";
|
||||
import { DIRECTING_MAIN_JOBS, EDITING_MAIN_JOBS, WRITING_MAIN_JOBS } from "@/libs/apis/tmdb/schemas/jobs";
|
||||
import { getMainMovieCrew } from "@/libs/apis/tmdb/crew";
|
||||
import { generateDitheredBufferFromUrl } from "@/libs/utils/images";
|
||||
import { Images } from "@/services/images.ts";
|
||||
import { PrettyLogger } from "@/services/logger";
|
||||
import { RuntimeClient } from "@/services/runtime-client";
|
||||
import { TmdbApi } from "@/services/tmdb-api";
|
||||
import { useEntryStore } from "@/stores/entry.ts";
|
||||
import { Url } from "@effect/platform";
|
||||
import { Array as Arr, Effect, Match, pipe } from "effect";
|
||||
import { canvasFromPixelBuffer } from "@thi.ng/pixel";
|
||||
import { Effect, pipe } from "effect";
|
||||
import { isNotNull } from "effect/Predicate";
|
||||
import { ref, useTemplateRef, watch } from "vue";
|
||||
|
||||
|
|
@ -33,7 +35,7 @@
|
|||
|
||||
// Émissions et props
|
||||
const emit = defineEmits(["dialog-hidden"]);
|
||||
const { entryData } = defineProps<{ entryData: MergedTmdbLocalData }>();
|
||||
const { entryData } = defineProps<{ entryData: MergedTmdbDataDiaryEntry }>();
|
||||
|
||||
const tmdbDetails: Ref<TmdbMovieDetailsWithCreditsResponse | undefined> = ref<
|
||||
TmdbMovieDetailsWithCreditsResponse
|
||||
|
|
@ -60,16 +62,16 @@
|
|||
// Récupère le poster avec tramage.
|
||||
await RuntimeClient.runPromise(Effect.gen(function*() {
|
||||
if (!entryData.posterUrl) return undefined;
|
||||
const imageService: Images = yield* Images;
|
||||
|
||||
const canvas = yield* pipe(
|
||||
Url.fromString(`https://image.tmdb.org/t/p/w500/${entryData.posterUrl}`),
|
||||
Effect.andThen((url: URL) => imageService.imageFromUrl(url)),
|
||||
Effect.andThen((img: HTMLImageElement) => imageService.ditherImage(img, imageContainer.value ?? undefined)),
|
||||
Effect.andThen(dithered => dithered.canvas),
|
||||
yield* pipe(
|
||||
generateDitheredBufferFromUrl(`https://image.tmdb.org/t/p/w500${entryData.posterUrl}`),
|
||||
Effect.tapError(Effect.logError),
|
||||
Effect.tap(ditheredBuffer => {
|
||||
const canvas = canvasFromPixelBuffer(ditheredBuffer, imageContainer.value, { pixelated: true });
|
||||
ditheredPoster.value = canvas;
|
||||
}),
|
||||
Effect.provide(PrettyLogger),
|
||||
);
|
||||
|
||||
ditheredPoster.value = canvas;
|
||||
}));
|
||||
|
||||
// Récupère les détails de l'oeuvre auprès de l'API TMDB.
|
||||
|
|
@ -91,32 +93,19 @@
|
|||
Effect.catchAll(_ => Effect.succeed(undefined)),
|
||||
Effect.tap(details => {
|
||||
tmdbDetails.value = details;
|
||||
// Insère les détails TMDB de l'oeuvre courante dans le magasin.
|
||||
// Met à jour le magasin de l'oeuvre courante.
|
||||
entryStore.setDiaryEntry(entryData);
|
||||
entryStore.setTmdbData(details);
|
||||
}),
|
||||
Effect.tap(Effect.logInfo),
|
||||
Effect.provide(PrettyLogger),
|
||||
);
|
||||
|
||||
const newCrew: MovieMainCrew = { directors: [], editors: [], writers: [] };
|
||||
|
||||
yield* pipe(
|
||||
Effect.fromNullable(tmdbDetails.value?.credits.crew),
|
||||
Effect.tap(Arr.forEach((credit: TmdbCredit) =>
|
||||
Match.value(credit).pipe(
|
||||
Match.when(c => Arr.some(DIRECTING_MAIN_JOBS, job => c.job === job), c => newCrew.directors.push(c)),
|
||||
Match.when(c => Arr.some(EDITING_MAIN_JOBS, job => c.job === job), c => newCrew.editors.push(c)),
|
||||
Match.when(c => Arr.some(WRITING_MAIN_JOBS, job => c.job === job), c => newCrew.writers.push(c)),
|
||||
Match.orElse(() => {}),
|
||||
)
|
||||
)),
|
||||
);
|
||||
|
||||
// Récupère les données utiles pour l'affichage.
|
||||
displayData.value = {
|
||||
hasEntry: isNotNull(entryData.entryId),
|
||||
hasUniqueOriginalTitle: entryData.originalTitle.toLowerCase() !== entryData.title.toLowerCase(),
|
||||
mainCrew: newCrew,
|
||||
mainCrew: getMainMovieCrew(tmdbDetails.value?.credits.crew),
|
||||
originalLanguage: entryData.originalLanguage.toUpperCase(),
|
||||
originalTitle: entryData.originalTitle,
|
||||
overview: entryData.overview,
|
||||
|
|
@ -181,7 +170,8 @@
|
|||
<template v-if="entryData.entryId">
|
||||
<p>Dans le Journal</p>
|
||||
<button class="invert" type="button">
|
||||
<router-link :to="{ name: 'ViewEntry', params: { entryId: entryData.entryId } }">Éditer</router-link>
|
||||
<router-link :to="{ name: 'ViewEntry', params: { entryId: String(entryData.entryId) } }"
|
||||
>Éditer</router-link>
|
||||
</button>
|
||||
</template>
|
||||
|
||||
|
|
@ -214,8 +204,8 @@
|
|||
max-width: 400px;
|
||||
height: 600px;
|
||||
max-height: 600px;
|
||||
background: var(--bg25-tertiary);
|
||||
border: 4px double var(--root-text-color);
|
||||
background: var(--bg25-tertiary);
|
||||
|
||||
> * {
|
||||
width: 100%;
|
||||
|
|
@ -226,10 +216,11 @@
|
|||
|
||||
.container {
|
||||
--threshold: 45rem;
|
||||
|
||||
position: relative;
|
||||
gap: var(--s1);
|
||||
inline-size: 85vi;
|
||||
max-inline-size: 70rem;
|
||||
gap: var(--s1);
|
||||
}
|
||||
|
||||
.overview {
|
||||
|
|
@ -244,8 +235,8 @@
|
|||
}
|
||||
|
||||
.credits {
|
||||
column-gap: var(--s-1);
|
||||
row-gap: initial;
|
||||
column-gap: var(--s-1);
|
||||
}
|
||||
|
||||
.crew ul {
|
||||
|
|
@ -268,22 +259,20 @@
|
|||
.entry-state {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-block-start: var(--s3);
|
||||
align-items: center;
|
||||
|
||||
a {
|
||||
text-decoration: unset;
|
||||
box-shadow: initial;
|
||||
border: 1px solid var(--root-text-color);
|
||||
padding-inline: 0;
|
||||
block-size: var(--s2);
|
||||
padding-block: 0;
|
||||
align-content: center;
|
||||
display: inline-flex;
|
||||
align-content: center;
|
||||
align-items: center;
|
||||
block-size: 100%;
|
||||
align-content: center;
|
||||
padding-block: 0;
|
||||
padding-inline: 0;
|
||||
border: 1px solid var(--root-text-color);
|
||||
text-decoration: unset;
|
||||
box-shadow: initial;
|
||||
}
|
||||
|
||||
span {
|
||||
|
|
@ -293,8 +282,8 @@
|
|||
padding-inline: var(--s-3);
|
||||
|
||||
&:last-of-type {
|
||||
background: var(--root-text-color);
|
||||
color: var(--root-background-color);
|
||||
background: var(--root-text-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
|
||||
import A11yDialog from "a11y-dialog";
|
||||
import { computed, ref, useTemplateRef, watchEffect } from "vue";
|
||||
import { onMounted, onUnmounted } from "vue";
|
||||
|
||||
const { dialogId, isToggled } = defineProps<{
|
||||
/** ID de la modale. */
|
||||
|
|
@ -27,14 +26,6 @@
|
|||
dialog.value?.show();
|
||||
}
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
console.debug("ImposterBox mounted");
|
||||
});
|
||||
|
||||
onUnmounted(() => {
|
||||
console.debug("ImposterBox unmounted");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
import { formDataToRecord } from "@/libs/search/search.ts";
|
||||
import { Effect, pipe } from "effect";
|
||||
import { useTemplateRef } from "vue";
|
||||
import { onMounted } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
import ImposterBox from "./ImposterBox.vue";
|
||||
|
|
@ -35,10 +34,6 @@
|
|||
Effect.runPromise,
|
||||
);
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
console.debug("SearchMediaDialog mounted");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -10,31 +10,31 @@
|
|||
<style lang="css" scoped>
|
||||
.loading {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
align-content: center;
|
||||
inline-size: 100%;
|
||||
block-size: 100%;
|
||||
text-align: center;
|
||||
visibility: hidden;
|
||||
opacity: 0;
|
||||
background:
|
||||
linear-gradient(45deg, #000 25%, transparent 0, transparent 75%, #000 0, #000),
|
||||
linear-gradient(45deg, #000 25%, transparent 0, transparent 75%, #000 0, #000);
|
||||
background-position: 0 0, 2px 2px;
|
||||
background-size: 4px 4px;
|
||||
inset: 0;
|
||||
align-content: center;
|
||||
text-align: center;
|
||||
inline-size: 100%;
|
||||
opacity: 0;
|
||||
block-size: 100%;
|
||||
visibility: hidden;
|
||||
|
||||
*[data-loading="true"] & {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
opacity: 1;
|
||||
animation: flicker 100ms infinite;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: auto;
|
||||
inline-size: 12ch;
|
||||
margin: auto;
|
||||
padding: var(--s-3);
|
||||
background: var(--root-text-color);
|
||||
color: var(--root-background-color);
|
||||
background: var(--root-text-color);
|
||||
|
||||
&::after {
|
||||
content: "";
|
||||
|
|
|
|||
|
|
@ -1,2 +1,5 @@
|
|||
export * from "./schemas/constants";
|
||||
export * from "./schemas/entries";
|
||||
export * from "./schemas/genres";
|
||||
export * from "./schemas/persons";
|
||||
export * from "./schemas/works";
|
||||
|
|
|
|||
|
|
@ -5,8 +5,9 @@ import * as t from "drizzle-orm/sqlite-core";
|
|||
import { sqliteTable as table } from "drizzle-orm/sqlite-core";
|
||||
import { Schema } from "effect";
|
||||
|
||||
import { APPRECIATION_STATES, DIARY_ENTRY_STATES } from "./constants";
|
||||
import { ArtWorks, Genres } from "./works";
|
||||
import { APPRECIATION_STATES, DIARY_ENTRY_STATES } from "./constants.ts";
|
||||
import { Genres } from "./genres.ts";
|
||||
import { ArtWorks } from "./works.ts";
|
||||
|
||||
// Tables
|
||||
|
||||
|
|
|
|||
45
src/db/schemas/genres.ts
Normal file
45
src/db/schemas/genres.ts
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import { TmdbGenreId } from "@/libs/apis/tmdb/schemas/genres.ts";
|
||||
import { SLUG_REGEXP, SlugSchema } from "@/libs/utils/schemas.ts";
|
||||
import * as t from "drizzle-orm/sqlite-core";
|
||||
import { sqliteTable as table } from "drizzle-orm/sqlite-core";
|
||||
import { Brand, Schema, String as Str } from "effect";
|
||||
|
||||
// Tables
|
||||
|
||||
export const Genres = table("genres", {
|
||||
id: t.integer("id").primaryKey({ autoIncrement: true }),
|
||||
name: t.text("name").notNull().unique(),
|
||||
slug: t.text("slug").notNull().unique(),
|
||||
tmdbId: t.integer("tmdb_id").notNull().unique(),
|
||||
});
|
||||
|
||||
// Schémas
|
||||
|
||||
/** ID d'un genre audiovisuel dans la BDD. */
|
||||
export type GenreId = Brand.Brand<"GenreId"> & number;
|
||||
export const GenreId = Brand.refined<GenreId>(
|
||||
(id: number) => Number.isInteger(id) && id >= 0,
|
||||
(id: number) => Brand.error(`${String(id)} doit être un nombre entier positif.`),
|
||||
);
|
||||
|
||||
/** Nom d'un genre audiovisuel dans la BDD. */
|
||||
export type GenreName = Brand.Brand<"GenreName"> & string;
|
||||
export const GenreName = Brand.refined<GenreName>(
|
||||
(name: string) => Str.isString(name) && Str.length(name) > 2,
|
||||
(name: string) => Brand.error(`${name} n'est pas un nom de genre valide'.`),
|
||||
);
|
||||
|
||||
/** Slug d'un genre audiovisuel dans la BDD. */
|
||||
export type GenreSlug = Brand.Brand<"GenreSlug"> & string;
|
||||
export const GenreSlug = Brand.refined<GenreSlug>(
|
||||
(name: string) => Str.isString(name) && SLUG_REGEXP.test(name),
|
||||
(name: string) => Brand.error(`${name} n'est pas un slug valide'.`),
|
||||
);
|
||||
|
||||
export const GenreSchema = Schema.Struct({
|
||||
id: Schema.NonNegativeInt.pipe(Schema.fromBrand(GenreId)),
|
||||
name: Schema.NonEmptyString.pipe(Schema.fromBrand(GenreName)),
|
||||
slug: Schema.NonEmptyString.pipe(SlugSchema),
|
||||
tmdbId: Schema.NonNegativeInt.pipe(Schema.fromBrand(TmdbGenreId)),
|
||||
});
|
||||
export type Genre = Schema.Schema.Type<typeof GenreSchema>;
|
||||
14
src/db/schemas/persons.ts
Normal file
14
src/db/schemas/persons.ts
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import type { Values } from "@/libs/utils/types.ts";
|
||||
|
||||
import { PERSON_GENDER_VALUES } from "@/libs/apis/tmdb/schemas/persons.ts";
|
||||
import * as t from "drizzle-orm/sqlite-core";
|
||||
import { sqliteTable as table } from "drizzle-orm/sqlite-core";
|
||||
|
||||
export const Persons = table("persons", {
|
||||
gender: t.text("gender").$type<Values<typeof PERSON_GENDER_VALUES>>().notNull(),
|
||||
id: t.integer("id").primaryKey({ autoIncrement: true }),
|
||||
name: t.text("name").notNull(),
|
||||
original_name: t.text("original_name").notNull(),
|
||||
slug: t.text("slug").notNull().unique(),
|
||||
tmdbId: t.integer("tmdb_id").notNull().unique(),
|
||||
});
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import type { Values } from "@/libs/utils/types";
|
||||
import type { Values } from "@/libs/utils/types.ts";
|
||||
import type { AnySQLiteColumn } from "drizzle-orm/sqlite-core";
|
||||
|
||||
import * as t from "drizzle-orm/sqlite-core";
|
||||
|
|
@ -33,12 +33,6 @@ export const ArtWorks = table("art_works", {
|
|||
tmdbId: t.integer("tmdb_id").notNull().unique(),
|
||||
});
|
||||
|
||||
export const Genres = table("genres", {
|
||||
id: t.integer("id").primaryKey({ autoIncrement: true }),
|
||||
name: t.text("name").notNull().unique(),
|
||||
slug: t.text("slug").notNull().unique(),
|
||||
});
|
||||
|
||||
// Schémas
|
||||
|
||||
export const MediaTypeSchema = Schema.Struct({
|
||||
|
|
@ -72,10 +66,3 @@ export const ArtWorkSchema = Schema.Struct({
|
|||
tmdbId: Schema.NonNegativeInt,
|
||||
});
|
||||
export type ArtWork = Schema.Schema.Type<typeof ArtWorkSchema>;
|
||||
|
||||
export const GenreSchema = Schema.Struct({
|
||||
id: Schema.NonNegativeInt,
|
||||
name: Schema.NonEmptyString,
|
||||
slug: Schema.NonEmptyString,
|
||||
});
|
||||
export type Genre = Schema.Schema.Type<typeof GenreSchema>;
|
||||
|
|
|
|||
17
src/libs/apis/tmdb/crew.ts
Normal file
17
src/libs/apis/tmdb/crew.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
import { Array as Arr, Match } from "effect";
|
||||
|
||||
import type { MovieMainCrew, TmdbCredit } from "./schemas/credits";
|
||||
|
||||
import { DIRECTING_MAIN_JOBS, EDITING_MAIN_JOBS, WRITING_MAIN_JOBS } from "./schemas/jobs";
|
||||
|
||||
export const getMainMovieCrew = (crew: readonly TmdbCredit[] = []): MovieMainCrew =>
|
||||
Arr.reduce(crew, { directors: [], editors: [], writers: [] }, (acc: MovieMainCrew, credit: TmdbCredit) => {
|
||||
Match.value(credit).pipe(
|
||||
Match.when(c => Arr.some(DIRECTING_MAIN_JOBS, job => c.job === job), c => acc.directors.push(c)),
|
||||
Match.when(c => Arr.some(EDITING_MAIN_JOBS, job => c.job === job), c => acc.editors.push(c)),
|
||||
Match.when(c => Arr.some(WRITING_MAIN_JOBS, job => c.job === job), c => acc.writers.push(c)),
|
||||
// Nous ne sommes pas intéressés par les autres postes.
|
||||
Match.orElse(() => void {}),
|
||||
);
|
||||
return acc;
|
||||
});
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import type { MergedTmdbLocalData } from "@/libs/search/schemas";
|
||||
import type { MergedTmdbDataDiaryEntry } from "@/libs/search/schemas";
|
||||
import type { AriaSortValues } from "@/libs/search/types";
|
||||
import type { Values } from "@/libs/utils/types";
|
||||
|
||||
|
|
@ -38,7 +38,7 @@ export const getTmdbSortFunction = (sortData: TmdbSortData) =>
|
|||
Match.orElse(() => byTitleAscending),
|
||||
),
|
||||
// Applique le bon sens (ascendant/descendant).
|
||||
(sortFunction: Order.Order<[number, MergedTmdbLocalData]>) =>
|
||||
(sortFunction: Order.Order<[number, MergedTmdbDataDiaryEntry]>) =>
|
||||
Match.value(sortData.sortOrder).pipe(
|
||||
Match.when(ARIA_SORT_VALUES.DESCENDING, () => Order.reverse(sortFunction)),
|
||||
Match.orElse(() => sortFunction),
|
||||
|
|
@ -47,17 +47,17 @@ export const getTmdbSortFunction = (sortData: TmdbSortData) =>
|
|||
|
||||
export const byOriginalIndexAscending = Order.mapInput(
|
||||
Order.number,
|
||||
(data: [number, MergedTmdbLocalData]) => data[1].originalResultIndex,
|
||||
(data: [number, MergedTmdbDataDiaryEntry]) => data[1].originalResultIndex,
|
||||
);
|
||||
export const byPopularityAscending = Order.mapInput(
|
||||
Order.number,
|
||||
(data: [number, MergedTmdbLocalData]) => data[1].popularity,
|
||||
(data: [number, MergedTmdbDataDiaryEntry]) => data[1].popularity,
|
||||
);
|
||||
export const byReleaseDateAscending = Order.mapInput(
|
||||
Order.string,
|
||||
(data: [number, MergedTmdbLocalData]) => data[1].releaseDate,
|
||||
(data: [number, MergedTmdbDataDiaryEntry]) => data[1].releaseDate,
|
||||
);
|
||||
export const byTitleAscending = Order.mapInput(
|
||||
Order.string,
|
||||
(data: [number, MergedTmdbLocalData]) => data[1].title,
|
||||
(data: [number, MergedTmdbDataDiaryEntry]) => data[1].title,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
import { HttpClient, HttpClientResponse } from "@effect/platform";
|
||||
import { Effect, pipe } from "effect";
|
||||
|
||||
import { createGetHttpRequest, createUrlWithParams, DebugHttpClient } from "./clients";
|
||||
import { createGetHttpRequest, createUrlWithParams, DebugHttpClient } from "../clients";
|
||||
import { TMDB_ROUTE_SEARCH_MOVIE } from "./routes";
|
||||
import { TmdbMovieSearchQueryParams, TmdbMovieSearchResponse } from "./tmdb/schemas";
|
||||
import { TmdbMovieSearchQueryParams, TmdbMovieSearchResponse } from "./schemas";
|
||||
|
||||
export const TmdbSearchMovie = (queryParams: TmdbMovieSearchQueryParams) =>
|
||||
pipe(
|
||||
|
|
@ -3,7 +3,9 @@ import { Schema } from "effect";
|
|||
import { TmdbCompany } from "./schemas/companies";
|
||||
import { TmdbCredit } from "./schemas/credits";
|
||||
import { DateFromTmdbDate } from "./schemas/dates";
|
||||
import { TmdbLanguage } from "./schemas/languages";
|
||||
import { TmdbGenre } from "./schemas/genres";
|
||||
import { LanguageIsoCode, TmdbLanguage } from "./schemas/languages";
|
||||
import { DurationMinutes, MonetaryAmount } from "./schemas/units";
|
||||
import { ArtWorkTitle } from "./schemas/works";
|
||||
|
||||
// Requête
|
||||
|
|
@ -46,7 +48,7 @@ export class TmdbMovieSearchResponseResult
|
|||
backdrop_path: Schema.Union(Schema.String, Schema.Null),
|
||||
genre_ids: Schema.Array(Schema.NonNegativeInt),
|
||||
id: Schema.NonNegativeInt,
|
||||
original_language: Schema.String,
|
||||
original_language: Schema.String.pipe(Schema.fromBrand(LanguageIsoCode)),
|
||||
original_title: Schema.String.pipe(Schema.fromBrand(ArtWorkTitle)),
|
||||
overview: Schema.String,
|
||||
popularity: Schema.Number,
|
||||
|
|
@ -71,15 +73,12 @@ export class TmdbMovieDetailsWithCreditsResponse
|
|||
adult: Schema.Boolean,
|
||||
backdrop_path: Schema.Union(Schema.String, Schema.Null),
|
||||
belongs_to_collection: Schema.Unknown,
|
||||
budget: Schema.NonNegativeInt,
|
||||
budget: Schema.NonNegativeInt.pipe(Schema.fromBrand(MonetaryAmount)),
|
||||
credits: Schema.Struct({
|
||||
cast: Schema.Array(TmdbCredit),
|
||||
crew: Schema.Array(TmdbCredit),
|
||||
}),
|
||||
genres: Schema.Array(Schema.Struct({
|
||||
id: Schema.NonNegativeInt,
|
||||
name: Schema.NonEmptyString,
|
||||
})),
|
||||
genres: Schema.Array(TmdbGenre),
|
||||
homepage: Schema.String,
|
||||
id: Schema.NonNegativeInt,
|
||||
imdb_id: Schema.Union(Schema.String, Schema.Null),
|
||||
|
|
@ -90,8 +89,8 @@ export class TmdbMovieDetailsWithCreditsResponse
|
|||
poster_path: Schema.Union(Schema.String, Schema.Null),
|
||||
production_companies: Schema.Array(TmdbCompany),
|
||||
release_date: DateFromTmdbDate,
|
||||
revenue: Schema.NonNegativeInt,
|
||||
runtime: Schema.NonNegativeInt,
|
||||
revenue: Schema.NonNegativeInt.pipe(Schema.fromBrand(MonetaryAmount)),
|
||||
runtime: Schema.NonNegativeInt.pipe(Schema.fromBrand(DurationMinutes)),
|
||||
spoken_languages: Schema.Array(TmdbLanguage),
|
||||
status: Schema.NonEmptyString,
|
||||
tagline: Schema.String,
|
||||
|
|
|
|||
|
|
@ -1,13 +1,13 @@
|
|||
import type { Utc } from "effect/DateTime";
|
||||
|
||||
import { DateTime, Schema } from "effect";
|
||||
import { DateTime, Option, Schema } from "effect";
|
||||
|
||||
/** Schéma acceptant une chaîne de caractère au format "YYYY-MM-DD" et la convertissant en DateTime. */
|
||||
export const DateFromTmdbDate = Schema.transform(
|
||||
Schema.String.pipe(Schema.length(10)),
|
||||
Schema.String,
|
||||
Schema.DateTimeUtcFromSelf,
|
||||
{
|
||||
decode: (string: string): Utc => DateTime.unsafeMake(string),
|
||||
decode: (string: string): Utc => DateTime.make(string).pipe(Option.getOrElse(() => DateTime.unsafeMake(0))),
|
||||
encode: (date: Utc): string => DateTime.format(date, { dateStyle: "short", locale: "sv-SE" }),
|
||||
strict: true,
|
||||
},
|
||||
|
|
|
|||
22
src/libs/apis/tmdb/schemas/genres.ts
Normal file
22
src/libs/apis/tmdb/schemas/genres.ts
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
import { Brand, Schema, String as Str } from "effect";
|
||||
|
||||
/** ID d'un genre audiovisuel TMDB. */
|
||||
export type TmdbGenreId = Brand.Brand<"TmdbGenreId"> & number;
|
||||
export const TmdbGenreId = Brand.refined<TmdbGenreId>(
|
||||
(id: number) => Number.isInteger(id) && id >= 0,
|
||||
(id: number) => Brand.error(`${String(id)} doit être un nombre entier positif.`),
|
||||
);
|
||||
|
||||
/** Nom d'un genre audiovisuel TMDB. */
|
||||
export type TmdbGenreName = Brand.Brand<"TmdbGenreName"> & string;
|
||||
export const TmdbGenreName = Brand.refined<TmdbGenreName>(
|
||||
(name: string) => Str.isString(name) && Str.length(name) > 2,
|
||||
(name: string) => Brand.error(`${String(name)} n'est pas un nom de genre valide'.`),
|
||||
);
|
||||
|
||||
export class TmdbGenre extends Schema.Class<TmdbGenre>("TmdbGenre")({
|
||||
/** ID TMDB du genre. */
|
||||
id: Schema.NonNegativeInt.pipe(Schema.fromBrand(TmdbGenreId)),
|
||||
/** Nom TMDB du genre. */
|
||||
name: Schema.NonEmptyString.pipe(Schema.fromBrand(TmdbGenreName)),
|
||||
}) {}
|
||||
15
src/libs/apis/tmdb/schemas/units.ts
Normal file
15
src/libs/apis/tmdb/schemas/units.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import { Brand } from "effect";
|
||||
|
||||
/** Montant en unités monétaires. */
|
||||
export type MonetaryAmount = Brand.Brand<"MonetaryAmount"> & number;
|
||||
export const MonetaryAmount = Brand.refined<MonetaryAmount>(
|
||||
(amount: number) => Number.isInteger(amount),
|
||||
(amount: number) => Brand.error(`${String(amount)} n'est pas un montant en euros valide'.`),
|
||||
);
|
||||
|
||||
/** Durée en minutes. */
|
||||
export type DurationMinutes = Brand.Brand<"DurationMinutes"> & number;
|
||||
export const DurationMinutes = Brand.refined<DurationMinutes>(
|
||||
(duration: number) => Number.isInteger(duration) && duration >= 0,
|
||||
(duration: number) => Brand.error(`${String(duration)} n'est pas une durée en minutes valide'.`),
|
||||
);
|
||||
|
|
@ -1,7 +1,9 @@
|
|||
import { GenreSchema } from "@/db/schemas.ts";
|
||||
import { APPRECIATION_STATES, MEDIA_TYPES } from "@/db/schemas/constants";
|
||||
import { Schema } from "effect";
|
||||
|
||||
import { YearString } from "../apis/tmdb/schemas/dates";
|
||||
import { TmdbGenre } from "../apis/tmdb/schemas/genres";
|
||||
import { LanguageIsoCode } from "../apis/tmdb/schemas/languages";
|
||||
import { ArtWorkTitle } from "../apis/tmdb/schemas/works";
|
||||
|
||||
|
|
@ -11,7 +13,8 @@ export class SearchPageQueryParams extends Schema.Class<SearchPageQueryParams>("
|
|||
year: YearString,
|
||||
}) {}
|
||||
|
||||
export class MergedTmdbLocalData extends Schema.Class<MergedTmdbLocalData>("MergedTmdbLocalData")({
|
||||
export class MergedTmdbDataDiaryEntry extends Schema.Class<MergedTmdbDataDiaryEntry>("MergedTmdbDataDiaryEntry")({
|
||||
artWorkGenres: Schema.Array(GenreSchema),
|
||||
artWorkId: Schema.NonNegativeInt.pipe(Schema.optional),
|
||||
artWorkMediumTypeId: Schema.NonNegativeInt.pipe(Schema.optional),
|
||||
entryAppreciation: Schema.Enums(APPRECIATION_STATES).pipe(Schema.optional),
|
||||
|
|
@ -21,7 +24,6 @@ export class MergedTmdbLocalData extends Schema.Class<MergedTmdbLocalData>("Merg
|
|||
entryDateObtained: Schema.Date.pipe(Schema.optional),
|
||||
entryId: Schema.NonNegativeInt.pipe(Schema.optional),
|
||||
entryStateId: Schema.NonNegativeInt.pipe(Schema.optional),
|
||||
genreIds: Schema.Array(Schema.NonNegativeInt),
|
||||
originalLanguage: Schema.String.pipe(Schema.fromBrand(LanguageIsoCode)),
|
||||
originalResultIndex: Schema.Int,
|
||||
originalTitle: Schema.String.pipe(Schema.fromBrand(ArtWorkTitle)),
|
||||
|
|
@ -31,5 +33,6 @@ export class MergedTmdbLocalData extends Schema.Class<MergedTmdbLocalData>("Merg
|
|||
posterUrl: Schema.Union(Schema.String, Schema.Null),
|
||||
releaseDate: Schema.String,
|
||||
title: Schema.String.pipe(Schema.fromBrand(ArtWorkTitle)),
|
||||
tmdbGenres: Schema.Array(TmdbGenre),
|
||||
tmdbId: Schema.NonNegativeInt,
|
||||
}) {}
|
||||
|
|
|
|||
24
src/libs/utils/images.ts
Normal file
24
src/libs/utils/images.ts
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
import type { IntBuffer } from "@thi.ng/pixel";
|
||||
import type { IllegalArgumentException } from "effect/Cause";
|
||||
|
||||
import { Images, ImagesError } from "@/services/images.ts";
|
||||
import { Url } from "@effect/platform";
|
||||
import { Effect, pipe } from "effect";
|
||||
|
||||
/** Génère une image avec tramage Atkinson depuis une URL sous forme de buffer de pixels.
|
||||
*
|
||||
@param imageUrl L'URL de l'image à traiter.
|
||||
@returns Un Effet avec en valeur de succès un buffer de pixels.
|
||||
*/
|
||||
export const generateDitheredBufferFromUrl = (
|
||||
imageUrl: string,
|
||||
): Effect.Effect<IntBuffer, IllegalArgumentException | ImagesError, Images> =>
|
||||
Effect.gen(function*() {
|
||||
const imageService: Images = yield* Images;
|
||||
|
||||
return yield* pipe(
|
||||
Url.fromString(imageUrl),
|
||||
Effect.andThen((url: URL) => imageService.imageFromUrl(url)),
|
||||
Effect.andThen((img: HTMLImageElement) => imageService.ditherImage(img)),
|
||||
);
|
||||
});
|
||||
3
src/libs/utils/numbers.ts
Normal file
3
src/libs/utils/numbers.ts
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
import { Number as Num, pipe } from "effect";
|
||||
|
||||
export const convertToMillions = (n: number | string): number => pipe(Number(n) / 1000000, Num.round(2));
|
||||
6
src/libs/utils/schemas.ts
Normal file
6
src/libs/utils/schemas.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
import { Schema } from "effect";
|
||||
|
||||
export const SLUG_REGEXP = /^[^\s!?\/.*#_|]+$/;
|
||||
|
||||
/** Schéma pour slugs, identifiants alphabétiques uniquement composés de lettres et de tirets. */
|
||||
export const SlugSchema = Schema.pattern(SLUG_REGEXP);
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
import type { MergedTmdbLocalData } from "@/libs/search/schemas";
|
||||
import type { MergedTmdbDataDiaryEntry } from "@/libs/search/schemas";
|
||||
|
||||
import { not, setup } from "xstate";
|
||||
|
||||
|
|
@ -8,8 +8,8 @@ export const editEntryDialogMachine = setup({
|
|||
hasDiaryEntry: ({ context }) => context.entryData?.entryId !== undefined,
|
||||
},
|
||||
types: {
|
||||
context: {} as { entryData: MergedTmdbLocalData | undefined },
|
||||
input: {} as { entryData: MergedTmdbLocalData },
|
||||
context: {} as { entryData: MergedTmdbDataDiaryEntry | undefined },
|
||||
input: {} as { entryData: MergedTmdbDataDiaryEntry },
|
||||
},
|
||||
})
|
||||
.createMachine({
|
||||
|
|
|
|||
|
|
@ -1,13 +1,218 @@
|
|||
<script setup lang="ts">
|
||||
import { useEntryStore } from "@/stores/entry";
|
||||
import { onMounted } from "vue";
|
||||
import type { MovieMainCrew } from "@/libs/apis/tmdb/schemas/credits.ts";
|
||||
import type { TmdbGenreName } from "@/libs/apis/tmdb/schemas/genres.ts";
|
||||
import type { ArtWorkTitle } from "@/libs/apis/tmdb/schemas/works.ts";
|
||||
|
||||
import { getMainMovieCrew } from "@/libs/apis/tmdb/crew.ts";
|
||||
import { TmdbGenre } from "@/libs/apis/tmdb/schemas/genres.ts";
|
||||
import { generateDitheredBufferFromUrl } from "@/libs/utils/images.ts";
|
||||
import { convertToMillions } from "@/libs/utils/numbers.ts";
|
||||
import { PrettyLogger } from "@/services/logger.ts";
|
||||
import { RuntimeClient } from "@/services/runtime-client.ts";
|
||||
import { useEntryStore } from "@/stores/entry.ts";
|
||||
import { canvasFromPixelBuffer } from "@thi.ng/pixel";
|
||||
import { Array as Arr, Effect, pipe, String as Str } from "effect";
|
||||
import { ref, type Ref, type ShallowRef, useTemplateRef, watch } from "vue";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
// Types
|
||||
interface AddEntryDisplayData {
|
||||
budget: string;
|
||||
genres: TmdbGenreName[];
|
||||
hasUniqueOriginalTitle: boolean;
|
||||
mainCrew: MovieMainCrew;
|
||||
originalLanguage: string;
|
||||
originalTitle: ArtWorkTitle;
|
||||
overview: string;
|
||||
popularity: number;
|
||||
releaseDate: string;
|
||||
revenue: string;
|
||||
runtime: string;
|
||||
tagline: string;
|
||||
title: ArtWorkTitle;
|
||||
}
|
||||
|
||||
// Magasins et routeur
|
||||
const router = useRouter();
|
||||
const entryStore = useEntryStore();
|
||||
|
||||
onMounted(() => {
|
||||
console.debug(entryStore.entry);
|
||||
console.debug(entryStore.tmdbData);
|
||||
});
|
||||
// Données
|
||||
/** Ensemble des données affichées à l'Utilisateur au sein */
|
||||
const displayData: Ref<AddEntryDisplayData | undefined> = ref<AddEntryDisplayData | undefined>();
|
||||
/** Conteneur du canvas du poster de l'oeuvre courante avec tramage. */
|
||||
const imageContainer: Readonly<ShallowRef<HTMLDivElement | null>> = useTemplateRef("imageContainer");
|
||||
/** Canvas dans lequel est inséré le poster de l'oeuvre courante avec tramage. */
|
||||
const ditheredPoster: Ref<HTMLCanvasElement | undefined> = ref<HTMLCanvasElement>();
|
||||
|
||||
// Cycles
|
||||
watch(() => entryStore.diaryEntry, async (): Promise<void> => {
|
||||
if (!entryStore.diaryEntry || !entryStore.tmdbData) {
|
||||
console.error("AddEntryPage - Pas d'entrée dans le magasin !");
|
||||
await router.push("/");
|
||||
return;
|
||||
}
|
||||
|
||||
// Récupère les données à afficher.
|
||||
displayData.value = {
|
||||
budget: entryStore.tmdbData.budget ? `${String(convertToMillions(entryStore.tmdbData.budget))} M$` : "?",
|
||||
genres: Arr.map(entryStore.tmdbData.genres, (genre: TmdbGenre) => genre.name),
|
||||
hasUniqueOriginalTitle:
|
||||
Str.toLowerCase(entryStore.diaryEntry.originalTitle) !== Str.toLowerCase(entryStore.diaryEntry.title),
|
||||
mainCrew: getMainMovieCrew(entryStore.tmdbData.credits.crew),
|
||||
originalLanguage: entryStore.tmdbData.original_language,
|
||||
originalTitle: entryStore.diaryEntry.originalTitle,
|
||||
overview: entryStore.diaryEntry.overview,
|
||||
popularity: entryStore.diaryEntry.popularity,
|
||||
releaseDate: entryStore.diaryEntry.releaseDate,
|
||||
revenue: entryStore.tmdbData.revenue ? `${String(convertToMillions(entryStore.tmdbData.revenue))} M$` : "?",
|
||||
runtime: `${String(entryStore.tmdbData.runtime)} min`,
|
||||
tagline: entryStore.tmdbData.tagline,
|
||||
title: entryStore.diaryEntry.title,
|
||||
};
|
||||
|
||||
// Applique le tramage à l'affiche de l'oeuvre.
|
||||
await RuntimeClient.runPromise(Effect.gen(function*() {
|
||||
if (!entryStore.diaryEntry?.posterUrl) return;
|
||||
|
||||
yield* pipe(
|
||||
generateDitheredBufferFromUrl(`https://image.tmdb.org/t/p/w500${entryStore.diaryEntry.posterUrl}`),
|
||||
Effect.tapError(Effect.logError),
|
||||
Effect.tap(ditheredBuffer => {
|
||||
const canvas = canvasFromPixelBuffer(ditheredBuffer, imageContainer.value, { pixelated: true });
|
||||
ditheredPoster.value = canvas;
|
||||
}),
|
||||
Effect.provide(PrettyLogger),
|
||||
);
|
||||
}));
|
||||
}, { immediate: true });
|
||||
</script>
|
||||
|
||||
<template></template>
|
||||
<template>
|
||||
<div class="stack">
|
||||
<h2>Ajouter une entrée</h2>
|
||||
|
||||
<aside class="go-back">
|
||||
<a class="link-with-iconography" href="javascript:void(0)" @click="router.back">
|
||||
<span class="iconography">←</span>
|
||||
<span class="text">Retour à la recherche</span></a>
|
||||
</aside>
|
||||
|
||||
<div class="container switcher">
|
||||
<div ref="imageContainer" class="canvas-container"></div>
|
||||
<div class="stack">
|
||||
<h3>{{ entryStore.diaryEntry?.originalTitle }}</h3>
|
||||
|
||||
<div class="original-metadata">
|
||||
<span v-if="displayData?.hasUniqueOriginalTitle">{{ displayData?.title }} | </span>
|
||||
{{ displayData?.releaseDate }} | {{ displayData?.runtime }} | {{ displayData?.originalLanguage }} | {{
|
||||
displayData?.popularity
|
||||
}} | {{ displayData?.budget }} -> {{ displayData?.revenue }}
|
||||
</div>
|
||||
|
||||
<div class="main-movie-crew cluster">
|
||||
<div class="department">
|
||||
<strong>RÉALISATION </strong>
|
||||
<ul>
|
||||
<li v-for="director of displayData?.mainCrew.directors" :key="director.id">{{ director.name }}</li>
|
||||
<li v-if="displayData?.mainCrew.directors.length === 0">/</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="department">
|
||||
<strong>ÉCRITURE </strong>
|
||||
<ul>
|
||||
<li v-for="writer of displayData?.mainCrew.writers" :key="writer.id">{{ writer.name }}</li>
|
||||
<li v-if="displayData?.mainCrew.writers.length === 0">/</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="department">
|
||||
<strong>MONTAGE </strong>
|
||||
<ul>
|
||||
<li v-for="editor of displayData?.mainCrew.editors" :key="editor.id">{{ editor.name }}</li>
|
||||
<li v-if="displayData?.mainCrew.editors.length === 0">/</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<p v-if="displayData?.tagline" class="tagline">{{ displayData?.tagline }}</p>
|
||||
<p class="overview">{{ displayData?.overview }}</p>
|
||||
|
||||
<ul class="genres">
|
||||
<strong>Genres</strong>
|
||||
<li v-for="genre of displayData?.genres" :key="Str.toLowerCase(genre)">{{ genre }}</li>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="css">
|
||||
.go-back {
|
||||
margin-block-end: var(--s1);
|
||||
margin-inline-start: calc(var(--s1) * -1);
|
||||
}
|
||||
|
||||
.container {
|
||||
--threshold: 51rem;
|
||||
|
||||
gap: var(--s2);
|
||||
max-inline-size: 70rem;
|
||||
}
|
||||
|
||||
.canvas-container {
|
||||
aspect-ratio: 0.6;
|
||||
width: 400px;
|
||||
max-width: 400px;
|
||||
height: 600px;
|
||||
max-height: 600px;
|
||||
border: 4px double var(--root-text-color);
|
||||
background: var(--bg25-tertiary);
|
||||
|
||||
> * {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
}
|
||||
|
||||
.main-movie-crew {
|
||||
--layout-cluster-gap: 2ch;
|
||||
|
||||
align-items: start;
|
||||
}
|
||||
|
||||
hr {
|
||||
block-size: 1px;
|
||||
background: var(--root-text-color);
|
||||
}
|
||||
|
||||
.overview {
|
||||
hyphens: auto;
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.tagline {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.genres {
|
||||
display: inline-flex;
|
||||
|
||||
strong {
|
||||
margin-inline-end: 1ch;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
li + li {
|
||||
padding-inline-start: 1ch;
|
||||
|
||||
&::before {
|
||||
content: "·";
|
||||
padding-inline-end: 1ch;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import SearchMediaDialog from "@/components/dialogs/SearchMediaDialog.vue";
|
||||
import LastAddedEntry from "@/components/LastAddedEntry.vue";
|
||||
import { onMounted, ref } from "vue";
|
||||
import { ref } from "vue";
|
||||
|
||||
const toggleDialogStateRef = (stateRef: Ref<boolean, boolean>) => () => {
|
||||
stateRef.value = !stateRef.value;
|
||||
|
|
@ -11,10 +11,6 @@
|
|||
|
||||
const isAddMediaToggled = ref(false);
|
||||
const toggleAddMediaDialog = toggleDialogStateRef(isAddMediaToggled);
|
||||
|
||||
onMounted(() => {
|
||||
console.debug("HomePage.vue -- Mounted");
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@
|
|||
TmdbMovieSearchResponse,
|
||||
TmdbMovieSearchResponseResult,
|
||||
} from "@/libs/apis/tmdb/schemas.ts";
|
||||
import { MergedTmdbLocalData, SearchPageQueryParams } from "@/libs/search/schemas.ts";
|
||||
import { MergedTmdbDataDiaryEntry, SearchPageQueryParams } from "@/libs/search/schemas.ts";
|
||||
import { updateUrlQueryFromFormData } from "@/libs/search/search.ts";
|
||||
import { getCurrentYear } from "@/libs/utils/dates.ts";
|
||||
import { getOrUndefined } from "@/libs/utils/effects.ts";
|
||||
|
|
@ -20,7 +20,6 @@
|
|||
import { ReadApi } from "@/services/read-api.ts";
|
||||
import { RuntimeClient } from "@/services/runtime-client.ts";
|
||||
import { TmdbApi } from "@/services/tmdb-api.ts";
|
||||
import { useEntryStore } from "@/stores/entry.ts";
|
||||
import { DateTime, Effect, pipe, Schema } from "effect";
|
||||
import { computed, onMounted, ref, useTemplateRef, watch } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
|
|
@ -33,9 +32,6 @@
|
|||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
// Magasins
|
||||
const entryStore = useEntryStore();
|
||||
|
||||
/** L'Élément DOM du formulaire de recherche. */
|
||||
const form = useTemplateRef("form");
|
||||
/** Valeurs du formulaire de recherche. */
|
||||
|
|
@ -46,9 +42,9 @@
|
|||
/** Retour de la requête de recherche de films auprès de l'API TMDB. */
|
||||
const search: Ref<TmdbMovieSearchResponse | undefined> = ref<TmdbMovieSearchResponse>();
|
||||
/** Données complètes de la recherche avec les données TMDB et locales. */
|
||||
const searchData: Ref<Map<number, MergedTmdbLocalData>> = ref(new Map<number, MergedTmdbLocalData>());
|
||||
const searchData: Ref<Map<number, MergedTmdbDataDiaryEntry>> = ref(new Map<number, MergedTmdbDataDiaryEntry>());
|
||||
/** Données de l'Entrée actuellement éditée. */
|
||||
const currentEditedEntry: Ref<MergedTmdbLocalData | undefined> = ref();
|
||||
const currentEditedEntry: Ref<MergedTmdbDataDiaryEntry | undefined> = ref();
|
||||
|
||||
/** État du chargement de la requête auprès de l'API TMDB. */
|
||||
const isLoading: Ref<boolean> = ref(false);
|
||||
|
|
@ -151,7 +147,7 @@
|
|||
effect => getOrUndefined(effect),
|
||||
);
|
||||
|
||||
const newEntry = yield* Schema.decodeUnknown(MergedTmdbLocalData)(
|
||||
const newEntry = yield* Schema.decodeUnknown(MergedTmdbDataDiaryEntry)(
|
||||
{
|
||||
artWorkId: artWork?.id,
|
||||
artWorkMediumTypeId: artWork?.mediumTypeId,
|
||||
|
|
@ -162,7 +158,6 @@
|
|||
entryDateObtained: entry?.dateObtained,
|
||||
entryId: entry?.id,
|
||||
entryStateId: entry?.stateId,
|
||||
genreIds: result.genre_ids,
|
||||
originalLanguage: result.original_language,
|
||||
originalResultIndex: index,
|
||||
originalTitle: result.original_title,
|
||||
|
|
@ -171,12 +166,12 @@
|
|||
posterUrl: result.poster_path,
|
||||
releaseDate: DateTime.format(result.release_date, { dateStyle: "short", locale: "sv-SE" }),
|
||||
title: result.title,
|
||||
tmdbGenres: result.genre_ids,
|
||||
tmdbId: result.id,
|
||||
} satisfies MergedTmdbLocalData,
|
||||
} satisfies MergedTmdbDataDiaryEntry,
|
||||
);
|
||||
|
||||
searchData.value.set(result.id, newEntry);
|
||||
entryStore.setEntry(newEntry);
|
||||
}).pipe(Effect.runPromise)
|
||||
);
|
||||
}));
|
||||
|
|
@ -187,7 +182,6 @@
|
|||
}, { immediate: true });
|
||||
|
||||
onMounted(() => {
|
||||
console.debug("SearchPage.vue -- Mounted");
|
||||
updateUrlQuery = updateUrlQueryFromFormData(router, form.value);
|
||||
});
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import HomePage from "@/pages/HomePage.vue";
|
||||
import { Option, pipe, Predicate } from "effect";
|
||||
import { createRouter, createWebHistory, type Router } from "vue-router";
|
||||
import { createRouter, createWebHistory, type RouteLocationNormalizedGeneric, type Router } from "vue-router";
|
||||
|
||||
const siteName = "Journal Média";
|
||||
const separator = "|";
|
||||
|
|
@ -8,7 +8,9 @@ const separator = "|";
|
|||
const generatePageTitle = (siteName: string, separator: string, pageTitle: string): string =>
|
||||
[siteName, separator, pageTitle].join(" ");
|
||||
|
||||
const router: Router = createRouter({
|
||||
type CustomRouter = Router & { from?: RouteLocationNormalizedGeneric };
|
||||
|
||||
const router: CustomRouter = createRouter({
|
||||
history: createWebHistory(import.meta.env.BASE_URL),
|
||||
routes: [
|
||||
{
|
||||
|
|
@ -44,7 +46,8 @@ const router: Router = createRouter({
|
|||
],
|
||||
});
|
||||
|
||||
router.beforeEach((to, _): void => {
|
||||
router.beforeEach((to, from, next): void => {
|
||||
router.from = from;
|
||||
pipe(
|
||||
Option.liftPredicate(Predicate.isString)(to.meta.title),
|
||||
Option.getOrElse((): string => "???"),
|
||||
|
|
@ -52,6 +55,7 @@ router.beforeEach((to, _): void => {
|
|||
document.title = generatePageTitle(siteName, separator, pageName);
|
||||
},
|
||||
);
|
||||
next();
|
||||
});
|
||||
|
||||
export default router;
|
||||
|
|
|
|||
4
src/router/typed-routes.d.ts
vendored
4
src/router/typed-routes.d.ts
vendored
|
|
@ -34,8 +34,8 @@ export interface RouteNamedMap {
|
|||
ViewEntry: RouteRecordInfo<
|
||||
"ViewEntry",
|
||||
"/entry/:entryId",
|
||||
{ entryId: number },
|
||||
{ entryId: number },
|
||||
{ entryId: string },
|
||||
{ entryId: string },
|
||||
{ title: string }
|
||||
>;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,29 +1,19 @@
|
|||
import { asInt } from "@thi.ng/color-palettes";
|
||||
import {
|
||||
ARGB8888,
|
||||
canvasFromPixelBuffer,
|
||||
defIndexed,
|
||||
imageFromURL,
|
||||
IntBuffer,
|
||||
intBufferFromImage,
|
||||
type IntFormat,
|
||||
} from "@thi.ng/pixel";
|
||||
import { ARGB8888, defIndexed, imageFromURL, IntBuffer, intBufferFromImage, type IntFormat } from "@thi.ng/pixel";
|
||||
import { ATKINSON, ditherWith } from "@thi.ng/pixel-dither";
|
||||
import { Data, Effect, pipe } from "effect";
|
||||
|
||||
class ImagesError extends Data.TaggedError("ImagesError")<{ cause: unknown }> {}
|
||||
export class ImagesError extends Data.TaggedError("ImagesError")<{ cause: unknown }> {}
|
||||
|
||||
export class Images extends Effect.Service<Images>()("Images", {
|
||||
effect: Effect.gen(function*() {
|
||||
return {
|
||||
ditherImage: (image: HTMLImageElement, parent?: HTMLElement) =>
|
||||
ditherImage: (image: HTMLImageElement) =>
|
||||
Effect.gen(function*() {
|
||||
const buf: IntBuffer = intBufferFromImage(image, ARGB8888).scale(0.8, "cubic");
|
||||
const theme: IntFormat = defIndexed(asInt(["salmon", "black"]));
|
||||
const ditheredBuffer: IntBuffer = ditherWith(ATKINSON, buf.copy(), {}).as(theme);
|
||||
|
||||
const canvas = canvasFromPixelBuffer(ditheredBuffer, parent, { pixelated: true });
|
||||
return { buffer: ditheredBuffer, canvas: canvas };
|
||||
return ditheredBuffer;
|
||||
}),
|
||||
imageFromUrl: (url: URL) =>
|
||||
pipe(
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {
|
|||
createUrlWithParams,
|
||||
DebugHttpClient as Dhc,
|
||||
} from "@/libs/apis/clients";
|
||||
import { TMDB_ROUTE_MOVIE_DETAILS, TMDB_ROUTE_SEARCH_MOVIE } from "@/libs/apis/routes";
|
||||
import { TMDB_ROUTE_MOVIE_DETAILS, TMDB_ROUTE_SEARCH_MOVIE } from "@/libs/apis/tmdb/routes.ts";
|
||||
import {
|
||||
TmdbMovieDetailsQueryParams,
|
||||
TmdbMovieDetailsWithCreditsResponse,
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
import type { TmdbMovieDetailsWithCreditsResponse } from "@/libs/apis/tmdb/schemas";
|
||||
import type { MergedTmdbLocalData } from "@/libs/search/schemas";
|
||||
import type { MergedTmdbDataDiaryEntry } from "@/libs/search/schemas";
|
||||
|
||||
import { defineStore } from "pinia";
|
||||
import { type Ref, ref } from "vue";
|
||||
|
||||
export const useEntryStore = defineStore("entry", () => {
|
||||
const entry: Ref<MergedTmdbLocalData | undefined> = ref<MergedTmdbLocalData>();
|
||||
const diaryEntry: Ref<MergedTmdbDataDiaryEntry | undefined> = ref<MergedTmdbDataDiaryEntry>();
|
||||
const tmdbData: Ref<TmdbMovieDetailsWithCreditsResponse | undefined> = ref<TmdbMovieDetailsWithCreditsResponse>();
|
||||
|
||||
const setEntry = (newEntry: MergedTmdbLocalData | undefined): void => {
|
||||
entry.value = newEntry;
|
||||
const setDiaryEntry = (newEntry: MergedTmdbDataDiaryEntry | undefined): void => {
|
||||
diaryEntry.value = newEntry;
|
||||
};
|
||||
|
||||
const setTmdbData = (newData: TmdbMovieDetailsWithCreditsResponse | undefined): void => {
|
||||
tmdbData.value = newData;
|
||||
};
|
||||
|
||||
return { entry, setEntry, setTmdbData, tmdbData };
|
||||
return { diaryEntry, setDiaryEntry, setTmdbData, tmdbData };
|
||||
});
|
||||
|
|
|
|||
|
|
@ -17,10 +17,6 @@
|
|||
:where(a:not([class])) {
|
||||
text-decoration: underline dashed;
|
||||
text-decoration-skip-ink: all;
|
||||
|
||||
&.external {
|
||||
text-decoration: underline solid;
|
||||
}
|
||||
}
|
||||
|
||||
:where(p, h1, h2, h3, h4, h5, h6) {
|
||||
|
|
|
|||
|
|
@ -37,11 +37,11 @@
|
|||
border-block-end: 1px solid var(--dialog-border-color);
|
||||
|
||||
h2 {
|
||||
font-family: "BRKLY", monospace;
|
||||
padding-inline: var(--s-1);
|
||||
text-transform: uppercase;
|
||||
font-family: BRKLY, monospace;
|
||||
font-size: var(--s0);
|
||||
font-weight: var(--brkly-font-weight-semibold);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
button {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
@import url("./default/buttons.css");
|
||||
@import url("./default/forms.css");
|
||||
@import url("./default/headings.css");
|
||||
@import url("./default/links.css");
|
||||
|
||||
:root {
|
||||
--brkly-font-weight-regular: 100;
|
||||
|
|
@ -54,7 +55,7 @@ strong {
|
|||
|
||||
.container {
|
||||
--layout-center-max-width: 100%;
|
||||
--layout-center-inline-padding: var(--s1);
|
||||
--layout-center-inline-padding: var(--s2);
|
||||
--layout-sidebar-last-child-basis: 8rem;
|
||||
|
||||
place-content: start;
|
||||
|
|
|
|||
|
|
@ -5,20 +5,20 @@
|
|||
h1 {
|
||||
font-family: var(--headings-font-family);
|
||||
font-size: var(--s3);
|
||||
letter-spacing: var(--letter-spacing-medium);
|
||||
line-height: var(--line-height-compact);
|
||||
letter-spacing: var(--letter-spacing-medium);
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-family: var(--headings-font-family);
|
||||
font-size: var(--s2);
|
||||
letter-spacing: var(--letter-spacing-small);
|
||||
line-height: var(--line-height-compact);
|
||||
letter-spacing: var(--letter-spacing-small);
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: var(--headings-font-family);
|
||||
font-size: var(--s1);
|
||||
letter-spacing: var(--letter-spacing-small);
|
||||
line-height: var(--line-height-compact);
|
||||
letter-spacing: var(--letter-spacing-small);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,27 @@
|
|||
a {
|
||||
text-underline-offset: var(--s-3);
|
||||
|
||||
&[aria-current="true"] {
|
||||
font-weight: var(--brkly-font-weight-semibold);
|
||||
}
|
||||
|
||||
&.link-with-iconography {
|
||||
padding: var(--s-3);
|
||||
text-decoration: none;
|
||||
|
||||
.text {
|
||||
margin-inline-start: 1ch;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
font-weight: var(--brkly-font-weight-semibold);
|
||||
color: var(--root-background-color);
|
||||
background: var(--root-text-color);
|
||||
|
||||
.text {
|
||||
text-decoration-color: var(--root-text-color);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue