diff --git a/.github/workflows/cd-app-prod.yaml b/.github/workflows/cd-app-prod.yaml new file mode 100644 index 000000000..cb6b78eb3 --- /dev/null +++ b/.github/workflows/cd-app-prod.yaml @@ -0,0 +1,43 @@ +name: CD - Production + +on: + push: + branches: + - next + +jobs: + publish-app-prod: + runs-on: ubuntu-latest + permissions: + contents: read + deployments: write + name: Publish app to production + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4 + - run: corepack enable + - uses: actions/setup-node@v4 + with: + node-version: 22 + corepack: true + cache: 'pnpm' + + - name: Install dependencies + run: pnpm i + + - name: Build the app + run: pnpm -F @it-tools/app build + + - name: Publish to Cloudflare Pages + uses: AdrianGonz97/refined-cf-pages-action@v1 + with: + apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + githubToken: ${{ secrets.GITHUB_TOKEN }} + projectName: it-tools + workingDirectory: packages/app + directory: dist + deploymentName: Production App + branch: next + wranglerVersion: '3' + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 000000000..0d430986a --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# IT-Tools diff --git a/packages/app/package-lock.json b/packages/app/package-lock.json index 57d5a654c..18ea24f6a 100644 --- a/packages/app/package-lock.json +++ b/packages/app/package-lock.json @@ -8,7 +8,7 @@ "name": "@it-tools/app", "version": "0.0.0", "dependencies": { - "@corentinth/chisels": "^1.0.4", + "@corentinth/chisels": "^1.1.0", "@kobalte/core": "^0.13.6", "@solid-primitives/i18n": "^2.1.1", "@solid-primitives/storage": "^4.2.1", @@ -16,8 +16,10 @@ "@unocss/reset": "^0.62.4", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "cmdk-solid": "^1.1.0", "lodash-es": "^4.17.21", "solid-js": "^1.9.1", + "solid-sonner": "^0.2.8", "tailwind-merge": "^2.5.2" }, "devDependencies": { @@ -25,6 +27,7 @@ "@iconify-json/tabler": "^1.2.3", "@types/lodash-es": "^4.17.12", "eslint": "^9.11.1", + "hygen": "^6.2.11", "typescript": "^5.6.2", "unocss": "^0.62.4", "unocss-preset-animations": "^1.1.0", @@ -756,9 +759,9 @@ "link": true }, "node_modules/@corentinth/chisels": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@corentinth/chisels/-/chisels-1.0.4.tgz", - "integrity": "sha512-xFIh20+OC5u/GqLNtMfXdI+ZU7cu7E3kieys56OJC+SS6KfNAmF5nTQmi9axwYlCnc94cTlztGQsujGV5s1QqQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@corentinth/chisels/-/chisels-1.1.0.tgz", + "integrity": "sha512-l4qG6uXLKFWilt1Mnt5btCoCaIGVLiPOk95V6W3BPPJ9LE558tlet2EnU3z1gfSO7kqRTgkqLdcwwlzI9mMRNQ==", "license": "MIT", "dependencies": { "lodash-es": "^4.17.21" @@ -876,6 +879,18 @@ "solid-js": "^1.8.8" } }, + "node_modules/@solid-primitives/deep": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@solid-primitives/deep/-/deep-0.2.9.tgz", + "integrity": "sha512-jO8tYQ2BW4LKHLUpm/HcK6qqdH4vg1zmzHUnoUzspxZrKDqhqgBJTPl+vfmDqtt0hHCOhlEhEEV74+tCFyt3Mg==", + "license": "MIT", + "dependencies": { + "@solid-primitives/memo": "^1.3.9" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, "node_modules/@solid-primitives/event-listener": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@solid-primitives/event-listener/-/event-listener-2.3.3.tgz", @@ -933,6 +948,31 @@ "solid-js": "^1.6.12" } }, + "node_modules/@solid-primitives/memo": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@solid-primitives/memo/-/memo-1.3.9.tgz", + "integrity": "sha512-OIlGcsEPXr6U23fDaSEm8iqezWDT4SNSjLTekWQVOu4qHostnMPlqU8xo1Jf0I7OgRuqA0wTMQ5cu0bYjeR/ZQ==", + "license": "MIT", + "dependencies": { + "@solid-primitives/scheduled": "^1.4.3", + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, + "node_modules/@solid-primitives/mutation-observer": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/@solid-primitives/mutation-observer/-/mutation-observer-1.1.17.tgz", + "integrity": "sha512-01skkiHtNWl2PQ0ugFzZHBMsHk870+bZSNK8Gvjcj3mZwBzAJPaUPzFswfM/V8Io1Cko86vfXl73vl9ddRYb5A==", + "license": "MIT", + "dependencies": { + "@solid-primitives/utils": "^6.2.3" + }, + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, "node_modules/@solid-primitives/props": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/@solid-primitives/props/-/props-3.1.11.tgz", @@ -984,6 +1024,15 @@ "solid-js": "^1.6.12" } }, + "node_modules/@solid-primitives/scheduled": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@solid-primitives/scheduled/-/scheduled-1.4.3.tgz", + "integrity": "sha512-HfWN5w7b7FEc6VPLBKnnE302h90jsLMuR28Fcf7neRGGf8jBj6wm6/UFQ00VlKexHFMR6KQ2u4VBh5a1ZcqM8g==", + "license": "MIT", + "peerDependencies": { + "solid-js": "^1.6.12" + } + }, "node_modules/@solid-primitives/static-store": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/@solid-primitives/static-store/-/static-store-0.0.8.tgz", @@ -1055,6 +1104,13 @@ "resolved": "../../node_modules/.pnpm/@types+lodash-es@4.17.12/node_modules/@types/lodash-es", "link": true }, + "node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true, + "license": "MIT" + }, "node_modules/@unocss/reset": { "version": "0.62.4", "resolved": "https://registry.npmjs.org/@unocss/reset/-/reset-0.62.4.tgz", @@ -1064,6 +1120,190 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/change-case": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.1.0.tgz", + "integrity": "sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^3.0.0", + "constant-case": "^2.0.0", + "dot-case": "^2.1.0", + "header-case": "^1.0.0", + "is-lower-case": "^1.1.0", + "is-upper-case": "^1.1.0", + "lower-case": "^1.1.1", + "lower-case-first": "^1.0.0", + "no-case": "^2.3.2", + "param-case": "^2.1.0", + "pascal-case": "^2.0.0", + "path-case": "^2.1.0", + "sentence-case": "^2.1.0", + "snake-case": "^2.1.0", + "swap-case": "^1.1.0", + "title-case": "^2.1.0", + "upper-case": "^1.1.1", + "upper-case-first": "^1.1.0" + } + }, "node_modules/class-variance-authority": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", @@ -1085,6 +1325,42 @@ "node": ">=6" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -1094,81 +1370,1012 @@ "node": ">=6" } }, - "node_modules/eslint": { - "resolved": "../../node_modules/.pnpm/eslint@9.11.1_jiti@1.21.6/node_modules/eslint", - "link": true + "node_modules/cmdk-solid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cmdk-solid/-/cmdk-solid-1.1.0.tgz", + "integrity": "sha512-R8MRAWE2o8qnu0D8DOqGKoB1TMGI97mfSrH9CtgUQzcvZ+4jY2fvF6cxJS2N/iSwwl6LQeB/AYXh8GAGCPbkDQ==", + "license": "MIT", + "dependencies": { + "@kobalte/core": "^0.12.4", + "@kobalte/utils": "^0.9.0", + "@solid-primitives/deep": "^0.2.7", + "@solid-primitives/mutation-observer": "^1.1.17" + }, + "peerDependencies": { + "solid-js": "^1.8.0" + } }, - "node_modules/lodash-es": { - "resolved": "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es", - "link": true + "node_modules/cmdk-solid/node_modules/@kobalte/core": { + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@kobalte/core/-/core-0.12.6.tgz", + "integrity": "sha512-+Ta2o2wEqZ2fCqLMkvjT40VHNmcFKdGe8TNDVQbbMPk66qoU6g/DDRFR/Ib7eAjb+C95VoIyk6zaafos2VOo0w==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.5.1", + "@internationalized/date": "^3.4.0", + "@internationalized/number": "^3.2.1", + "@kobalte/utils": "^0.9.0", + "solid-prevent-scroll": "^0.1.4" + }, + "peerDependencies": { + "solid-js": "^1.8.15" + } }, - "node_modules/solid-js": { - "resolved": "../../node_modules/.pnpm/solid-js@1.9.1/node_modules/solid-js", - "link": true + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/solid-presence": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/solid-presence/-/solid-presence-0.1.8.tgz", - "integrity": "sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/constant-case": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", + "integrity": "sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==", + "dev": true, "license": "MIT", "dependencies": { - "@corvu/utils": "~0.4.0" + "snake-case": "^2.1.0", + "upper-case": "^1.1.1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "peerDependencies": { - "solid-js": "^1.8" + "engines": { + "node": ">= 8" } }, - "node_modules/solid-prevent-scroll": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/solid-prevent-scroll/-/solid-prevent-scroll-0.1.10.tgz", - "integrity": "sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw==", + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, "license": "MIT", "dependencies": { - "@corvu/utils": "~0.4.1" + "ms": "^2.1.3" }, - "peerDependencies": { - "solid-js": "^1.8" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/tailwind-merge": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", - "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "license": "0BSD" + "node_modules/degit": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/degit/-/degit-2.8.4.tgz", + "integrity": "sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==", + "dev": true, + "license": "MIT", + "bin": { + "degit": "degit" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/typescript": { - "resolved": "../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript", - "link": true + "node_modules/dot-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", + "integrity": "sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } }, - "node_modules/unocss": { - "resolved": "../../node_modules/.pnpm/unocss@0.62.4_postcss@8.4.47_rollup@4.22.5_vite@5.4.8/node_modules/unocss", - "link": true + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/unocss-preset-animations": { - "resolved": "../../node_modules/.pnpm/unocss-preset-animations@1.1.0_@unocss+preset-wind@0.62.4_unocss@0.62.4_postcss@8.4.47_rollup@4.22.5_vite@5.4.8_/node_modules/unocss-preset-animations", - "link": true + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } }, - "node_modules/vite": { - "resolved": "../../node_modules/.pnpm/vite@5.4.8/node_modules/vite", + "node_modules/eslint": { + "resolved": "../../node_modules/.pnpm/eslint@9.11.1_jiti@1.21.6/node_modules/eslint", "link": true }, - "node_modules/vite-plugin-solid": { - "resolved": "../../node_modules/.pnpm/vite-plugin-solid@2.10.2_solid-js@1.9.1_vite@5.4.8/node_modules/vite-plugin-solid", - "link": true + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "node_modules/vitest": { - "resolved": "../../node_modules/.pnpm/vitest@2.1.1_jsdom@25.0.1/node_modules/vitest", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/header-case": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", + "integrity": "sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.1.3" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/hygen": { + "version": "6.2.11", + "resolved": "https://registry.npmjs.org/hygen/-/hygen-6.2.11.tgz", + "integrity": "sha512-t6/zLI2XozP5gvV74nnl8LZSbwpVNFUkUs/O9DwuOdiiBbws5k4AQNVwKZ9FGzcKjdJ5EBBYkVzlcUHkLyY0FQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^17.0.19", + "chalk": "^4.1.2", + "change-case": "^3.1.0", + "debug": "^4.3.3", + "degit": "^2.8.4", + "ejs": "^3.1.6", + "enquirer": "^2.3.6", + "execa": "^5.0.0", + "front-matter": "^4.0.2", + "fs-extra": "^10.0.0", + "ignore-walk": "^4.0.1", + "inflection": "^1.12.0", + "ora": "^5.0.0", + "yargs-parser": "^21.0.0" + }, + "bin": { + "hygen": "dist/bin.js" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore-walk": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-4.0.1.tgz", + "integrity": "sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==", + "dev": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/inflection": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.13.4.tgz", + "integrity": "sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==", + "dev": true, + "engines": [ + "node >= 0.4.0" + ], + "license": "MIT" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lower-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", + "integrity": "sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-upper-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", + "integrity": "sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "upper-case": "^1.1.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lodash-es": { + "resolved": "../../node_modules/.pnpm/lodash-es@4.17.21/node_modules/lodash-es", + "link": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lower-case-first": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", + "integrity": "sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.2" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true, + "license": "MIT" + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.1" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/pascal-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", + "integrity": "sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "camel-case": "^3.0.0", + "upper-case-first": "^1.1.0" + } + }, + "node_modules/path-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", + "integrity": "sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sentence-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", + "integrity": "sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case-first": "^1.1.2" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/snake-case": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", + "integrity": "sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0" + } + }, + "node_modules/solid-js": { + "resolved": "../../node_modules/.pnpm/solid-js@1.9.1/node_modules/solid-js", + "link": true + }, + "node_modules/solid-presence": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/solid-presence/-/solid-presence-0.1.8.tgz", + "integrity": "sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA==", + "license": "MIT", + "dependencies": { + "@corvu/utils": "~0.4.0" + }, + "peerDependencies": { + "solid-js": "^1.8" + } + }, + "node_modules/solid-prevent-scroll": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/solid-prevent-scroll/-/solid-prevent-scroll-0.1.10.tgz", + "integrity": "sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw==", + "license": "MIT", + "dependencies": { + "@corvu/utils": "~0.4.1" + }, + "peerDependencies": { + "solid-js": "^1.8" + } + }, + "node_modules/solid-sonner": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/solid-sonner/-/solid-sonner-0.2.8.tgz", + "integrity": "sha512-EQ2EIznvHHpAmkYh2CTu0AdCgmPJRJWLGFRWygE8j+vMEfvIV2wotHU5qgWzqzVTG1SODGsay2Lwq6ENWx/rPA==", + "license": "MIT", + "peerDependencies": { + "solid-js": "^1.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/swap-case": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", + "integrity": "sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "lower-case": "^1.1.1", + "upper-case": "^1.1.1" + } + }, + "node_modules/tailwind-merge": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", + "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/title-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", + "integrity": "sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "no-case": "^2.2.0", + "upper-case": "^1.0.3" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/typescript": { + "resolved": "../../node_modules/.pnpm/typescript@5.6.2/node_modules/typescript", "link": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unocss": { + "resolved": "../../node_modules/.pnpm/unocss@0.62.4_postcss@8.4.47_rollup@4.22.5_vite@5.4.8/node_modules/unocss", + "link": true + }, + "node_modules/unocss-preset-animations": { + "resolved": "../../node_modules/.pnpm/unocss-preset-animations@1.1.0_@unocss+preset-wind@0.62.4_unocss@0.62.4_postcss@8.4.47_rollup@4.22.5_vite@5.4.8_/node_modules/unocss-preset-animations", + "link": true + }, + "node_modules/upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==", + "dev": true, + "license": "MIT" + }, + "node_modules/upper-case-first": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", + "integrity": "sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "upper-case": "^1.1.1" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/vite": { + "resolved": "../../node_modules/.pnpm/vite@5.4.8/node_modules/vite", + "link": true + }, + "node_modules/vite-plugin-solid": { + "resolved": "../../node_modules/.pnpm/vite-plugin-solid@2.10.2_solid-js@1.9.1_vite@5.4.8/node_modules/vite-plugin-solid", + "link": true + }, + "node_modules/vitest": { + "resolved": "../../node_modules/.pnpm/vitest@2.1.1_jsdom@25.0.1/node_modules/vitest", + "link": true + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } } } } diff --git a/packages/app/package.json b/packages/app/package.json index e1d6c07fe..7633fc072 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -19,10 +19,11 @@ "typecheck": "tsc --noEmit", "test": "pnpm run test:unit", "test:unit": "vitest run", - "test:unit:watch": "vitest watch" + "test:unit:watch": "vitest watch", + "create:tool": "HYGEN_TMPLS=templates hygen tools new" }, "dependencies": { - "@corentinth/chisels": "^1.0.4", + "@corentinth/chisels": "^1.1.0", "@kobalte/core": "^0.13.6", "@solid-primitives/i18n": "^2.1.1", "@solid-primitives/storage": "^4.2.1", @@ -30,20 +31,24 @@ "@unocss/reset": "^0.62.4", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "cmdk-solid": "^1.1.0", "lodash-es": "^4.17.21", "solid-js": "^1.9.1", + "solid-sonner": "^0.2.8", "tailwind-merge": "^2.5.2" }, "devDependencies": { "@antfu/eslint-config": "^3.7.3", "@iconify-json/tabler": "^1.2.3", "@types/lodash-es": "^4.17.12", + "@vitest/coverage-v8": "2.1.2", "eslint": "^9.11.1", + "hygen": "^6.2.11", "typescript": "^5.6.2", "unocss": "^0.62.4", "unocss-preset-animations": "^1.1.0", "vite": "^5.4.8", "vite-plugin-solid": "^2.10.2", - "vitest": "^2.1.1" + "vitest": "^2.1.2" } } diff --git a/packages/app/public/robots.txt b/packages/app/public/robots.txt new file mode 100644 index 000000000..6f27bb66a --- /dev/null +++ b/packages/app/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: \ No newline at end of file diff --git a/packages/app/src/client-routes.tsx b/packages/app/src/client-routes.tsx index 3b17ec2f6..734e805a0 100644 --- a/packages/app/src/client-routes.tsx +++ b/packages/app/src/client-routes.tsx @@ -1,8 +1,7 @@ import type { LocaleKey } from './modules/i18n/i18n.types'; import { A, Navigate, type RouteDefinition, useParams } from '@solidjs/router'; -import { map } from 'lodash-es'; -import { localeKeys, locales } from './modules/i18n/i18n.constants'; -import { getBrowserLocale, useI18n } from './modules/i18n/i18n.provider'; +import { localeKeys } from './modules/i18n/i18n.constants'; +import { useI18n } from './modules/i18n/i18n.provider'; import { HomePage } from './modules/pages/home.page'; import { ToolPage } from './modules/tools/pages/tool.page'; import { toolSlugs } from './modules/tools/tools.registry'; diff --git a/packages/app/src/client.tsx b/packages/app/src/client.tsx index e30c95142..bc621cb9e 100644 --- a/packages/app/src/client.tsx +++ b/packages/app/src/client.tsx @@ -4,7 +4,9 @@ import { ColorModeProvider, ColorModeScript, createLocalStorageManager } from '@ import { Router } from '@solidjs/router'; import { render, Suspense } from 'solid-js/web'; import { routes } from './client-routes'; +import { CommandPaletteProvider } from './modules/command-palette/command-palette.provider'; import { RootI18nProvider } from './modules/i18n/i18n.provider'; +import { Toaster } from './modules/ui/components/sonner'; import '@unocss/reset/tailwind.css'; import 'virtual:uno.css'; import './app.css'; @@ -26,7 +28,10 @@ render( initialColorMode={initialColorMode} storageManager={localStorageManager} > -
{props.children}
+ + +
{props.children}
+
diff --git a/packages/app/src/locales/en.json b/packages/app/src/locales/en.json index ae75d14be..6f12d2d95 100644 --- a/packages/app/src/locales/en.json +++ b/packages/app/src/locales/en.json @@ -16,8 +16,46 @@ "support": "Support IT-Tools", "report-bug": "Report a bug" }, + "footer": { + "resources": { + "title": "Resources", + "all-tools": "All the tools", + "github": "GitHub repository", + "support": "Support IT-Tools", + "license": "License" + }, + "support": { + "title": "Support", + "report-bug": "Report a bug", + "request-feature": "Request a feature", + "contribute": "Contribute to the project", + "contact": "Contact me" + }, + "friends": { + "title": "Friends" + } + }, + "commandPalette": { + "input-placeholder": "Type to search for a tool or a command...", + "go-home": "Go to home", + "sections": { + "tools": "Tools", + "navigation": "Navigation", + "language": "Language", + "theme": "Theme" + }, + "theme": { + "switch-to-light": "Switch to light theme", + "switch-to-dark": "Switch to dark theme", + "switch-to-system": "Use to system theme" + }, + "trigger": { + "search": "Search for a tool" + } + }, "home": { "all-tools": "All the tools", + "search-tools": "Search for a tool", "open-source": "Open Source", "free": "Free", "self-hostable": "Self-hostable" @@ -26,6 +64,10 @@ "token-generator": { "name": "Token Generator", "description": "Generate random string with the characters you want, uppercase, lowercase letters, numbers and/or symbols." + }, + "random-port-generator": { + "name": "Random Port Generator", + "description": "Generate a random port number outside of the reserved ports range (0-1023)." } } } diff --git a/packages/app/src/locales/fr.json b/packages/app/src/locales/fr.json index a1bd1b8ce..6f0616e0f 100644 --- a/packages/app/src/locales/fr.json +++ b/packages/app/src/locales/fr.json @@ -2,5 +2,58 @@ "app": { "title": "IT-Tools", "description": "La collection open-source d'outils en ligne pour aider les devs dans leur vie quotidienne." + }, + "navbar": { + "theme": { + "theme": "Thème", + "light-mode": "Mode clair", + "dark-mode": "Mode sombre", + "system-mode": "Système" + }, + "language": "Langue", + "contribute-to-i18n": "Contribuer à l'i18n", + "github": "GitHub", + "support": "Soutenir IT-Tools", + "report-bug": "Signaler un bug" + }, + "footer": { + "resources": { + "title": "Ressources", + "all-tools": "Tous les outils", + "github": "Dépôt GitHub", + "support": "Soutenir IT-Tools", + "license": "Licence" + }, + "support": { + "title": "Support", + "report-bug": "Signaler un bug", + "request-feature": "Demander une fonctionnalité", + "contribute": "Contribuer au projet", + "contact": "Me contacter" + }, + "friends": { + "title": "Ami·e·s" + } + }, + "commandPalette": { + "input-placeholder": "Tapez pour rechercher un outil...", + "go-home": "Aller à l'accueil", + "sections": { + "tools": "Outils", + "navigation": "Navigation", + "theme": "Thème" + } + }, + "home": { + "all-tools": "Tous les outils", + "open-source": "Open Source", + "free": "Gratuit", + "self-hostable": "Self-hostable" + }, + "tools": { + "token-generator": { + "name": "Générateur de token", + "description": "Générer des string aléatoires, contrôlez les caractères que vous voulez, lettres majuscules, minuscules, chiffres et/ou symboles." + } } } diff --git a/packages/app/src/modules/command-palette/command-palette.provider.tsx b/packages/app/src/modules/command-palette/command-palette.provider.tsx new file mode 100644 index 000000000..97ddec2c5 --- /dev/null +++ b/packages/app/src/modules/command-palette/command-palette.provider.tsx @@ -0,0 +1,144 @@ +import type { Accessor, ParentComponent } from 'solid-js'; +import { useNavigate } from '@solidjs/router'; +import { createContext, createMemo, createSignal, For, onCleanup, onMount, useContext } from 'solid-js'; +import { locales } from '../i18n/i18n.constants'; +import { useI18n } from '../i18n/i18n.provider'; +import { useToolsStore } from '../tools/tools.store'; +import { CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from '../ui/components/command'; +import { useThemeStore } from '../ui/themes/theme.store'; +import { cn } from '../ui/utils/cn'; + +const CommandPaletteContext = createContext<{ + getIsCommandPaletteOpen: Accessor; + openCommandPalette: () => void; + closeCommandPalette: () => void; +}>(); + +export function useCommandPalette() { + const context = useContext(CommandPaletteContext); + + if (!context) { + throw new Error('CommandPalette context not found'); + } + + return context; +} + +export const CommandPaletteProvider: ParentComponent = (props) => { + const [getIsCommandPaletteOpen, setIsCommandPaletteOpen] = createSignal(false); + + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'k' && (e.metaKey || e.ctrlKey)) { + e.preventDefault(); + setIsCommandPaletteOpen(true); + } + }; + + onMount(() => { + document.addEventListener('keydown', handleKeyDown); + }); + + onCleanup(() => { + document.removeEventListener('keydown', handleKeyDown); + }); + + const { getTools } = useToolsStore(); + const navigate = useNavigate(); + const { t, createLocalizedUrl, changeLocale } = useI18n(); + const { setColorMode } = useThemeStore(); + + const getCommandData = createMemo(() => [ + { + label: t('commandPalette.sections.tools'), + options: [ + ...getTools().map(tool => ({ + label: tool.name, + icon: tool.icon, + action: () => navigate(createLocalizedUrl({ path: tool.slug })), + })), + ], + }, + { + label: t('commandPalette.sections.navigation'), + options: [ + { + label: t('commandPalette.go-home'), + icon: 'i-tabler-home', + action: () => navigate(createLocalizedUrl({ path: '' })), + }, + ], + }, + { + label: t('commandPalette.sections.language'), + options: [ + ...locales.map(locale => ({ + label: locale.switchToLabel, + icon: 'i-custom-language', + action: () => changeLocale(locale.key), + keywords: [locale.name, locale.key], + })), + ], + }, + { + label: t('commandPalette.sections.theme'), + options: [ + { + label: t('commandPalette.theme.switch-to-light'), + icon: 'i-tabler-sun', + action: () => setColorMode({ mode: 'light' }), + }, + { + label: t('commandPalette.theme.switch-to-dark'), + icon: 'i-tabler-moon', + action: () => setColorMode({ mode: 'dark' }), + }, + { + label: t('commandPalette.theme.switch-to-system'), + icon: 'i-tabler-device-laptop', + action: () => setColorMode({ mode: 'system' }), + }, + ], + }, + ]); + + const onCommandSelect = ({ action }: { action: () => void }) => { + action(); + setIsCommandPaletteOpen(false); + }; + + return ( + setIsCommandPaletteOpen(true), + closeCommandPalette: () => setIsCommandPaletteOpen(false), + }} + > + + + + No results found. + + {section => ( + + + {item => ( + onCommandSelect(item)}> + + {item.label} + + )} + + + )} + + + + + {props.children} + + ); +}; diff --git a/packages/app/src/modules/i18n/i18n.constants.ts b/packages/app/src/modules/i18n/i18n.constants.ts index b0c46e53e..e25ab7a12 100644 --- a/packages/app/src/modules/i18n/i18n.constants.ts +++ b/packages/app/src/modules/i18n/i18n.constants.ts @@ -5,11 +5,13 @@ export const locales = [ key: 'en', file: 'en', name: 'English', + switchToLabel: 'Change language to English', }, { key: 'fr', file: 'fr', name: 'Français', + switchToLabel: 'Changer la langue en Français', }, ] as const; diff --git a/packages/app/src/modules/i18n/i18n.provider.tsx b/packages/app/src/modules/i18n/i18n.provider.tsx index 325c005a2..f05a61213 100644 --- a/packages/app/src/modules/i18n/i18n.provider.tsx +++ b/packages/app/src/modules/i18n/i18n.provider.tsx @@ -1,7 +1,9 @@ import type { ParentComponent } from 'solid-js'; import type { LocaleKey } from './i18n.types'; +import { joinUrlPaths } from '@corentinth/chisels'; import * as i18n from '@solid-primitives/i18n'; import { makePersisted } from '@solid-primitives/storage'; +import { useNavigate } from '@solidjs/router'; import { merge } from 'lodash-es'; import { createContext, createResource, createSignal, Show, useContext } from 'solid-js'; import defaultDict from '../../locales/en.json'; @@ -23,6 +25,7 @@ const RootI18nContext = createContext<{ function useI18n() { const context = useContext(RootI18nContext); + const navigate = useNavigate(); if (!context) { throw new Error('I18n context not found'); @@ -35,6 +38,18 @@ function useI18n() { getLocale, setLocale, locales, + createLocalizedUrl: ({ path }: { path: string }) => { + const newPath = joinUrlPaths(getLocale(), path); + + return `/${newPath}`; + }, + changeLocale: (locale: LocaleKey) => { + setLocale(locale); + + const pathWithoutLocale = location.pathname.split('/').slice(2).join('/'); + const newPath = joinUrlPaths(locale, pathWithoutLocale); + navigate(`/${newPath}`); + }, }; } diff --git a/packages/app/src/modules/i18n/i18n.types.ts b/packages/app/src/modules/i18n/i18n.types.ts index c4f46d070..1004bb519 100644 --- a/packages/app/src/modules/i18n/i18n.types.ts +++ b/packages/app/src/modules/i18n/i18n.types.ts @@ -1,5 +1,3 @@ import type { locales } from './i18n.constants'; export type LocaleKey = typeof locales[number]['key']; - - diff --git a/packages/app/src/modules/pages/home.page.tsx b/packages/app/src/modules/pages/home.page.tsx index 725e20037..5b28c4e36 100644 --- a/packages/app/src/modules/pages/home.page.tsx +++ b/packages/app/src/modules/pages/home.page.tsx @@ -1,15 +1,17 @@ import type { Component } from 'solid-js'; import { A } from '@solidjs/router'; +import { useCommandPalette } from '../command-palette/command-palette.provider'; import { useI18n } from '../i18n/i18n.provider'; import { useToolsStore } from '../tools/tools.store'; import { Badge } from '../ui/components/badge'; import { Button } from '../ui/components/button'; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/components/card'; +import { Card, CardDescription, CardHeader, CardTitle } from '../ui/components/card'; import { cn } from '../ui/utils/cn'; export const HomePage: Component = () => { const { t } = useI18n(); - const { tools } = useToolsStore(); + const { getTools } = useToolsStore(); + const { openCommandPalette } = useCommandPalette(); return (
@@ -39,11 +41,16 @@ export const HomePage: Component = () => { {t('app.description')}

-
+
+ +
@@ -57,9 +64,9 @@ export const HomePage: Component = () => {
- {tools.map(tool => ( - - + {getTools().map(tool => ( + +
diff --git a/packages/app/src/modules/shared/copy/copy-button.tsx b/packages/app/src/modules/shared/copy/copy-button.tsx new file mode 100644 index 000000000..36b79c8bd --- /dev/null +++ b/packages/app/src/modules/shared/copy/copy-button.tsx @@ -0,0 +1,37 @@ +import type { Accessor, Component, ComponentProps } from 'solid-js'; +import { Button } from '@/modules/ui/components/button'; +import { omit } from 'lodash-es'; +import { Show, splitProps } from 'solid-js'; +import { useCopy } from './copy'; + +export const CopyButton: Component<{ textToCopy: Accessor; toastMessage?: string } & ComponentProps> = (props) => { + const [localProps, buttonProps] = splitProps(props, ['textToCopy', 'toastMessage']); + const { copy, getIsJustCopied } = useCopy(localProps.textToCopy, { toastMessage: localProps.toastMessage }); + + return ( + + ); +}; diff --git a/packages/app/src/modules/shared/copy/copy.ts b/packages/app/src/modules/shared/copy/copy.ts new file mode 100644 index 000000000..0fc0815c8 --- /dev/null +++ b/packages/app/src/modules/shared/copy/copy.ts @@ -0,0 +1,23 @@ +import type { Accessor } from 'solid-js'; +import { createSignal } from 'solid-js'; +import { toast } from '../../ui/components/sonner'; + +export { useCopy, writeTextToClipboard }; + +function writeTextToClipboard({ text }: { text: string }) { + return navigator.clipboard.writeText(text); +} + +function useCopy(getText: Accessor, { toastMessage = 'Copied to clipboard' }: { toastMessage?: string } = {}) { + const [getIsJustCopied, setIsJustCopied] = createSignal(false); + + return { + getIsJustCopied, + copy: () => { + writeTextToClipboard({ text: String(getText()) }); + setIsJustCopied(true); + setTimeout(() => setIsJustCopied(false), 2000); + toast(toastMessage); + }, + }; +} diff --git a/packages/app/src/modules/shared/signals.test.ts b/packages/app/src/modules/shared/signals.test.ts new file mode 100644 index 000000000..783c443be --- /dev/null +++ b/packages/app/src/modules/shared/signals.test.ts @@ -0,0 +1,33 @@ +import { describe, expect, test } from 'vitest'; +import { createRefreshableSignal } from './signals'; + +describe('signals', () => { + describe('createRefreshableSignal', () => { + test('the state initially has the value returned by the getter', () => { + const [getState] = createRefreshableSignal(() => 42); + expect(getState()).to.eql(42); + }); + + test('calling the refresh function updates the state', () => { + let value = 0; + const [getState, refresh] = createRefreshableSignal(() => value++); + + expect(getState()).to.eql(0); + + refresh(); + + expect(getState()).to.eql(1); + expect(getState()).to.eql(1); + }); + + test('the state can be muted using the setState function', () => { + const [getState, , { setState }] = createRefreshableSignal(() => 0); + + expect(getState()).to.eql(0); + + setState(42); + + expect(getState()).to.eql(42); + }); + }); +}); diff --git a/packages/app/src/modules/shared/signals.ts b/packages/app/src/modules/shared/signals.ts new file mode 100644 index 000000000..5d216c72a --- /dev/null +++ b/packages/app/src/modules/shared/signals.ts @@ -0,0 +1,13 @@ +import { createSignal } from 'solid-js'; + +export { createRefreshableSignal }; + +function createRefreshableSignal(getValue: () => T) { + const [getState, setState] = createSignal(getValue()); + + return [ + getState, + () => setState(() => getValue()), + { setState }, + ] as const; +} diff --git a/packages/app/src/modules/tools/definitions/random-port-generator/locales/en.json b/packages/app/src/modules/tools/definitions/random-port-generator/locales/en.json new file mode 100644 index 000000000..d75ac18dd --- /dev/null +++ b/packages/app/src/modules/tools/definitions/random-port-generator/locales/en.json @@ -0,0 +1,6 @@ +{ + "name": "Random Port Generator", + "description": "Generate a random port number outside of the reserved ports range (0-1023).", + "refresh": "Refresh port", + "copy-toast": "Port copied to clipboard" +} diff --git a/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.page.tsx b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.page.tsx new file mode 100644 index 000000000..b2eca19cc --- /dev/null +++ b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.page.tsx @@ -0,0 +1,31 @@ +import type { Component } from 'solid-js'; +import { CopyButton } from '@/modules/shared/copy/copy-button'; +import { createRefreshableSignal } from '@/modules/shared/signals'; +import { Button } from '@/modules/ui/components/button'; +import { useCurrentTool } from '../../tools.provider'; +import defaultDictionary from './locales/en.json'; +import { generateRandomPort } from './random-port-generator.services'; + +const RandomPortGenerator: Component = () => { + const [getPort, refreshPort] = createRefreshableSignal(generateRandomPort); + const { t } = useCurrentTool({ defaultDictionary }); + + return ( +
+
+ {getPort()} +
+ +
+ + + +
+
+ ); +}; + +export default RandomPortGenerator; diff --git a/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.services.ts b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.services.ts new file mode 100644 index 000000000..333a34cb8 --- /dev/null +++ b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.services.ts @@ -0,0 +1,5 @@ +import { random } from 'lodash-es'; + +export function generateRandomPort() { + return random(1024, 65535); +} diff --git a/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.tool.ts b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.tool.ts new file mode 100644 index 000000000..e2dda2c8b --- /dev/null +++ b/packages/app/src/modules/tools/definitions/random-port-generator/random-port-generator.tool.ts @@ -0,0 +1,9 @@ +import { defineTool } from '../../tools.models'; + +export const randomPortGeneratorTool = defineTool({ + slug: 'random-port-generator', + entryFile: () => import('./random-port-generator.page'), + icon: 'i-tabler-server', + createdAt: new Date('2024-10-03'), + dirName: 'random-port-generator', +}); diff --git a/packages/app/src/modules/tools/definitions/token-generator/locales/en.json b/packages/app/src/modules/tools/definitions/token-generator/locales/en.json index a19810e44..e03025018 100644 --- a/packages/app/src/modules/tools/definitions/token-generator/locales/en.json +++ b/packages/app/src/modules/tools/definitions/token-generator/locales/en.json @@ -1,4 +1,6 @@ { + "name": "Token Generator", + "description": "Generate random string with the characters you want, uppercase, lowercase letters, numbers and/or symbols.", "uppercase": "Uppercase letters (A-Z)", "lowercase": "Lowercase letters (a-z)", "numbers": "Numbers (0-9)", diff --git a/packages/app/src/modules/tools/definitions/token-generator/locales/fr.json b/packages/app/src/modules/tools/definitions/token-generator/locales/fr.json index cf68c7518..b48f11cc0 100644 --- a/packages/app/src/modules/tools/definitions/token-generator/locales/fr.json +++ b/packages/app/src/modules/tools/definitions/token-generator/locales/fr.json @@ -1,4 +1,6 @@ { + "name": "Générateur de token", + "description": "Génère une chaîne de caractères aléatoire, contrôlez les caractères que vous voulez, lettres majuscules, minuscules, chiffres et/ou symboles.", "uppercase": "Lettres majuscules (A-Z)", "lowercase": "Lettres minuscules (a-z)", "numbers": "Chiffres (0-9)", diff --git a/packages/app/src/modules/tools/definitions/token-generator/token-generator.tool.ts b/packages/app/src/modules/tools/definitions/token-generator/token-generator.tool.ts index 5a11e0d1b..490562dbe 100644 --- a/packages/app/src/modules/tools/definitions/token-generator/token-generator.tool.ts +++ b/packages/app/src/modules/tools/definitions/token-generator/token-generator.tool.ts @@ -5,5 +5,5 @@ export const tokenGeneratorTool = defineTool({ entryFile: () => import('./token-generator.page'), icon: 'i-tabler-key', createdAt: new Date('2024-02-13'), - currentDirUrl: import.meta.url, + dirName: 'token-generator', }); diff --git a/packages/app/src/modules/tools/pages/tool.page.tsx b/packages/app/src/modules/tools/pages/tool.page.tsx index 5a2287bac..fdc9e59e4 100644 --- a/packages/app/src/modules/tools/pages/tool.page.tsx +++ b/packages/app/src/modules/tools/pages/tool.page.tsx @@ -1,12 +1,7 @@ -import type { LocaleKey } from '@/modules/i18n/i18n.types'; -import type { Flatten } from '@solid-primitives/i18n'; -import type { ToolI18nFactory } from '../tools.types'; import { useI18n } from '@/modules/i18n/i18n.provider'; import { safely } from '@corentinth/chisels'; -import { flatten, translator } from '@solid-primitives/i18n'; import { useParams } from '@solidjs/router'; -import { merge } from 'lodash-es'; -import { type Component, createContext, createResource, lazy, Show } from 'solid-js'; +import { type Component, createResource, lazy, Show } from 'solid-js'; import { CurrentToolProvider } from '../tools.provider'; import { getToolDefinitionBySlug } from '../tools.registry'; @@ -18,9 +13,13 @@ export const ToolPage: Component = () => { const ToolComponent = lazy(toolDefinition.entryFile); const [toolDict] = createResource(getLocale, async (locale) => { - const [dict = { default: {} }] = await safely(import(`../definitions/${toolDefinition.dirName}/locales/${locale}.json`)); + const [dict, error] = await safely(import(`../definitions/${toolDefinition.dirName}/locales/${locale}.json`)); - return dict; + if (error) { + console.error(error); + } + + return dict ?? { default: {} }; }); return ( diff --git a/packages/app/src/modules/tools/tools.models.ts b/packages/app/src/modules/tools/tools.models.ts index 9fa5bdb04..2b645e4cb 100644 --- a/packages/app/src/modules/tools/tools.models.ts +++ b/packages/app/src/modules/tools/tools.models.ts @@ -5,13 +5,12 @@ export { defineTool }; function defineTool(toolDefinition: { slug: string; entryFile: () => Promise<{ default: Component }>; - currentDirUrl: string; + dirName: string; icon: string; createdAt: Date; }) { return { ...toolDefinition, key: toolDefinition.slug, - dirName: toolDefinition.currentDirUrl.split('/').slice(-2)[0], }; } diff --git a/packages/app/src/modules/tools/tools.provider.tsx b/packages/app/src/modules/tools/tools.provider.tsx index 50f4ab3cd..2667fcf26 100644 --- a/packages/app/src/modules/tools/tools.provider.tsx +++ b/packages/app/src/modules/tools/tools.provider.tsx @@ -1,6 +1,5 @@ import type { Accessor, ParentComponent } from 'solid-js'; -import type { ToolI18nFactory } from './tools.types'; -import { flatten, type Flatten, translator, type Translator } from '@solid-primitives/i18n'; +import { flatten, translator } from '@solid-primitives/i18n'; import { merge } from 'lodash-es'; import { createContext, useContext } from 'solid-js'; diff --git a/packages/app/src/modules/tools/tools.registry.ts b/packages/app/src/modules/tools/tools.registry.ts index 969954a1f..25ef85046 100644 --- a/packages/app/src/modules/tools/tools.registry.ts +++ b/packages/app/src/modules/tools/tools.registry.ts @@ -1,8 +1,10 @@ import { keyBy, map } from 'lodash-es'; +import { randomPortGeneratorTool } from './definitions/random-port-generator/random-port-generator.tool'; import { tokenGeneratorTool } from './definitions/token-generator/token-generator.tool'; export const toolDefinitions = [ tokenGeneratorTool, + randomPortGeneratorTool, ]; export const toolSlugs = map(toolDefinitions, 'slug'); diff --git a/packages/app/src/modules/tools/tools.store.ts b/packages/app/src/modules/tools/tools.store.ts index 1723c3a0c..eac5153f6 100644 --- a/packages/app/src/modules/tools/tools.store.ts +++ b/packages/app/src/modules/tools/tools.store.ts @@ -1,3 +1,4 @@ +import { createMemo } from 'solid-js'; import { useI18n } from '../i18n/i18n.provider'; import { toolDefinitions } from './tools.registry'; @@ -6,13 +7,13 @@ export { useToolsStore }; function useToolsStore() { const { t } = useI18n(); - const tools = toolDefinitions.map((tool) => { + const getTools = createMemo(() => toolDefinitions.map((tool) => { return { ...tool, name: t(`tools.${tool.slug}.name` as any) ?? tool.slug, description: t(`tools.${tool.slug}.description` as any) ?? tool.slug, }; - }); + })); - return { tools }; + return { getTools }; } diff --git a/packages/app/src/modules/ui/components/badge.tsx b/packages/app/src/modules/ui/components/badge.tsx index e4cab87cc..47154444b 100644 --- a/packages/app/src/modules/ui/components/badge.tsx +++ b/packages/app/src/modules/ui/components/badge.tsx @@ -1,42 +1,37 @@ -import { cn } from "@/modules/ui/utils/cn"; -import type { VariantProps } from "class-variance-authority"; -import { cva } from "class-variance-authority"; -import { type ComponentProps, splitProps } from "solid-js"; +import type { VariantProps } from 'class-variance-authority'; +import { cn } from '@/modules/ui/utils/cn'; +import { cva } from 'class-variance-authority'; +import { type ComponentProps, splitProps } from 'solid-js'; export const badgeVariants = cva( - "inline-flex items-center rounded-md px-2.5 py-0.5 text-xs font-semibold transition-shadow focus-visible:(outline-none ring-1.5 ring-ring)", - { - variants: { - variant: { - default: - "bg-primary text-primary-foreground shadow hover:bg-primary/80", - secondary: - "bg-secondary text-secondary-foreground hover:bg-secondary/80", - destructive: - "bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", - outline: "border text-foreground", - }, - }, - defaultVariants: { - variant: "default", - }, - }, + 'inline-flex items-center rounded-md px-2.5 py-0.5 text-xs font-semibold transition-shadow focus-visible:(outline-none ring-1.5 ring-ring)', + { + variants: { + variant: { + default: 'bg-primary text-primary-foreground shadow hover:bg-primary/80', + secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', + destructive: 'bg-destructive text-destructive-foreground shadow hover:bg-destructive/80', + outline: 'border text-foreground', + }, + }, + defaultVariants: { + variant: 'default', + }, + }, ); -export const Badge = ( - props: ComponentProps<"div"> & VariantProps, -) => { - const [local, rest] = splitProps(props, ["class", "variant"]); +export function Badge(props: ComponentProps<'div'> & VariantProps) { + const [local, rest] = splitProps(props, ['class', 'variant']); - return ( -
- ); -}; + return ( +
+ ); +} diff --git a/packages/app/src/modules/ui/components/card.tsx b/packages/app/src/modules/ui/components/card.tsx index da7c1bc66..d3c0bf8ac 100644 --- a/packages/app/src/modules/ui/components/card.tsx +++ b/packages/app/src/modules/ui/components/card.tsx @@ -1,60 +1,60 @@ -import { cn } from "@/modules/ui/utils/cn"; -import type { ComponentProps, ParentComponent } from "solid-js"; -import { splitProps } from "solid-js"; - -export const Card = (props: ComponentProps<"div">) => { - const [local, rest] = splitProps(props, ["class"]); - - return ( -
- ); +import type { ComponentProps, ParentComponent } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { splitProps } from 'solid-js'; + +export function Card(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( +
+ ); +} + +export function CardHeader(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( +
+ ); +} + +export const CardTitle: ParentComponent> = (props) => { + const [local, rest] = splitProps(props, ['class']); + + return ( +

+ ); }; -export const CardHeader = (props: ComponentProps<"div">) => { - const [local, rest] = splitProps(props, ["class"]); - - return ( -
- ); -}; - -export const CardTitle: ParentComponent> = (props) => { - const [local, rest] = splitProps(props, ["class"]); - - return ( -

- ); -}; - -export const CardDescription: ParentComponent> = ( - props, +export const CardDescription: ParentComponent> = ( + props, ) => { - const [local, rest] = splitProps(props, ["class"]); + const [local, rest] = splitProps(props, ['class']); - return ( -

- ); + return ( +

+ ); }; -export const CardContent = (props: ComponentProps<"div">) => { - const [local, rest] = splitProps(props, ["class"]); +export function CardContent(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); - return
; -}; + return
; +} -export const CardFooter = (props: ComponentProps<"div">) => { - const [local, rest] = splitProps(props, ["class"]); +export function CardFooter(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); - return ( -
- ); -}; + return ( +
+ ); +} diff --git a/packages/app/src/modules/ui/components/command.tsx b/packages/app/src/modules/ui/components/command.tsx new file mode 100644 index 000000000..bff02f5ff --- /dev/null +++ b/packages/app/src/modules/ui/components/command.tsx @@ -0,0 +1,151 @@ +import type { + CommandDialogProps, + CommandEmptyProps, + CommandGroupProps, + CommandInputProps, + CommandItemProps, + CommandListProps, + CommandRootProps, +} from 'cmdk-solid'; +import type { ComponentProps, VoidProps } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { Command as CommandPrimitive } from 'cmdk-solid'; +import { splitProps } from 'solid-js'; +import { Dialog, DialogContent } from './dialog'; + +export function Command(props: CommandRootProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandList(props: CommandListProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandInput(props: VoidProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( +
+ + + Search + + +
+ ); +} + +export function CommandItem(props: CommandItemProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandShortcut(props: ComponentProps<'span'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandDialog(props: CommandDialogProps) { + const [local, rest] = splitProps(props, ['children']); + + return ( + + + + {local.children} + + + + ); +} + +export function CommandEmpty(props: CommandEmptyProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandGroup(props: CommandGroupProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +export function CommandSeparator(props: CommandEmptyProps) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} diff --git a/packages/app/src/modules/ui/components/dialog.tsx b/packages/app/src/modules/ui/components/dialog.tsx new file mode 100644 index 000000000..6048ac695 --- /dev/null +++ b/packages/app/src/modules/ui/components/dialog.tsx @@ -0,0 +1,122 @@ +import type { + DialogContentProps, + DialogDescriptionProps, + DialogTitleProps, +} from '@kobalte/core/dialog'; +import type { PolymorphicProps } from '@kobalte/core/polymorphic'; +import type { ComponentProps, ParentProps, ValidComponent } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { Dialog as DialogPrimitive } from '@kobalte/core/dialog'; +import { splitProps } from 'solid-js'; + +export const Dialog = DialogPrimitive; +export const DialogTrigger = DialogPrimitive.Trigger; + +type dialogContentProps = ParentProps< + DialogContentProps & { + class?: string; + } +>; + +export function DialogContent(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dialogContentProps, [ + 'class', + 'children', + ]); + + return ( + + + + {local.children} + + + + Close + + + + + ); +} + +type dialogTitleProps = DialogTitleProps & { + class?: string; +}; + +export function DialogTitle(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dialogTitleProps, ['class']); + + return ( + + ); +} + +type dialogDescriptionProps = + DialogDescriptionProps & { + class?: string; + }; + +export function DialogDescription(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dialogDescriptionProps, ['class']); + + return ( + + ); +} + +export function DialogHeader(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( +
+ ); +} + +export function DialogFooter(props: ComponentProps<'div'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( +
+ ); +} diff --git a/packages/app/src/modules/ui/components/dropdown-menu.tsx b/packages/app/src/modules/ui/components/dropdown-menu.tsx index 7aa97575d..637eadb5d 100644 --- a/packages/app/src/modules/ui/components/dropdown-menu.tsx +++ b/packages/app/src/modules/ui/components/dropdown-menu.tsx @@ -1,314 +1,286 @@ -import { cn } from "@/modules/ui/utils/cn"; import type { - DropdownMenuCheckboxItemProps, - DropdownMenuContentProps, - DropdownMenuGroupLabelProps, - DropdownMenuItemLabelProps, - DropdownMenuItemProps, - DropdownMenuRadioItemProps, - DropdownMenuRootProps, - DropdownMenuSeparatorProps, - DropdownMenuSubTriggerProps, -} from "@kobalte/core/dropdown-menu"; -import { DropdownMenu as DropdownMenuPrimitive } from "@kobalte/core/dropdown-menu"; -import type { PolymorphicProps } from "@kobalte/core/polymorphic"; -import type { ComponentProps, ParentProps, ValidComponent } from "solid-js"; -import { mergeProps, splitProps } from "solid-js"; + DropdownMenuCheckboxItemProps, + DropdownMenuContentProps, + DropdownMenuGroupLabelProps, + DropdownMenuItemLabelProps, + DropdownMenuItemProps, + DropdownMenuRadioItemProps, + DropdownMenuRootProps, + DropdownMenuSeparatorProps, + DropdownMenuSubTriggerProps, +} from '@kobalte/core/dropdown-menu'; +import type { PolymorphicProps } from '@kobalte/core/polymorphic'; +import type { ComponentProps, ParentProps, ValidComponent } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { DropdownMenu as DropdownMenuPrimitive } from '@kobalte/core/dropdown-menu'; +import { mergeProps, splitProps } from 'solid-js'; export const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger; export const DropdownMenuGroup = DropdownMenuPrimitive.Group; export const DropdownMenuSub = DropdownMenuPrimitive.Sub; export const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup; -export const DropdownMenu = (props: DropdownMenuRootProps) => { - const merge = mergeProps({ gutter: 4 }, props); - - return ; -}; - -type dropdownMenuContentProps = - DropdownMenuContentProps & { - class?: string; - }; - -export const DropdownMenuContent = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuContentProps, [ - "class", - ]); - - return ( - - - - ); -}; - -type dropdownMenuItemProps = - DropdownMenuItemProps & { - class?: string; - inset?: boolean; - }; - -export const DropdownMenuItem = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuItemProps, [ - "class", - "inset", - ]); - - return ( - - ); -}; - -type dropdownMenuGroupLabelProps = - DropdownMenuGroupLabelProps & { - class?: string; - }; - -export const DropdownMenuGroupLabel = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuGroupLabelProps, [ - "class", - ]); - - return ( - - ); -}; - -type dropdownMenuItemLabelProps = - DropdownMenuItemLabelProps & { - class?: string; - }; - -export const DropdownMenuItemLabel = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuItemLabelProps, [ - "class", - ]); - - return ( - - ); -}; - -type dropdownMenuSeparatorProps = - DropdownMenuSeparatorProps & { - class?: string; - }; - -export const DropdownMenuSeparator = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuSeparatorProps, [ - "class", - ]); - - return ( - - ); -}; - -export const DropdownMenuShortcut = (props: ComponentProps<"span">) => { - const [local, rest] = splitProps(props, ["class"]); - - return ( - - ); -}; - -type dropdownMenuSubTriggerProps = - ParentProps< - DropdownMenuSubTriggerProps & { - class?: string; - } - >; - -export const DropdownMenuSubTrigger = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuSubTriggerProps, [ - "class", - "children", - ]); - - return ( - - {local.children} - - - Arrow - - - ); -}; - -type dropdownMenuSubContentProps = - DropdownMenuSubTriggerProps & { - class?: string; - }; - -export const DropdownMenuSubContent = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuSubContentProps, [ - "class", - ]); - - return ( - - - - ); -}; - -type dropdownMenuCheckboxItemProps = - ParentProps< - DropdownMenuCheckboxItemProps & { - class?: string; - } - >; - -export const DropdownMenuCheckboxItem = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuCheckboxItemProps, [ - "class", - "children", - ]); - - return ( - - - - - Checkbox - - - {props.children} - - ); -}; - -type dropdownMenuRadioItemProps = ParentProps< - DropdownMenuRadioItemProps & { - class?: string; - } +export function DropdownMenu(props: DropdownMenuRootProps) { + const merge = mergeProps({ gutter: 4 }, props); + + return ; +} + +type dropdownMenuContentProps = + DropdownMenuContentProps & { + class?: string; + }; + +export function DropdownMenuContent(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuContentProps, [ + 'class', + ]); + + return ( + + + + ); +} + +type dropdownMenuItemProps = + DropdownMenuItemProps & { + class?: string; + inset?: boolean; + }; + +export function DropdownMenuItem(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuItemProps, [ + 'class', + 'inset', + ]); + + return ( + + ); +} + +type dropdownMenuGroupLabelProps = + DropdownMenuGroupLabelProps & { + class?: string; + }; + +export function DropdownMenuGroupLabel(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuGroupLabelProps, [ + 'class', + ]); + + return ( + + ); +} + +type dropdownMenuItemLabelProps = + DropdownMenuItemLabelProps & { + class?: string; + }; + +export function DropdownMenuItemLabel(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuItemLabelProps, [ + 'class', + ]); + + return ( + + ); +} + +type dropdownMenuSeparatorProps = + DropdownMenuSeparatorProps & { + class?: string; + }; + +export function DropdownMenuSeparator(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuSeparatorProps, [ + 'class', + ]); + + return ( + + ); +} + +export function DropdownMenuShortcut(props: ComponentProps<'span'>) { + const [local, rest] = splitProps(props, ['class']); + + return ( + + ); +} + +type dropdownMenuSubTriggerProps = ParentProps & { class?: string }>; + +export function DropdownMenuSubTrigger(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuSubTriggerProps, [ + 'class', + 'children', + ]); + + return ( + + {local.children} + + + Arrow + + + ); +} + +type dropdownMenuSubContentProps = + DropdownMenuSubTriggerProps & { + class?: string; + }; + +export function DropdownMenuSubContent(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuSubContentProps, [ + 'class', + ]); + + return ( + + + + ); +} + +type dropdownMenuCheckboxItemProps = ParentProps & { class?: string }>; + +export function DropdownMenuCheckboxItem(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuCheckboxItemProps, [ + 'class', + 'children', + ]); + + return ( + + + + + Checkbox + + + {props.children} + + ); +} + +type dropdownMenuRadioItemProps = ParentProps< + DropdownMenuRadioItemProps & { + class?: string; + } >; -export const DropdownMenuRadioItem = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as dropdownMenuRadioItemProps, [ - "class", - "children", - ]); - - return ( - - - - - - - - Radio - - - {props.children} - - ); -}; +export function DropdownMenuRadioItem(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as dropdownMenuRadioItemProps, [ + 'class', + 'children', + ]); + + return ( + + + + + + + + Radio + + + {props.children} + + ); +} diff --git a/packages/app/src/modules/ui/components/sonner.tsx b/packages/app/src/modules/ui/components/sonner.tsx new file mode 100644 index 000000000..d727f7b5d --- /dev/null +++ b/packages/app/src/modules/ui/components/sonner.tsx @@ -0,0 +1,20 @@ +import { Toaster as Sonner, toast } from 'solid-sonner'; + +export { toast }; + +export function Toaster(props: Parameters[0]) { + return ( + + ); +} diff --git a/packages/app/src/modules/ui/components/switch.tsx b/packages/app/src/modules/ui/components/switch.tsx index c582eada2..c40ecb5ac 100644 --- a/packages/app/src/modules/ui/components/switch.tsx +++ b/packages/app/src/modules/ui/components/switch.tsx @@ -1,62 +1,54 @@ -import { cn } from "@/modules/ui/utils/cn"; -import type { PolymorphicProps } from "@kobalte/core/polymorphic"; +import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { - SwitchControlProps, - SwitchThumbProps, -} from "@kobalte/core/switch"; -import { Switch as SwitchPrimitive } from "@kobalte/core/switch"; -import type { ParentProps, ValidComponent, VoidProps } from "solid-js"; -import { splitProps } from "solid-js"; + SwitchControlProps, + SwitchThumbProps, +} from '@kobalte/core/switch'; +import type { ParentProps, ValidComponent, VoidProps } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { Switch as SwitchPrimitive } from '@kobalte/core/switch'; +import { splitProps } from 'solid-js'; export const SwitchLabel = SwitchPrimitive.Label; export const Switch = SwitchPrimitive; export const SwitchErrorMessage = SwitchPrimitive.ErrorMessage; export const SwitchDescription = SwitchPrimitive.Description; -type switchControlProps = ParentProps< - SwitchControlProps & { class?: string } ->; +type switchControlProps = ParentProps & { class?: string }>; -export const SwitchControl = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as switchControlProps, [ - "class", - "children", - ]); +export function SwitchControl(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as switchControlProps, [ + 'class', + 'children', + ]); - return ( - <> - - - {local.children} - - - ); -}; + return ( + <> + + + {local.children} + + + ); +} -type switchThumbProps = VoidProps< - SwitchThumbProps & { class?: string } ->; +type switchThumbProps = VoidProps & { class?: string }>; -export const SwitchThumb = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as switchThumbProps, ["class"]); +export function SwitchThumb(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as switchThumbProps, ['class']); - return ( - - ); -}; + return ( + + ); +} diff --git a/packages/app/src/modules/ui/components/textarea.tsx b/packages/app/src/modules/ui/components/textarea.tsx index 85c00c0b8..081fa0a9f 100644 --- a/packages/app/src/modules/ui/components/textarea.tsx +++ b/packages/app/src/modules/ui/components/textarea.tsx @@ -1,28 +1,26 @@ -import { cn } from "@/modules/ui/utils/cn"; -import type { PolymorphicProps } from "@kobalte/core/polymorphic"; -import type { TextFieldTextAreaProps } from "@kobalte/core/text-field"; -import { TextArea as TextFieldPrimitive } from "@kobalte/core/text-field"; -import type { ValidComponent, VoidProps } from "solid-js"; -import { splitProps } from "solid-js"; +import type { PolymorphicProps } from '@kobalte/core/polymorphic'; +import type { TextFieldTextAreaProps } from '@kobalte/core/text-field'; +import type { ValidComponent, VoidProps } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { TextArea as TextFieldPrimitive } from '@kobalte/core/text-field'; +import { splitProps } from 'solid-js'; -type textAreaProps = VoidProps< - TextFieldTextAreaProps & { - class?: string; - } +type textAreaProps = VoidProps< + TextFieldTextAreaProps & { + class?: string; + } >; -export const TextArea = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textAreaProps, ["class"]); +export function TextArea(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textAreaProps, ['class']); - return ( - - ); -}; + return ( + + ); +} diff --git a/packages/app/src/modules/ui/components/textfield.tsx b/packages/app/src/modules/ui/components/textfield.tsx index 92e86ff57..33d31616d 100644 --- a/packages/app/src/modules/ui/components/textfield.tsx +++ b/packages/app/src/modules/ui/components/textfield.tsx @@ -1,126 +1,116 @@ -import { cn } from "@/modules/ui/utils/cn"; -import type { PolymorphicProps } from "@kobalte/core/polymorphic"; +import type { PolymorphicProps } from '@kobalte/core/polymorphic'; import type { - TextFieldDescriptionProps, - TextFieldErrorMessageProps, - TextFieldInputProps, - TextFieldLabelProps, - TextFieldRootProps, -} from "@kobalte/core/text-field"; -import { TextField as TextFieldPrimitive } from "@kobalte/core/text-field"; -import { cva } from "class-variance-authority"; -import type { ValidComponent, VoidProps } from "solid-js"; -import { splitProps } from "solid-js"; - -type textFieldProps = - TextFieldRootProps & { - class?: string; - }; - -export const TextFieldRoot = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textFieldProps, ["class"]); - - return ; -}; + TextFieldDescriptionProps, + TextFieldErrorMessageProps, + TextFieldInputProps, + TextFieldLabelProps, + TextFieldRootProps, +} from '@kobalte/core/text-field'; +import type { ValidComponent, VoidProps } from 'solid-js'; +import { cn } from '@/modules/ui/utils/cn'; +import { TextField as TextFieldPrimitive } from '@kobalte/core/text-field'; +import { cva } from 'class-variance-authority'; +import { splitProps } from 'solid-js'; + +type textFieldProps = + TextFieldRootProps & { + class?: string; + }; + +export function TextFieldRoot(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textFieldProps, ['class']); + + return ; +} export const textfieldLabel = cva( - "text-sm data-[disabled]:(cursor-not-allowed opacity-70) font-medium", - { - variants: { - label: { - true: "data-[invalid]:text-destructive", - }, - error: { - true: "text-destructive text-xs", - }, - description: { - true: "font-normal text-muted-foreground", - }, - }, - defaultVariants: { - label: true, - }, - }, + 'text-sm data-[disabled]:(cursor-not-allowed opacity-70) font-medium', + { + variants: { + label: { + true: 'data-[invalid]:text-destructive', + }, + error: { + true: 'text-destructive text-xs', + }, + description: { + true: 'font-normal text-muted-foreground', + }, + }, + defaultVariants: { + label: true, + }, + }, ); -type textFieldLabelProps = - TextFieldLabelProps & { - class?: string; - }; - -export const TextFieldLabel = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textFieldLabelProps, ["class"]); - - return ( - - ); -}; - -type textFieldErrorMessageProps = - TextFieldErrorMessageProps & { - class?: string; - }; - -export const TextFieldErrorMessage = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textFieldErrorMessageProps, [ - "class", - ]); - - return ( - - ); -}; - -type textFieldDescriptionProps = - TextFieldDescriptionProps & { - class?: string; - }; - -export const TextFieldDescription = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textFieldDescriptionProps, [ - "class", - ]); - - return ( - - ); -}; - -type textFieldInputProps = VoidProps< - TextFieldInputProps & { - class?: string; - } +type textFieldLabelProps = + TextFieldLabelProps & { + class?: string; + }; + +export function TextFieldLabel(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textFieldLabelProps, ['class']); + + return ( + + ); +} + +type textFieldErrorMessageProps = + TextFieldErrorMessageProps & { + class?: string; + }; + +export function TextFieldErrorMessage(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textFieldErrorMessageProps, [ + 'class', + ]); + + return ( + + ); +} + +type textFieldDescriptionProps = + TextFieldDescriptionProps & { + class?: string; + }; + +export function TextFieldDescription(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textFieldDescriptionProps, [ + 'class', + ]); + + return ( + + ); +} + +type textFieldInputProps = VoidProps< + TextFieldInputProps & { + class?: string; + } >; -export const TextField = ( - props: PolymorphicProps>, -) => { - const [local, rest] = splitProps(props as textFieldInputProps, ["class"]); - - return ( - - ); -}; +export function TextField(props: PolymorphicProps>) { + const [local, rest] = splitProps(props as textFieldInputProps, ['class']); + + return ( + + ); +} diff --git a/packages/app/src/modules/ui/layouts/app.layout.tsx b/packages/app/src/modules/ui/layouts/app.layout.tsx index 6b10abef8..43f611c9a 100644 --- a/packages/app/src/modules/ui/layouts/app.layout.tsx +++ b/packages/app/src/modules/ui/layouts/app.layout.tsx @@ -1,11 +1,13 @@ -import type { LocaleKey } from '@/modules/i18n/i18n.types'; import type { Component, ParentComponent } from 'solid-js'; +import { useCommandPalette } from '@/modules/command-palette/command-palette.provider'; import { useI18n } from '@/modules/i18n/i18n.provider'; import { Button } from '@/modules/ui/components/button'; -import { A, useLocation, useNavigate } from '@solidjs/router'; +import { A } from '@solidjs/router'; +import { Badge } from '../components/badge'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '../components/dropdown-menu'; import { useThemeStore } from '../themes/theme.store'; import { cn } from '../utils/cn'; +import { socialLinks } from './app.layouts.constants'; const ThemeSwitcher: Component = () => { const themeStore = useThemeStore(); @@ -30,17 +32,7 @@ const ThemeSwitcher: Component = () => { }; const LanguageSwitcher: Component = () => { - const { t, getLocale, setLocale, locales } = useI18n(); - const navigate = useNavigate(); - const location = useLocation(); - - const changeLocale = (locale: LocaleKey) => { - setLocale(locale); - - const pathWithoutLocale = location.pathname.split('/').slice(2).join('/'); - const newPath = [locale, pathWithoutLocale].filter(Boolean).join('/'); - navigate(`/${newPath}`); - }; + const { t, getLocale, changeLocale, locales } = useI18n(); return ( <> @@ -62,14 +54,24 @@ const LanguageSwitcher: Component = () => { export const Navbar: Component = () => { const themeStore = useThemeStore(); const { t } = useI18n(); + const { openCommandPalette } = useCommandPalette(); + const getIsMacOs = () => navigator?.userAgent?.match(/Macintosh;/); return (
-
+
+ +
@@ -155,6 +157,114 @@ export const Navbar: Component = () => { ); }; +const Footer: Component = () => { + const { t, createLocalizedUrl } = useI18n(); + + const getFooterSections = () => [ + { + title: t('footer.resources.title'), + items: [ + { label: t('footer.resources.all-tools'), to: createLocalizedUrl({ path: '/tools' }) }, + { label: t('footer.resources.github'), href: 'https://github.com/CorentinTh/it-tools' }, + { label: t('footer.resources.support'), href: 'https://buymeacoffee.com/cthmsst' }, + { label: 'Human.txt', href: '/human.txt' }, + { label: t('footer.resources.license'), href: 'https://github.com/CorentinTh/it-tools/blob/main/LICENSE' }, + ], + }, + { + title: t('footer.support.title'), + items: [ + { label: t('footer.support.report-bug'), href: 'https://github.com/CorentinTh/it-tools/issues/new/choose' }, + { label: t('footer.support.request-feature'), href: 'https://github.com/CorentinTh/it-tools/issues/new/choose' }, + { label: t('footer.support.contribute'), href: 'https://github.com/CorentinTh/it-tools/blob/main/CONTRIBUTING.md' }, + { label: t('footer.support.contact'), href: 'https://github.com/CorentinTh/it-tools/issues/new/choose' }, + ], + }, + { + title: t('footer.friends.title'), + items: [ + { label: 'Jugly.io', href: 'https://jugly.io' }, + { label: 'Enclosed.cc', href: 'https://enclosed.cc' }, + ], + }, + + ]; + + return ( +
+ ); +}; + export const AppLayout: ParentComponent = (props) => { return (
@@ -163,6 +273,7 @@ export const AppLayout: ParentComponent = (props) => {
{props.children}
+
); }; diff --git a/packages/app/src/modules/ui/layouts/app.layouts.constants.ts b/packages/app/src/modules/ui/layouts/app.layouts.constants.ts new file mode 100644 index 000000000..bdf90275a --- /dev/null +++ b/packages/app/src/modules/ui/layouts/app.layouts.constants.ts @@ -0,0 +1,17 @@ +export const socialLinks = [ + { + icon: 'i-tabler-brand-github', + href: 'https://github.com/CorentinTh/it-tools', + label: 'GitHub', + }, + { + icon: 'i-tabler-brand-x', + href: 'https://x.com/ittoolsdottech', + label: 'X', + }, + { + icon: 'i-tabler-coffee', + href: 'https://buymeacoffee.com/cthmsst', + label: 'Support the project', + }, +]; diff --git a/packages/app/templates/tools/new/tool.definition.ejs.t b/packages/app/templates/tools/new/tool.definition.ejs.t new file mode 100644 index 000000000..83c08dd5a --- /dev/null +++ b/packages/app/templates/tools/new/tool.definition.ejs.t @@ -0,0 +1,12 @@ +--- +to: src/modules/tools/definitions/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.tool.ts +--- +import { defineTool } from '../../tools.models' + +export const <%= h.changeCase.camel(name) %>Tool = defineTool({ + slug: '<%= h.changeCase.param(name) %>', + entryFile: () => import('./<%= h.changeCase.param(name) %>.page'), + icon: 'i-tabler-question-mark', + createdAt: new Date('<%= new Date().toISOString().split('T')[0] %>'), + dirName: '<%= h.changeCase.param(name) %>', +}) \ No newline at end of file diff --git a/packages/app/templates/tools/new/tool.en.locale.ejs.t b/packages/app/templates/tools/new/tool.en.locale.ejs.t new file mode 100644 index 000000000..56ca79c14 --- /dev/null +++ b/packages/app/templates/tools/new/tool.en.locale.ejs.t @@ -0,0 +1,4 @@ +--- +to: src/modules/tools/definitions/<%= h.changeCase.param(name) %>/locales/en.json +--- +{} \ No newline at end of file diff --git a/packages/app/templates/tools/new/tool.inject-definition-import.ejs.t b/packages/app/templates/tools/new/tool.inject-definition-import.ejs.t new file mode 100644 index 000000000..d70d9ac76 --- /dev/null +++ b/packages/app/templates/tools/new/tool.inject-definition-import.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/modules/tools/tools.registry.ts +at_line: 0 +--- +import { <%= h.changeCase.camel(name) %>Tool } from './definitions/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.tool'; \ No newline at end of file diff --git a/packages/app/templates/tools/new/tool.inject-definition-register.ejs.t b/packages/app/templates/tools/new/tool.inject-definition-register.ejs.t new file mode 100644 index 000000000..79be5c53b --- /dev/null +++ b/packages/app/templates/tools/new/tool.inject-definition-register.ejs.t @@ -0,0 +1,6 @@ +--- +inject: true +to: src/modules/tools/tools.registry.ts +before: "^]" +--- + <%= h.changeCase.camel(name) %>Tool, \ No newline at end of file diff --git a/packages/app/templates/tools/new/tool.page.ejs.t b/packages/app/templates/tools/new/tool.page.ejs.t new file mode 100644 index 000000000..c890702d5 --- /dev/null +++ b/packages/app/templates/tools/new/tool.page.ejs.t @@ -0,0 +1,14 @@ +--- +to: src/modules/tools/definitions/<%= h.changeCase.param(name) %>/<%= h.changeCase.param(name) %>.page.tsx +--- +import type { Component } from 'solid-js'; + +const <%= h.changeCase.pascal(name) %>: Component = () => { + return ( +
+

<%= h.changeCase.title(name) %>

+
+ ); +} + +export default <%= h.changeCase.pascal(name) %>; \ No newline at end of file diff --git a/packages/app/uno.config.ts b/packages/app/uno.config.ts index f7446d9c2..3e8975e3b 100644 --- a/packages/app/uno.config.ts +++ b/packages/app/uno.config.ts @@ -8,6 +8,7 @@ import { } from 'unocss'; import presetAnimations from 'unocss-preset-animations'; import { toolDefinitions } from './src/modules/tools/tools.registry'; +import { socialLinks } from './src/modules/ui/layouts/app.layouts.constants'; export default defineConfig({ presets: [ @@ -111,5 +112,9 @@ export default defineConfig({ }, safelist: [ ...toolDefinitions.map(tool => tool.icon), + ...socialLinks.map(({ icon }) => icon), ], + shortcuts: { + 'i-logo': 'i-tabler-terminal', + }, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 99fb1dcc5..e96df7e3d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,8 +11,8 @@ importers: packages/app: dependencies: '@corentinth/chisels': - specifier: ^1.0.4 - version: 1.0.4 + specifier: ^1.1.0 + version: 1.1.0 '@kobalte/core': specifier: ^0.13.6 version: 0.13.6(solid-js@1.9.1) @@ -34,37 +34,49 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + cmdk-solid: + specifier: ^1.1.0 + version: 1.1.0(solid-js@1.9.1) lodash-es: specifier: ^4.17.21 version: 4.17.21 solid-js: specifier: ^1.9.1 version: 1.9.1 + solid-sonner: + specifier: ^0.2.8 + version: 0.2.8(solid-js@1.9.1) tailwind-merge: specifier: ^2.5.2 version: 2.5.2 devDependencies: '@antfu/eslint-config': specifier: ^3.7.3 - version: 3.7.3(@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.9)(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(jsdom@25.0.1)) + version: 3.7.3(@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(@vue/compiler-sfc@3.5.10)(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vitest@2.1.2(jsdom@25.0.1)) '@iconify-json/tabler': specifier: ^1.2.3 - version: 1.2.3 + version: 1.2.4 '@types/lodash-es': specifier: ^4.17.12 version: 4.17.12 + '@vitest/coverage-v8': + specifier: 2.1.2 + version: 2.1.2(vitest@2.1.2(jsdom@25.0.1)) eslint: specifier: ^9.11.1 - version: 9.11.1(jiti@1.21.6) + version: 9.11.1(jiti@2.1.1) + hygen: + specifier: ^6.2.11 + version: 6.2.11 typescript: specifier: ^5.6.2 version: 5.6.2 unocss: specifier: ^0.62.4 - version: 0.62.4(postcss@8.4.47)(rollup@4.22.5)(vite@5.4.8) + version: 0.62.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8) unocss-preset-animations: specifier: ^1.1.0 - version: 1.1.0(@unocss/preset-wind@0.62.4)(unocss@0.62.4(postcss@8.4.47)(rollup@4.22.5)(vite@5.4.8)) + version: 1.1.0(@unocss/preset-wind@0.63.2)(unocss@0.62.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8)) vite: specifier: ^5.4.8 version: 5.4.8 @@ -72,8 +84,8 @@ importers: specifier: ^2.10.2 version: 2.10.2(solid-js@1.9.1)(vite@5.4.8) vitest: - specifier: ^2.1.1 - version: 2.1.1(jsdom@25.0.1) + specifier: ^2.1.2 + version: 2.1.2(jsdom@25.0.1) packages: @@ -179,10 +191,18 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.25.7': + resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.25.7': + resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.24.8': resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} engines: {node: '>=6.9.0'} @@ -200,6 +220,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.25.7': + resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-jsx@7.24.7': resolution: {integrity: sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==} engines: {node: '>=6.9.0'} @@ -218,6 +243,13 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} + '@babel/types@7.25.7': + resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} + engines: {node: '>=6.9.0'} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@clack/core@0.3.4': resolution: {integrity: sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw==} @@ -226,8 +258,8 @@ packages: bundledDependencies: - is-unicode-supported - '@corentinth/chisels@1.0.4': - resolution: {integrity: sha512-xFIh20+OC5u/GqLNtMfXdI+ZU7cu7E3kieys56OJC+SS6KfNAmF5nTQmi9axwYlCnc94cTlztGQsujGV5s1QqQ==} + '@corentinth/chisels@1.1.0': + resolution: {integrity: sha512-l4qG6uXLKFWilt1Mnt5btCoCaIGVLiPOk95V6W3BPPJ9LE558tlet2EnU3z1gfSO7kqRTgkqLdcwwlzI9mMRNQ==} '@corvu/utils@0.4.2': resolution: {integrity: sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA==} @@ -587,8 +619,8 @@ packages: resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} engines: {node: '>=18.18'} - '@iconify-json/tabler@1.2.3': - resolution: {integrity: sha512-km0P/1Gtp/bFhvBQQmDkMx3nNIkNmU57WCYl9b8Envl81m3bhVVT85A8FtWChQxMXsYv3cTNuwMq/WZGfcY9vQ==} + '@iconify-json/tabler@1.2.4': + resolution: {integrity: sha512-8sUrdJQpNaX3ZfJ5Po4hhA6n+JougMZeRg3AFvh5OuAvhZ8hEAOzPHuY8OB96x6cZCqY/j5idsbZWqKDinxRbQ==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -602,6 +634,14 @@ packages: '@internationalized/number@3.5.3': resolution: {integrity: sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -624,6 +664,11 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@kobalte/core@0.12.6': + resolution: {integrity: sha512-+Ta2o2wEqZ2fCqLMkvjT40VHNmcFKdGe8TNDVQbbMPk66qoU6g/DDRFR/Ib7eAjb+C95VoIyk6zaafos2VOo0w==} + peerDependencies: + solid-js: ^1.8.15 + '@kobalte/core@0.13.6': resolution: {integrity: sha512-MuO9tBDjfmYISF4weKpcRi0+7FEUhqz8wHbcayfSHR5mulXQbru5PRE5gdfhf84C7UdOHTZBLiPeQD2VppdfIQ==} peerDependencies: @@ -646,6 +691,10 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -667,84 +716,169 @@ packages: cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.22.5': resolution: {integrity: sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.22.5': resolution: {integrity: sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.22.5': resolution: {integrity: sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.22.5': resolution: {integrity: sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.22.5': resolution: {integrity: sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.22.5': resolution: {integrity: sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-arm64-musl@4.22.5': resolution: {integrity: sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==} cpu: [arm64] os: [linux] + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.22.5': resolution: {integrity: sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==} cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.22.5': resolution: {integrity: sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.22.5': resolution: {integrity: sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.22.5': resolution: {integrity: sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.22.5': resolution: {integrity: sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.22.5': resolution: {integrity: sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.22.5': resolution: {integrity: sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.22.5': resolution: {integrity: sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@solid-primitives/deep@0.2.9': + resolution: {integrity: sha512-jO8tYQ2BW4LKHLUpm/HcK6qqdH4vg1zmzHUnoUzspxZrKDqhqgBJTPl+vfmDqtt0hHCOhlEhEEV74+tCFyt3Mg==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/event-listener@2.3.3': resolution: {integrity: sha512-DAJbl+F0wrFW2xmcV8dKMBhk9QLVLuBSW+TR4JmIfTaObxd13PuL7nqaXnaYKDWOYa6otB00qcCUIGbuIhSUgQ==} peerDependencies: @@ -770,6 +904,16 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/memo@1.3.9': + resolution: {integrity: sha512-OIlGcsEPXr6U23fDaSEm8iqezWDT4SNSjLTekWQVOu4qHostnMPlqU8xo1Jf0I7OgRuqA0wTMQ5cu0bYjeR/ZQ==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/mutation-observer@1.1.17': + resolution: {integrity: sha512-01skkiHtNWl2PQ0ugFzZHBMsHk870+bZSNK8Gvjcj3mZwBzAJPaUPzFswfM/V8Io1Cko86vfXl73vl9ddRYb5A==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/props@3.1.11': resolution: {integrity: sha512-jZAKWwvDRHjiydIumDgMj68qviIbowQ1ci7nkEAgzgvanNkhKSQV8iPgR2jMk1uv7S2ZqXYHslVQTgJel/TEyg==} peerDependencies: @@ -790,6 +934,11 @@ packages: peerDependencies: solid-js: ^1.6.12 + '@solid-primitives/scheduled@1.4.3': + resolution: {integrity: sha512-HfWN5w7b7FEc6VPLBKnnE302h90jsLMuR28Fcf7neRGGf8jBj6wm6/UFQ00VlKexHFMR6KQ2u4VBh5a1ZcqM8g==} + peerDependencies: + solid-js: ^1.6.12 + '@solid-primitives/static-store@0.0.8': resolution: {integrity: sha512-ZecE4BqY0oBk0YG00nzaAWO5Mjcny8Fc06CdbXadH9T9lzq/9GefqcSe/5AtdXqjvY/DtJ5C6CkcjPZO0o/eqg==} peerDependencies: @@ -864,6 +1013,9 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + '@types/node@17.0.45': + resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -895,6 +1047,10 @@ packages: resolution: {integrity: sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/scope-manager@8.8.0': + resolution: {integrity: sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/type-utils@8.7.0': resolution: {integrity: sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -908,6 +1064,10 @@ packages: resolution: {integrity: sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/types@8.8.0': + resolution: {integrity: sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/typescript-estree@8.7.0': resolution: {integrity: sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -917,16 +1077,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@8.8.0': + resolution: {integrity: sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@8.7.0': resolution: {integrity: sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/utils@8.8.0': + resolution: {integrity: sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + '@typescript-eslint/visitor-keys@8.7.0': resolution: {integrity: sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.8.0': + resolution: {integrity: sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unocss/astro@0.62.4': resolution: {integrity: sha512-98KfkbrNhBLx2+uYxMiGsldIeIZ6/PbL4yaGRHeHoiHd7p4HmIyCF+auYe4Psntx3Yr8kU+XSIAhGDYebvTidQ==} peerDependencies: @@ -947,9 +1126,15 @@ packages: '@unocss/core@0.62.4': resolution: {integrity: sha512-Cc+Vo6XlaQpyVejkJrrzzWtiK9pgMWzVVBpm9VCVtwZPUjD4GSc+g7VQCPXSsr7m03tmSuRySJx72QcASmauNQ==} + '@unocss/core@0.63.2': + resolution: {integrity: sha512-S262ISnTkr6LSyNPXCWBZhHF49lD2snSHUJLXmmATnb2JpCRu/mMUvxJmsk9dPlsH3Ioa35Lw9sMiDWAZ9L5Gw==} + '@unocss/extractor-arbitrary-variants@0.62.4': resolution: {integrity: sha512-e4hJfBMyFr6T6dYSTTjNv9CQwaU1CVEKxDlYP0GpfSgxsV58pguID9j1mt0/XZD6LvEDzwxj9RTRWKpUSWqp+Q==} + '@unocss/extractor-arbitrary-variants@0.63.2': + resolution: {integrity: sha512-uNf3oe42OA5YGhkDoYv5UewGY5RIbW/7ctynIeWEYKTshzsRrRiDc4rYWSriU4yBSRzKVvyxdNN61s9Jz1huZw==} + '@unocss/inspector@0.62.4': resolution: {integrity: sha512-bRcnI99gZecNzrUr6kDMdwGHkhUuTPyvvadRdaOxHc9Ow3ANNyqymeFM1q5anZEUZt8h15TYN0mdyQyIWkU3zg==} @@ -968,6 +1153,9 @@ packages: '@unocss/preset-mini@0.62.4': resolution: {integrity: sha512-1O+QpQFx7FT61aheAZEYemW5e4AGib8TFGm+rWLudKq2IBNnXHcS5xsq5QvqdC7rp9Dn3lnW5du6ijow5kCBuw==} + '@unocss/preset-mini@0.63.2': + resolution: {integrity: sha512-LURtaEBbKhU6sbcRZzClnFSsBXG9x9qNWEokduYv6M2TGwSA6YQXICDIaEfFhwmiRtlQavSXjWgI2IWTQvAaXQ==} + '@unocss/preset-tagify@0.62.4': resolution: {integrity: sha512-8b2Kcsvt93xu1JqDqcD3QvvW0L5rqvH7ev3BlNEVx6n8ayBqfB5HEd4ILKr7wSC90re+EnCgnMm7EP2FiQAJkw==} @@ -983,6 +1171,9 @@ packages: '@unocss/preset-wind@0.62.4': resolution: {integrity: sha512-YOzfQ11AmAnl1ZkcWLMMxCdezLjRKavLNk38LumUMtcdsa0DAy+1JjTp+KEvVQAnD+Et/ld5X+YcBWJkVy5WFQ==} + '@unocss/preset-wind@0.63.2': + resolution: {integrity: sha512-Eb2arGDqqvilox5Xsg7SGWXMzwAMP6YrlbH6hpaPmicPT/2Q+anxeeYSztxQLLRKCsphPgZfkzg/+5/lbdXxog==} + '@unocss/reset@0.62.4': resolution: {integrity: sha512-CtxjeDgN39fY/eZDLIXN4wy7C8W7+SD+41AlzGVU5JwhcXmnb1XoDpOd2lzMxc/Yy3F5dIJt2+MRDj9RnpX9Ew==} @@ -990,6 +1181,10 @@ packages: resolution: {integrity: sha512-XUwLbLUzL+VSHCJNK5QBHC9RbFehumge1/XJmsRfmh0+oxgJoO1gvEvxi57gYEmdJdMRJHRJZ66se6+cB0Ymvw==} engines: {node: '>=14'} + '@unocss/rule-utils@0.63.2': + resolution: {integrity: sha512-PeW1wVGG/tJSW9GpxbjyGNQvV2UDDMu/FU5ohkYz9CeGcHOGHw8gdlnH+9IT1hbQ6koVKNavhvKEQkXH1++FBg==} + engines: {node: '>=14'} + '@unocss/transformer-attributify-jsx@0.62.4': resolution: {integrity: sha512-z9DDqS2DibDR9gno55diKfAVegeJ9uoyQXQhH3R0KY4YMF49N1fWy/t74gOiHtlPmvjQtDRZYgjgaMCc2w8oWg==} @@ -1007,6 +1202,15 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@vitest/coverage-v8@2.1.2': + resolution: {integrity: sha512-b7kHrFrs2urS0cOk5N10lttI8UdJ/yP3nB4JYTREvR5o18cR99yPpK4gK8oQgI42BVv0ILWYUSYB7AXkAUDc0g==} + peerDependencies: + '@vitest/browser': 2.1.2 + vitest: 2.1.2 + peerDependenciesMeta: + '@vitest/browser': + optional: true + '@vitest/eslint-plugin@1.1.4': resolution: {integrity: sha512-kudjgefmJJ7xQ2WfbUU6pZbm7Ou4gLYRaao/8Ynide3G0QhVKHd978sDyWX4KOH0CCMH9cyrGAkFd55eGzJ48Q==} peerDependencies: @@ -1022,13 +1226,13 @@ packages: vitest: optional: true - '@vitest/expect@2.1.1': - resolution: {integrity: sha512-YeueunS0HiHiQxk+KEOnq/QMzlUuOzbU1Go+PgAsHvvv3tUkJPm9xWt+6ITNTlzsMXUjmgm5T+U7KBPK2qQV6w==} + '@vitest/expect@2.1.2': + resolution: {integrity: sha512-FEgtlN8mIUSEAAnlvn7mP8vzaWhEaAEvhSXCqrsijM7K6QqjB11qoRZYEd4AKSCDz8p0/+yH5LzhZ47qt+EyPg==} - '@vitest/mocker@2.1.1': - resolution: {integrity: sha512-LNN5VwOEdJqCmJ/2XJBywB11DLlkbY0ooDJW3uRX5cZyYCrc4PI/ePX0iQhE3BiEGiQmK4GE7Q/PqCkkaiPnrA==} + '@vitest/mocker@2.1.2': + resolution: {integrity: sha512-ExElkCGMS13JAJy+812fw1aCv2QO/LBK6CyO4WOPAzLTmve50gydOlWhgdBJPx2ztbADUq3JVI0C5U+bShaeEA==} peerDependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.2 msw: ^2.3.5 vite: ^5.0.0 peerDependenciesMeta: @@ -1037,35 +1241,35 @@ packages: vite: optional: true - '@vitest/pretty-format@2.1.1': - resolution: {integrity: sha512-SjxPFOtuINDUW8/UkElJYQSFtnWX7tMksSGW0vfjxMneFqxVr8YJ979QpMbDW7g+BIiq88RAGDjf7en6rvLPPQ==} + '@vitest/pretty-format@2.1.2': + resolution: {integrity: sha512-FIoglbHrSUlOJPDGIrh2bjX1sNars5HbxlcsFKCtKzu4+5lpsRhOCVcuzp0fEhAGHkPZRIXVNzPcpSlkoZ3LuA==} - '@vitest/runner@2.1.1': - resolution: {integrity: sha512-uTPuY6PWOYitIkLPidaY5L3t0JJITdGTSwBtwMjKzo5O6RCOEncz9PUN+0pDidX8kTHYjO0EwUIvhlGpnGpxmA==} + '@vitest/runner@2.1.2': + resolution: {integrity: sha512-UCsPtvluHO3u7jdoONGjOSil+uON5SSvU9buQh3lP7GgUXHp78guN1wRmZDX4wGK6J10f9NUtP6pO+SFquoMlw==} - '@vitest/snapshot@2.1.1': - resolution: {integrity: sha512-BnSku1WFy7r4mm96ha2FzN99AZJgpZOWrAhtQfoxjUU5YMRpq1zmHRq7a5K9/NjqonebO7iVDla+VvZS8BOWMw==} + '@vitest/snapshot@2.1.2': + resolution: {integrity: sha512-xtAeNsZ++aRIYIUsek7VHzry/9AcxeULlegBvsdLncLmNCR6tR8SRjn8BbDP4naxtccvzTqZ+L1ltZlRCfBZFA==} - '@vitest/spy@2.1.1': - resolution: {integrity: sha512-ZM39BnZ9t/xZ/nF4UwRH5il0Sw93QnZXd9NAZGRpIgj0yvVwPpLd702s/Cx955rGaMlyBQkZJ2Ir7qyY48VZ+g==} + '@vitest/spy@2.1.2': + resolution: {integrity: sha512-GSUi5zoy+abNRJwmFhBDC0yRuVUn8WMlQscvnbbXdKLXX9dE59YbfwXxuJ/mth6eeqIzofU8BB5XDo/Ns/qK2A==} - '@vitest/utils@2.1.1': - resolution: {integrity: sha512-Y6Q9TsI+qJ2CC0ZKj6VBb+T8UPz593N113nnUykqwANqhgf3QkZeHFlusgKLTqrnVHbj/XDKZcDHol+dxVT+rQ==} + '@vitest/utils@2.1.2': + resolution: {integrity: sha512-zMO2KdYy6mx56btx9JvAqAZ6EyS3g49krMPPrgOp1yxGZiA93HumGk+bZ5jIZtOg5/VBYl5eBmGRQHqq4FG6uQ==} - '@vue/compiler-core@3.5.9': - resolution: {integrity: sha512-KE1sCdwqSKq0CQ/ltg3XnlMTKeinjegIkuFsuq9DKvNPmqLGdmI51ChZdGBBRXIvEYTLm8X/JxOuBQ1HqF/+PA==} + '@vue/compiler-core@3.5.10': + resolution: {integrity: sha512-iXWlk+Cg/ag7gLvY0SfVucU8Kh2CjysYZjhhP70w9qI4MvSox4frrP+vDGvtQuzIcgD8+sxM6lZvCtdxGunTAA==} - '@vue/compiler-dom@3.5.9': - resolution: {integrity: sha512-gEAURwPo902AsJF50vl59VaWR+Cx6cX9SoqLYHu1jq9hDbmQlXvpZyYNIIbxa2JTJ+FD/oBQweVUwuTQv79KTg==} + '@vue/compiler-dom@3.5.10': + resolution: {integrity: sha512-DyxHC6qPcktwYGKOIy3XqnHRrrXyWR2u91AjP+nLkADko380srsC2DC3s7Y1Rk6YfOlxOlvEQKa9XXmLI+W4ZA==} - '@vue/compiler-sfc@3.5.9': - resolution: {integrity: sha512-kp9qawcTXakYm0TN6YAwH24IurSywoXh4fWhRbLu0at4UVyo994bhEzJlQn82eiyqtut4GjkQodSfn8drFbpZQ==} + '@vue/compiler-sfc@3.5.10': + resolution: {integrity: sha512-to8E1BgpakV7224ZCm8gz1ZRSyjNCAWEplwFMWKlzCdP9DkMKhRRwt0WkCjY7jkzi/Vz3xgbpeig5Pnbly4Tow==} - '@vue/compiler-ssr@3.5.9': - resolution: {integrity: sha512-fb1g2mQv32QzIei76rlXRTz08Grw+ZzBXSQfHo4StGFutm/flyebw3dGJkexKwcU3GjX9s5fIGjEv/cjO8j8Yw==} + '@vue/compiler-ssr@3.5.10': + resolution: {integrity: sha512-hxP4Y3KImqdtyUKXDRSxKSRkSm1H9fCvhojEYrnaoWhE4w/y8vwWhnosJoPPe2AXm5sU7CSbYYAgkt2ZPhDz+A==} - '@vue/shared@3.5.9': - resolution: {integrity: sha512-8wiT/m0mnsLhTME0mPgc57jv+4TipRBSAAmheUdYgiOaO6AobZPNOmm87ub4np65VVDgLcWxc+Edc++5Wyz1uA==} + '@vue/shared@3.5.10': + resolution: {integrity: sha512-VkkBhU97Ki+XJ0xvl4C9YJsIZ2uIlQ7HqPpZOS3m9VCvmROPaChZU6DexdMJqvz9tbgG+4EtFVrSuailUq5KGQ==} acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -1084,10 +1288,18 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} @@ -1100,6 +1312,10 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -1108,6 +1324,9 @@ packages: resolution: {integrity: sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==} engines: {node: '>=14'} + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1115,6 +1334,9 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1131,10 +1353,16 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} @@ -1153,6 +1381,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + builtin-modules@3.3.0: resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} engines: {node: '>=6'} @@ -1171,6 +1402,9 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camel-case@3.0.0: + resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} + caniuse-lite@1.0.30001664: resolution: {integrity: sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==} @@ -1189,6 +1423,9 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + change-case@3.1.0: + resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} + character-entities@2.0.2: resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} @@ -1211,10 +1448,22 @@ packages: resolution: {integrity: sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==} engines: {node: '>=4'} + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + clsx@2.0.0: resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} engines: {node: '>=6'} @@ -1223,6 +1472,11 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} + cmdk-solid@1.1.0: + resolution: {integrity: sha512-R8MRAWE2o8qnu0D8DOqGKoB1TMGI97mfSrH9CtgUQzcvZ+4jY2fvF6cxJS2N/iSwwl6LQeB/AYXh8GAGCPbkDQ==} + peerDependencies: + solid-js: ^1.8.0 + color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -1257,6 +1511,9 @@ packages: resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} engines: {node: ^14.18.0 || >=16.10.0} + constant-case@2.0.0: + resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1317,9 +1574,17 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + degit@2.8.4: + resolution: {integrity: sha512-vqYuzmSA5I50J882jd+AbAhQtgK6bdKUJIex1JNfEUPENCgYsxugzKVZlFyMwV4i06MmnV47/Iqi5Io86zf3Ng==} + engines: {node: '>=8.0.0'} + hasBin: true + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1342,19 +1607,37 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dot-case@2.1.1: + resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} + duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + electron-to-chromium@1.5.29: resolution: {integrity: sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + enhanced-resolve@5.17.1: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -1555,6 +1838,11 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + esquery@1.6.0: resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} @@ -1577,6 +1865,10 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1593,8 +1885,8 @@ packages: fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} - fdir@6.3.0: - resolution: {integrity: sha512-QOnuT+BOtivR77wYvCWHfGt9s4Pz1VIMbD463vegT5MLqNXy8rYFT/lPVEqf/bhYeT6qmqrNHhsX+rWwe3rOCQ==} + fdir@6.4.0: + resolution: {integrity: sha512-3oB133prH1o4j/L5lLW7uOCF1PlD+/It2L0eL/iAqWMB91RBbqTewABqxhj0ibBd90EEmWZq7ntIWzVaWcXTGQ==} peerDependencies: picomatch: ^3 || ^4 peerDependenciesMeta: @@ -1605,6 +1897,9 @@ packages: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -1628,10 +1923,21 @@ packages: flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} + front-matter@4.0.2: + resolution: {integrity: sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -1651,6 +1957,10 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-tsconfig@4.8.1: resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} @@ -1662,6 +1972,10 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -1700,6 +2014,9 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + header-case@1.0.1: + resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} + hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} @@ -1710,6 +2027,9 @@ packages: html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + http-proxy-agent@7.0.2: resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} @@ -1718,10 +2038,25 @@ packages: resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} engines: {node: '>= 14'} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + hygen@6.2.11: + resolution: {integrity: sha512-t6/zLI2XozP5gvV74nnl8LZSbwpVNFUkUs/O9DwuOdiiBbws5k4AQNVwKZ9FGzcKjdJ5EBBYkVzlcUHkLyY0FQ==} + hasBin: true + iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore-walk@4.0.1: + resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} + engines: {node: '>=10'} + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -1741,6 +2076,13 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + inflection@1.13.4: + resolution: {integrity: sha512-6I/HUDeYFfuNCVS3td055BaXBwKYuzw7K3ExVMStBowKo9oOAMJIXIHvdyR3iboTCp1b+1i5DSkIZTcwIktuDw==} + engines: {'0': node >= 0.4.0} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -1768,6 +2110,13 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-lower-case@1.1.3: + resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} + is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -1779,6 +2128,17 @@ packages: is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-upper-case@1.1.2: + resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} + is-what@4.1.16: resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} engines: {node: '>=12.13'} @@ -1786,6 +2146,30 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + jest-diff@29.7.0: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1802,9 +2186,17 @@ packages: resolution: {integrity: sha512-pmfRbVRs/7khFrSAYnSiJ8C0D5GvzkE4Ey2pAvUcJsw1ly/p+7ut27jbJrjY79BpAJQJ4gXYFtK6d1Aub+9baQ==} hasBin: true + jiti@2.1.1: + resolution: {integrity: sha512-1BRk+NppnvjWLfEqPQtDc3JTs2eiXY9cKBM+VOk5WO+uwWHIuLeWEo3Y1LTqjguKiK9KcLDYA3IdP7gWqcbRig==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true @@ -1857,6 +2249,9 @@ packages: resolution: {integrity: sha512-WYDyuc/uFcGp6YtM2H0uKmUwieOuzeE/5YocFJLnLfclZ4inf3mRn8ZVy1s7Hxji7Jxm6Ss8gqpexD/GlKoGgg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -1895,18 +2290,38 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lower-case-first@1.0.2: + resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} + + lower-case@1.1.4: + resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + markdown-table@3.0.3: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} @@ -1950,6 +2365,9 @@ packages: resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} engines: {node: '>=12.13'} + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -2050,6 +2468,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2057,10 +2479,18 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@9.0.5: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + mlly@1.7.1: resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} @@ -2082,6 +2512,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + no-case@2.3.2: + resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} + node-fetch-native@1.6.4: resolution: {integrity: sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==} @@ -2095,6 +2528,10 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -2104,10 +2541,18 @@ packages: ofetch@1.4.0: resolution: {integrity: sha512-MuHgsEhU6zGeX+EMh+8mSMrYTnsqJQQrpM00Q6QHMKNqQ0bKy0B43tk8tL1wg+CnsSTy1kg4Ir2T5Ig6rD+dfQ==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -2128,9 +2573,15 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + package-manager-detector@0.2.0: resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + param-case@2.1.1: + resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -2150,6 +2601,12 @@ packages: parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + pascal-case@2.0.1: + resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} + + path-case@2.1.1: + resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} + path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -2161,6 +2618,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -2223,6 +2684,10 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -2258,6 +2723,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -2267,12 +2736,20 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + rrweb-cssom@0.7.1: resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -2297,6 +2774,9 @@ packages: engines: {node: '>=10'} hasBin: true + sentence-case@2.1.1: + resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} + seroval-plugins@1.1.1: resolution: {integrity: sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==} engines: {node: '>=10'} @@ -2318,6 +2798,13 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + sirv@2.0.4: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} @@ -2328,6 +2815,9 @@ packages: slashes@3.0.12: resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + snake-case@2.1.0: + resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} + solid-js@1.9.1: resolution: {integrity: sha512-Gd6QWRFfO2XKKZqVK4YwbhWZkr0jWw1dYHOt+VYebomeyikGP0SuMflf42XcDuU9HAEYDArFJIYsBNjlE7iZsw==} @@ -2346,6 +2836,11 @@ packages: peerDependencies: solid-js: ^1.3 + solid-sonner@0.2.8: + resolution: {integrity: sha512-EQ2EIznvHHpAmkYh2CTu0AdCgmPJRJWLGFRWygE8j+vMEfvIV2wotHU5qgWzqzVTG1SODGsay2Lwq6ENWx/rPA==} + peerDependencies: + solid-js: ^1.6.0 + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2365,6 +2860,9 @@ packages: spdx-license-ids@3.0.20: resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stable-hash@0.0.4: resolution: {integrity: sha512-LjdcbuBeLcdETCrPn9i8AYAZ1eCtu4ECAWtP7UleOiZ9LzVxRzzUZEoZ8zB24nhkQnDWyET0I+3sWokSDS3E7g==} @@ -2378,10 +2876,25 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -2402,6 +2915,9 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + swap-case@1.1.2: + resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} + symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -2420,6 +2936,10 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -2429,8 +2949,8 @@ packages: tinyexec@0.3.0: resolution: {integrity: sha512-tVGE0mVJPGb0chKhqmsoosjsS+qUnJVGJpZgsHYQcGoPlG3B51R3PouqTgEGH2Dc9jjFyOqOpix6ZHNMXp1FZg==} - tinyglobby@0.2.6: - resolution: {integrity: sha512-NbBoFBpqfcgd1tCiO8Lkfdk+xrA7mlLR9zgvZcZWQQwU63XAfUePyd6wZBaU93Hqw347lHnwFzttAkemHzzz4g==} + tinyglobby@0.2.9: + resolution: {integrity: sha512-8or1+BGEdk1Zkkw2ii16qSS7uVrQJPre5A9o/XkWPATkk23FZh/15BKFxPnlTy6vkljZxLqYCzzBMj30ZrSvjw==} engines: {node: '>=12.0.0'} tinypool@1.0.1: @@ -2445,6 +2965,9 @@ packages: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} + title-case@2.1.1: + resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} + tldts-core@6.1.47: resolution: {integrity: sha512-6SWyFMnlst1fEt7GQVAAu16EGgFK0cLouH/2Mk6Ftlwhv3Ol40L0dlpGMcnnNiiOMyD2EV/aF3S+U2nKvvLvrA==} @@ -2529,6 +3052,10 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + unocss-preset-animations@1.1.0: resolution: {integrity: sha512-wCcVnu1IvQmzKK9dZpeZbPPuXO5sKmYGe5VaASjH8st6G3wgw4tw7HsVRP0bXHRhO0PXGtC5Kw9IRKh6dPGPtA==} peerDependencies: @@ -2553,6 +3080,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + upper-case-first@1.1.2: + resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} + + upper-case@1.1.3: + resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} + uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -2565,8 +3098,8 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} - vite-node@2.1.1: - resolution: {integrity: sha512-N/mGckI1suG/5wQI35XeR9rsMsPqKXzq1CdUndzVstBj/HvyxxGctwnK6WX43NGt5L3Z5tcRf83g4TITKJhPrA==} + vite-node@2.1.2: + resolution: {integrity: sha512-HPcGNN5g/7I2OtPjLqgOtCRu/qhVvBxTUD3qzitmL0SrG1cWFzxzhMDWussxSbrRYWqnKf8P2jiNhPMSN+ymsQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -2619,15 +3152,15 @@ packages: vite: optional: true - vitest@2.1.1: - resolution: {integrity: sha512-97We7/VC0e9X5zBVkvt7SGQMGrRtn3KtySFQG5fpaMlS+l62eeXRQO633AYhSTC3z7IMebnPPNjGXVGNRFlxBA==} + vitest@2.1.2: + resolution: {integrity: sha512-veNjLizOMkRrJ6xxb+pvxN6/QAWg95mzcRjtmkepXdN87FNfxAss9RKe2far/G9cQpipfgP2taqg0KiWsquj8A==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.1 - '@vitest/ui': 2.1.1 + '@vitest/browser': 2.1.2 + '@vitest/ui': 2.1.2 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -2654,6 +3187,9 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} @@ -2688,6 +3224,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -2749,42 +3289,42 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@antfu/eslint-config@3.7.3(@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(@vue/compiler-sfc@3.5.9)(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(jsdom@25.0.1))': + '@antfu/eslint-config@3.7.3(@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(@vue/compiler-sfc@3.5.10)(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vitest@2.1.2(jsdom@25.0.1))': dependencies: '@antfu/install-pkg': 0.4.1 '@clack/prompts': 0.7.0 - '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - '@eslint/markdown': 6.1.0(eslint@9.11.1(jiti@1.21.6)) - '@stylistic/eslint-plugin': 2.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - '@vitest/eslint-plugin': 1.1.4(@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(jsdom@25.0.1)) - eslint: 9.11.1(jiti@1.21.6) - eslint-config-flat-gitignore: 0.3.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-plugin-eslint-comments': 4.4.0(eslint@9.11.1(jiti@2.1.1)) + '@eslint/markdown': 6.1.0(eslint@9.11.1(jiti@2.1.1)) + '@stylistic/eslint-plugin': 2.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + '@vitest/eslint-plugin': 1.1.4(@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vitest@2.1.2(jsdom@25.0.1)) + eslint: 9.11.1(jiti@2.1.1) + eslint-config-flat-gitignore: 0.3.0(eslint@9.11.1(jiti@2.1.1)) eslint-flat-config-utils: 0.4.0 - eslint-merge-processors: 0.1.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-antfu: 2.7.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-command: 0.2.6(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-import-x: 4.3.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - eslint-plugin-jsdoc: 50.3.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-jsonc: 2.16.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-n: 17.10.3(eslint@9.11.1(jiti@1.21.6)) + eslint-merge-processors: 0.1.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-antfu: 2.7.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-command: 0.2.6(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-import-x: 4.3.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + eslint-plugin-jsdoc: 50.3.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-jsonc: 2.16.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-n: 17.10.3(eslint@9.11.1(jiti@2.1.1)) eslint-plugin-no-only-tests: 3.3.0 - eslint-plugin-perfectionist: 3.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@1.21.6))) - eslint-plugin-regexp: 2.6.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-toml: 0.11.1(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-unicorn: 55.0.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-vue: 9.28.0(eslint@9.11.1(jiti@1.21.6)) - eslint-plugin-yml: 1.14.0(eslint@9.11.1(jiti@1.21.6)) - eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.9)(eslint@9.11.1(jiti@1.21.6)) + eslint-plugin-perfectionist: 3.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@2.1.1))) + eslint-plugin-regexp: 2.6.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-toml: 0.11.1(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-unicorn: 55.0.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-vue: 9.28.0(eslint@9.11.1(jiti@2.1.1)) + eslint-plugin-yml: 1.14.0(eslint@9.11.1(jiti@2.1.1)) + eslint-processor-vue-blocks: 0.1.2(@vue/compiler-sfc@3.5.10)(eslint@9.11.1(jiti@2.1.1)) globals: 15.9.0 jsonc-eslint-parser: 2.4.0 local-pkg: 0.5.0 parse-gitignore: 2.0.0 picocolors: 1.1.0 toml-eslint-parser: 0.10.0 - vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@2.1.1)) yaml-eslint-parser: 1.2.3 yargs: 17.7.2 transitivePeerDependencies: @@ -2876,8 +3416,12 @@ snapshots: '@babel/helper-string-parser@7.24.8': {} + '@babel/helper-string-parser@7.25.7': {} + '@babel/helper-validator-identifier@7.24.7': {} + '@babel/helper-validator-identifier@7.25.7': {} + '@babel/helper-validator-option@7.24.8': {} '@babel/helpers@7.25.6': @@ -2896,7 +3440,11 @@ snapshots: dependencies: '@babel/types': 7.25.6 - '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': + '@babel/parser@7.25.7': + dependencies: + '@babel/types': 7.25.7 + + '@babel/plugin-syntax-jsx@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 @@ -2925,6 +3473,14 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@babel/types@7.25.7': + dependencies: + '@babel/helper-string-parser': 7.25.7 + '@babel/helper-validator-identifier': 7.25.7 + to-fast-properties: 2.0.0 + + '@bcoe/v8-coverage@0.2.3': {} + '@clack/core@0.3.4': dependencies: picocolors: 1.1.0 @@ -2936,7 +3492,7 @@ snapshots: picocolors: 1.1.0 sisteransi: 1.0.5 - '@corentinth/chisels@1.0.4': + '@corentinth/chisels@1.1.0': dependencies: lodash-es: 4.17.21 @@ -3092,15 +3648,15 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.11.1(jiti@1.21.6))': + '@eslint-community/eslint-plugin-eslint-comments@4.4.0(eslint@9.11.1(jiti@2.1.1))': dependencies: escape-string-regexp: 4.0.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) ignore: 5.3.2 - '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@1.21.6))': + '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1(jiti@2.1.1))': dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.11.1': {} @@ -3133,9 +3689,9 @@ snapshots: '@eslint/js@9.11.1': {} - '@eslint/markdown@6.1.0(eslint@9.11.1(jiti@1.21.6))': + '@eslint/markdown@6.1.0(eslint@9.11.1(jiti@2.1.1))': dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) mdast-util-from-markdown: 2.0.1 mdast-util-gfm: 3.0.0 micromark-extension-gfm: 3.0.0 @@ -3163,7 +3719,7 @@ snapshots: '@humanwhocodes/retry@0.3.0': {} - '@iconify-json/tabler@1.2.3': + '@iconify-json/tabler@1.2.4': dependencies: '@iconify/types': 2.0.0 @@ -3189,6 +3745,17 @@ snapshots: dependencies: '@swc/helpers': 0.5.13 + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -3210,6 +3777,15 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@kobalte/core@0.12.6(solid-js@1.9.1)': + dependencies: + '@floating-ui/dom': 1.6.11 + '@internationalized/date': 3.5.5 + '@internationalized/number': 3.5.3 + '@kobalte/utils': 0.9.1(solid-js@1.9.1) + solid-js: 1.9.1 + solid-prevent-scroll: 0.1.10(solid-js@1.9.1) + '@kobalte/core@0.13.6(solid-js@1.9.1)': dependencies: '@floating-ui/dom': 1.6.11 @@ -3245,68 +3821,124 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 + '@pkgjs/parseargs@0.11.0': + optional: true + '@pkgr/core@0.1.1': {} '@polka/url@1.0.0-next.28': {} - '@rollup/pluginutils@5.1.2(rollup@4.22.5)': + '@rollup/pluginutils@5.1.2(rollup@4.24.0)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 2.3.1 optionalDependencies: - rollup: 4.22.5 + rollup: 4.24.0 '@rollup/rollup-android-arm-eabi@4.22.5': optional: true + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + '@rollup/rollup-android-arm64@4.22.5': optional: true + '@rollup/rollup-android-arm64@4.24.0': + optional: true + '@rollup/rollup-darwin-arm64@4.22.5': optional: true + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + '@rollup/rollup-darwin-x64@4.22.5': optional: true + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.22.5': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.22.5': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.22.5': optional: true + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.22.5': optional: true + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.22.5': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.22.5': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.22.5': optional: true + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.22.5': optional: true + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.22.5': optional: true + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.22.5': optional: true + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.22.5': optional: true + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.22.5': optional: true + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + '@sinclair/typebox@0.27.8': {} + '@solid-primitives/deep@0.2.9(solid-js@1.9.1)': + dependencies: + '@solid-primitives/memo': 1.3.9(solid-js@1.9.1) + solid-js: 1.9.1 + '@solid-primitives/event-listener@2.3.3(solid-js@1.9.1)': dependencies: '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) @@ -3333,6 +3965,17 @@ snapshots: '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) solid-js: 1.9.1 + '@solid-primitives/memo@1.3.9(solid-js@1.9.1)': + dependencies: + '@solid-primitives/scheduled': 1.4.3(solid-js@1.9.1) + '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) + solid-js: 1.9.1 + + '@solid-primitives/mutation-observer@1.1.17(solid-js@1.9.1)': + dependencies: + '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) + solid-js: 1.9.1 + '@solid-primitives/props@3.1.11(solid-js@1.9.1)': dependencies: '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) @@ -3356,6 +3999,10 @@ snapshots: '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) solid-js: 1.9.1 + '@solid-primitives/scheduled@1.4.3(solid-js@1.9.1)': + dependencies: + solid-js: 1.9.1 + '@solid-primitives/static-store@0.0.8(solid-js@1.9.1)': dependencies: '@solid-primitives/utils': 6.2.3(solid-js@1.9.1) @@ -3379,10 +4026,10 @@ snapshots: dependencies: solid-js: 1.9.1 - '@stylistic/eslint-plugin@2.8.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + '@stylistic/eslint-plugin@2.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': dependencies: - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.11.1(jiti@1.21.6) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + eslint: 9.11.1(jiti@2.1.1) eslint-visitor-keys: 4.0.0 espree: 10.1.0 estraverse: 5.3.0 @@ -3436,19 +4083,21 @@ snapshots: '@types/ms@0.7.34': {} + '@types/node@17.0.45': {} + '@types/normalize-package-data@2.4.4': {} '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': dependencies: '@eslint-community/regexpp': 4.11.1 - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) '@typescript-eslint/scope-manager': 8.7.0 - '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/type-utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.7.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -3458,14 +4107,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 8.7.0 debug: 4.3.7 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) optionalDependencies: typescript: 5.6.2 transitivePeerDependencies: @@ -3476,10 +4125,16 @@ snapshots: '@typescript-eslint/types': 8.7.0 '@typescript-eslint/visitor-keys': 8.7.0 - '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/scope-manager@8.8.0': + dependencies: + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 + optional: true + + '@typescript-eslint/type-utils@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': dependencies: '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) debug: 4.3.7 ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: @@ -3490,6 +4145,9 @@ snapshots: '@typescript-eslint/types@8.7.0': {} + '@typescript-eslint/types@8.8.0': + optional: true + '@typescript-eslint/typescript-estree@8.7.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 8.7.0 @@ -3505,37 +4163,71 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)': + '@typescript-eslint/typescript-estree@8.8.0(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/visitor-keys': 8.8.0 + debug: 4.3.7 + fast-glob: 3.3.2 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + optional: true + + '@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) '@typescript-eslint/scope-manager': 8.7.0 '@typescript-eslint/types': 8.7.0 '@typescript-eslint/typescript-estree': 8.7.0(typescript@5.6.2) - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) transitivePeerDependencies: - supports-color - typescript + '@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) + '@typescript-eslint/scope-manager': 8.8.0 + '@typescript-eslint/types': 8.8.0 + '@typescript-eslint/typescript-estree': 8.8.0(typescript@5.6.2) + eslint: 9.11.1(jiti@2.1.1) + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@typescript-eslint/visitor-keys@8.7.0': dependencies: '@typescript-eslint/types': 8.7.0 eslint-visitor-keys: 3.4.3 - '@unocss/astro@0.62.4(rollup@4.22.5)(vite@5.4.8)': + '@typescript-eslint/visitor-keys@8.8.0': + dependencies: + '@typescript-eslint/types': 8.8.0 + eslint-visitor-keys: 3.4.3 + optional: true + + '@unocss/astro@0.62.4(rollup@4.24.0)(vite@5.4.8)': dependencies: '@unocss/core': 0.62.4 '@unocss/reset': 0.62.4 - '@unocss/vite': 0.62.4(rollup@4.22.5)(vite@5.4.8) + '@unocss/vite': 0.62.4(rollup@4.24.0)(vite@5.4.8) optionalDependencies: vite: 5.4.8 transitivePeerDependencies: - rollup - supports-color - '@unocss/cli@0.62.4(rollup@4.22.5)': + '@unocss/cli@0.62.4(rollup@4.24.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) '@unocss/config': 0.62.4 '@unocss/core': 0.62.4 '@unocss/preset-uno': 0.62.4 @@ -3546,7 +4238,7 @@ snapshots: magic-string: 0.30.11 pathe: 1.1.2 perfect-debounce: 1.0.0 - tinyglobby: 0.2.6 + tinyglobby: 0.2.9 transitivePeerDependencies: - rollup - supports-color @@ -3560,10 +4252,16 @@ snapshots: '@unocss/core@0.62.4': {} + '@unocss/core@0.63.2': {} + '@unocss/extractor-arbitrary-variants@0.62.4': dependencies: '@unocss/core': 0.62.4 + '@unocss/extractor-arbitrary-variants@0.63.2': + dependencies: + '@unocss/core': 0.63.2 + '@unocss/inspector@0.62.4': dependencies: '@unocss/core': 0.62.4 @@ -3578,7 +4276,7 @@ snapshots: '@unocss/rule-utils': 0.62.4 css-tree: 2.3.1 postcss: 8.4.47 - tinyglobby: 0.2.6 + tinyglobby: 0.2.9 transitivePeerDependencies: - supports-color @@ -3600,6 +4298,12 @@ snapshots: '@unocss/extractor-arbitrary-variants': 0.62.4 '@unocss/rule-utils': 0.62.4 + '@unocss/preset-mini@0.63.2': + dependencies: + '@unocss/core': 0.63.2 + '@unocss/extractor-arbitrary-variants': 0.63.2 + '@unocss/rule-utils': 0.63.2 + '@unocss/preset-tagify@0.62.4': dependencies: '@unocss/core': 0.62.4 @@ -3627,6 +4331,12 @@ snapshots: '@unocss/preset-mini': 0.62.4 '@unocss/rule-utils': 0.62.4 + '@unocss/preset-wind@0.63.2': + dependencies: + '@unocss/core': 0.63.2 + '@unocss/preset-mini': 0.63.2 + '@unocss/rule-utils': 0.63.2 + '@unocss/reset@0.62.4': {} '@unocss/rule-utils@0.62.4': @@ -3634,6 +4344,11 @@ snapshots: '@unocss/core': 0.62.4 magic-string: 0.30.11 + '@unocss/rule-utils@0.63.2': + dependencies: + '@unocss/core': 0.63.2 + magic-string: 0.30.11 + '@unocss/transformer-attributify-jsx@0.62.4': dependencies: '@unocss/core': 0.62.4 @@ -3652,100 +4367,118 @@ snapshots: dependencies: '@unocss/core': 0.62.4 - '@unocss/vite@0.62.4(rollup@4.22.5)(vite@5.4.8)': + '@unocss/vite@0.62.4(rollup@4.24.0)(vite@5.4.8)': dependencies: '@ampproject/remapping': 2.3.0 - '@rollup/pluginutils': 5.1.2(rollup@4.22.5) + '@rollup/pluginutils': 5.1.2(rollup@4.24.0) '@unocss/config': 0.62.4 '@unocss/core': 0.62.4 '@unocss/inspector': 0.62.4 chokidar: 3.6.0 magic-string: 0.30.11 - tinyglobby: 0.2.6 + tinyglobby: 0.2.9 vite: 5.4.8 transitivePeerDependencies: - rollup - supports-color - '@vitest/eslint-plugin@1.1.4(@typescript-eslint/utils@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vitest@2.1.1(jsdom@25.0.1))': + '@vitest/coverage-v8@2.1.2(vitest@2.1.2(jsdom@25.0.1))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.7 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.11 + magicast: 0.3.5 + std-env: 3.7.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.1.2(jsdom@25.0.1) + transitivePeerDependencies: + - supports-color + + '@vitest/eslint-plugin@1.1.4(@typescript-eslint/utils@8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vitest@2.1.2(jsdom@25.0.1))': dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) optionalDependencies: - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.8.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) typescript: 5.6.2 - vitest: 2.1.1(jsdom@25.0.1) + vitest: 2.1.2(jsdom@25.0.1) - '@vitest/expect@2.1.1': + '@vitest/expect@2.1.2': dependencies: - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 chai: 5.1.1 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.1(@vitest/spy@2.1.1)(vite@5.4.8)': + '@vitest/mocker@2.1.2(@vitest/spy@2.1.2)(vite@5.4.8)': dependencies: - '@vitest/spy': 2.1.1 + '@vitest/spy': 2.1.2 estree-walker: 3.0.3 magic-string: 0.30.11 optionalDependencies: vite: 5.4.8 - '@vitest/pretty-format@2.1.1': + '@vitest/pretty-format@2.1.2': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.1': + '@vitest/runner@2.1.2': dependencies: - '@vitest/utils': 2.1.1 + '@vitest/utils': 2.1.2 pathe: 1.1.2 - '@vitest/snapshot@2.1.1': + '@vitest/snapshot@2.1.2': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.2 magic-string: 0.30.11 pathe: 1.1.2 - '@vitest/spy@2.1.1': + '@vitest/spy@2.1.2': dependencies: tinyspy: 3.0.2 - '@vitest/utils@2.1.1': + '@vitest/utils@2.1.2': dependencies: - '@vitest/pretty-format': 2.1.1 + '@vitest/pretty-format': 2.1.2 loupe: 3.1.1 tinyrainbow: 1.2.0 - '@vue/compiler-core@3.5.9': + '@vue/compiler-core@3.5.10': dependencies: - '@babel/parser': 7.25.6 - '@vue/shared': 3.5.9 + '@babel/parser': 7.25.7 + '@vue/shared': 3.5.10 entities: 4.5.0 estree-walker: 2.0.2 source-map-js: 1.2.1 - '@vue/compiler-dom@3.5.9': + '@vue/compiler-dom@3.5.10': dependencies: - '@vue/compiler-core': 3.5.9 - '@vue/shared': 3.5.9 + '@vue/compiler-core': 3.5.10 + '@vue/shared': 3.5.10 - '@vue/compiler-sfc@3.5.9': + '@vue/compiler-sfc@3.5.10': dependencies: - '@babel/parser': 7.25.6 - '@vue/compiler-core': 3.5.9 - '@vue/compiler-dom': 3.5.9 - '@vue/compiler-ssr': 3.5.9 - '@vue/shared': 3.5.9 + '@babel/parser': 7.25.7 + '@vue/compiler-core': 3.5.10 + '@vue/compiler-dom': 3.5.10 + '@vue/compiler-ssr': 3.5.10 + '@vue/shared': 3.5.10 estree-walker: 2.0.2 magic-string: 0.30.11 postcss: 8.4.47 source-map-js: 1.2.1 - '@vue/compiler-ssr@3.5.9': + '@vue/compiler-ssr@3.5.10': dependencies: - '@vue/compiler-dom': 3.5.9 - '@vue/shared': 3.5.9 + '@vue/compiler-dom': 3.5.10 + '@vue/shared': 3.5.10 - '@vue/shared@3.5.9': {} + '@vue/shared@3.5.10': {} acorn-jsx@5.3.2(acorn@8.12.1): dependencies: @@ -3766,8 +4499,12 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-colors@4.1.3: {} + ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 @@ -3778,6 +4515,8 @@ snapshots: ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -3785,10 +4524,16 @@ snapshots: are-docs-informative@0.0.2: {} + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + argparse@2.0.1: {} assertion-error@2.0.1: {} + async@3.2.6: {} + asynckit@0.4.0: {} babel-plugin-jsx-dom-expressions@0.39.0(@babel/core@7.25.2): @@ -3819,8 +4564,16 @@ snapshots: balanced-match@1.0.2: {} + base64-js@1.5.1: {} + binary-extensions@2.3.0: {} + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + boolbase@1.0.0: {} brace-expansion@1.1.11: @@ -3843,6 +4596,11 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.0) + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + builtin-modules@3.3.0: {} bundle-require@5.0.0(esbuild@0.23.1): @@ -3854,6 +4612,11 @@ snapshots: callsites@3.1.0: {} + camel-case@3.0.0: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + caniuse-lite@1.0.30001664: {} ccount@2.0.1: {} @@ -3877,6 +4640,27 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + change-case@3.1.0: + dependencies: + camel-case: 3.0.0 + constant-case: 2.0.0 + dot-case: 2.1.1 + header-case: 1.0.1 + is-lower-case: 1.1.3 + is-upper-case: 1.1.2 + lower-case: 1.1.4 + lower-case-first: 1.0.2 + no-case: 2.3.2 + param-case: 2.1.1 + pascal-case: 2.0.1 + path-case: 2.1.1 + sentence-case: 2.1.1 + snake-case: 2.1.0 + swap-case: 1.1.2 + title-case: 2.1.1 + upper-case: 1.1.3 + upper-case-first: 1.1.2 + character-entities@2.0.2: {} check-error@2.1.1: {} @@ -3903,16 +4687,32 @@ snapshots: dependencies: escape-string-regexp: 1.0.5 + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-spinners@2.9.2: {} + cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone@1.0.4: {} + clsx@2.0.0: {} clsx@2.1.1: {} + cmdk-solid@1.1.0(solid-js@1.9.1): + dependencies: + '@kobalte/core': 0.12.6(solid-js@1.9.1) + '@kobalte/utils': 0.9.1(solid-js@1.9.1) + '@solid-primitives/deep': 0.2.9(solid-js@1.9.1) + '@solid-primitives/mutation-observer': 1.1.17(solid-js@1.9.1) + solid-js: 1.9.1 + color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -3939,6 +4739,11 @@ snapshots: consola@3.2.3: {} + constant-case@2.0.0: + dependencies: + snake-case: 2.1.0 + upper-case: 1.1.3 + convert-source-map@2.0.0: {} core-js-compat@3.38.1: @@ -3987,8 +4792,14 @@ snapshots: deep-is@0.1.4: {} + defaults@1.0.4: + dependencies: + clone: 1.0.4 + defu@6.1.4: {} + degit@2.8.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} @@ -4005,17 +4816,34 @@ snapshots: dependencies: esutils: 2.0.3 + dot-case@2.1.1: + dependencies: + no-case: 2.3.2 + duplexer@0.1.2: {} + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + electron-to-chromium@1.5.29: {} emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + enhanced-resolve@5.17.1: dependencies: graceful-fs: 4.2.11 tapable: 2.2.1 + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + entities@4.5.0: {} error-ex@1.3.2: @@ -4085,15 +4913,15 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.11.1(jiti@1.21.6)): + eslint-compat-utils@0.5.1(eslint@9.11.1(jiti@2.1.1)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) semver: 7.6.3 - eslint-config-flat-gitignore@0.3.0(eslint@9.11.1(jiti@1.21.6)): + eslint-config-flat-gitignore@0.3.0(eslint@9.11.1(jiti@2.1.1)): dependencies: '@eslint/compat': 1.1.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) find-up-simple: 1.0.0 eslint-flat-config-utils@0.4.0: @@ -4108,33 +4936,33 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-merge-processors@0.1.0(eslint@9.11.1(jiti@1.21.6)): + eslint-merge-processors@0.1.0(eslint@9.11.1(jiti@2.1.1)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) - eslint-plugin-antfu@2.7.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-antfu@2.7.0(eslint@9.11.1(jiti@2.1.1)): dependencies: '@antfu/utils': 0.7.10 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) - eslint-plugin-command@0.2.6(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-command@0.2.6(eslint@9.11.1(jiti@2.1.1)): dependencies: '@es-joy/jsdoccomment': 0.48.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) - eslint-plugin-es-x@7.8.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-es-x@7.8.0(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) '@eslint-community/regexpp': 4.11.1 - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.11.1(jiti@2.1.1) + eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@2.1.1)) - eslint-plugin-import-x@4.3.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2): + eslint-plugin-import-x@4.3.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) debug: 4.3.7 doctrine: 3.0.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) eslint-import-resolver-node: 0.3.9 get-tsconfig: 4.8.1 is-glob: 4.0.3 @@ -4146,14 +4974,14 @@ snapshots: - supports-color - typescript - eslint-plugin-jsdoc@50.3.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-jsdoc@50.3.0(eslint@9.11.1(jiti@2.1.1)): dependencies: '@es-joy/jsdoccomment': 0.48.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) espree: 10.1.0 esquery: 1.6.0 parse-imports: 2.2.1 @@ -4163,23 +4991,23 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-jsonc@2.16.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-jsonc@2.16.0(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) + eslint: 9.11.1(jiti@2.1.1) + eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@2.1.1)) espree: 9.6.1 graphemer: 1.4.0 jsonc-eslint-parser: 2.4.0 natural-compare: 1.4.0 synckit: 0.6.2 - eslint-plugin-n@17.10.3(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-n@17.10.3(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) enhanced-resolve: 5.17.1 - eslint: 9.11.1(jiti@1.21.6) - eslint-plugin-es-x: 7.8.0(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.11.1(jiti@2.1.1) + eslint-plugin-es-x: 7.8.0(eslint@9.11.1(jiti@2.1.1)) get-tsconfig: 4.8.1 globals: 15.9.0 ignore: 5.3.2 @@ -4188,48 +5016,48 @@ snapshots: eslint-plugin-no-only-tests@3.3.0: {} - eslint-plugin-perfectionist@3.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@1.21.6))): + eslint-plugin-perfectionist@3.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2)(vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@2.1.1))): dependencies: '@typescript-eslint/types': 8.7.0 - '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) - eslint: 9.11.1(jiti@1.21.6) + '@typescript-eslint/utils': 8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) + eslint: 9.11.1(jiti@2.1.1) minimatch: 9.0.5 natural-compare-lite: 1.4.0 optionalDependencies: - vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@2.1.1)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-regexp@2.6.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-regexp@2.6.0(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) '@eslint-community/regexpp': 4.11.1 comment-parser: 1.4.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-toml@0.11.1(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-toml@0.11.1(eslint@9.11.1(jiti@2.1.1)): dependencies: debug: 4.3.7 - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.11.1(jiti@2.1.1) + eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@2.1.1)) lodash: 4.17.21 toml-eslint-parser: 0.10.0 transitivePeerDependencies: - supports-color - eslint-plugin-unicorn@55.0.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-unicorn@55.0.0(eslint@9.11.1(jiti@2.1.1)): dependencies: '@babel/helper-validator-identifier': 7.24.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.1 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) esquery: 1.6.0 globals: 15.9.0 indent-string: 4.0.0 @@ -4242,41 +5070,41 @@ snapshots: semver: 7.6.3 strip-indent: 3.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1)): dependencies: - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2))(eslint@9.11.1(jiti@1.21.6))(typescript@5.6.2) + '@typescript-eslint/eslint-plugin': 8.7.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.1))(typescript@5.6.2) - eslint-plugin-vue@9.28.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-vue@9.28.0(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) - eslint: 9.11.1(jiti@1.21.6) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) + eslint: 9.11.1(jiti@2.1.1) globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 semver: 7.6.3 - vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@1.21.6)) + vue-eslint-parser: 9.4.3(eslint@9.11.1(jiti@2.1.1)) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color - eslint-plugin-yml@1.14.0(eslint@9.11.1(jiti@1.21.6)): + eslint-plugin-yml@1.14.0(eslint@9.11.1(jiti@2.1.1)): dependencies: debug: 4.3.7 - eslint: 9.11.1(jiti@1.21.6) - eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@1.21.6)) + eslint: 9.11.1(jiti@2.1.1) + eslint-compat-utils: 0.5.1(eslint@9.11.1(jiti@2.1.1)) lodash: 4.17.21 natural-compare: 1.4.0 yaml-eslint-parser: 1.2.3 transitivePeerDependencies: - supports-color - eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.9)(eslint@9.11.1(jiti@1.21.6)): + eslint-processor-vue-blocks@0.1.2(@vue/compiler-sfc@3.5.10)(eslint@9.11.1(jiti@2.1.1)): dependencies: - '@vue/compiler-sfc': 3.5.9 - eslint: 9.11.1(jiti@1.21.6) + '@vue/compiler-sfc': 3.5.10 + eslint: 9.11.1(jiti@2.1.1) eslint-scope@7.2.2: dependencies: @@ -4292,9 +5120,9 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.11.1(jiti@1.21.6): + eslint@9.11.1(jiti@2.1.1): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@1.21.6)) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1(jiti@2.1.1)) '@eslint-community/regexpp': 4.11.1 '@eslint/config-array': 0.18.0 '@eslint/core': 0.6.0 @@ -4332,7 +5160,7 @@ snapshots: strip-ansi: 6.0.1 text-table: 0.2.0 optionalDependencies: - jiti: 1.21.6 + jiti: 2.1.1 transitivePeerDependencies: - supports-color @@ -4348,6 +5176,8 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 + esprima@4.0.1: {} + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -4366,6 +5196,18 @@ snapshots: esutils@2.0.3: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -4384,7 +5226,7 @@ snapshots: dependencies: reusify: 1.0.4 - fdir@6.3.0(picomatch@4.0.2): + fdir@6.4.0(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -4392,6 +5234,10 @@ snapshots: dependencies: flat-cache: 4.0.1 + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -4415,12 +5261,27 @@ snapshots: flatted@3.3.1: {} + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + front-matter@4.0.2: + dependencies: + js-yaml: 3.14.1 + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + fsevents@2.3.3: optional: true @@ -4432,6 +5293,8 @@ snapshots: get-func-name@2.0.2: {} + get-stream@6.0.1: {} + get-tsconfig@4.8.1: dependencies: resolve-pkg-maps: 1.0.0 @@ -4444,6 +5307,15 @@ snapshots: dependencies: is-glob: 4.0.3 + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + globals@11.12.0: {} globals@13.24.0: @@ -4470,6 +5342,11 @@ snapshots: dependencies: function-bind: 1.1.2 + header-case@1.0.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + hosted-git-info@2.8.9: {} html-encoding-sniffer@4.0.0: @@ -4478,6 +5355,8 @@ snapshots: html-entities@2.3.3: {} + html-escaper@2.0.2: {} + http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.1 @@ -4492,10 +5371,37 @@ snapshots: transitivePeerDependencies: - supports-color + human-signals@2.1.0: {} + + hygen@6.2.11: + dependencies: + '@types/node': 17.0.45 + chalk: 4.1.2 + change-case: 3.1.0 + debug: 4.3.7 + degit: 2.8.4 + ejs: 3.1.10 + enquirer: 2.4.1 + execa: 5.1.1 + front-matter: 4.0.2 + fs-extra: 10.1.0 + ignore-walk: 4.0.1 + inflection: 1.13.4 + ora: 5.4.1 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 + ieee754@1.2.1: {} + + ignore-walk@4.0.1: + dependencies: + minimatch: 3.1.2 + ignore@5.3.2: {} import-fresh@3.3.0: @@ -4519,6 +5425,10 @@ snapshots: indent-string@4.0.0: {} + inflection@1.13.4: {} + + inherits@2.0.4: {} + is-arrayish@0.2.1: {} is-binary-path@2.1.0: @@ -4541,16 +5451,64 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-interactive@1.0.0: {} + + is-lower-case@1.1.3: + dependencies: + lower-case: 1.1.4 + is-number@7.0.0: {} is-path-inside@3.0.3: {} is-potential-custom-element-name@1.0.1: {} + is-stream@2.0.1: {} + + is-unicode-supported@0.1.0: {} + + is-upper-case@1.1.2: + dependencies: + upper-case: 1.1.3 + is-what@4.1.16: {} isexe@2.0.0: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.7 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -4564,8 +5522,16 @@ snapshots: jiti@2.0.0-beta.3: {} + jiti@2.1.1: + optional: true + js-tokens@4.0.0: {} + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + js-yaml@4.1.0: dependencies: argparse: 2.0.1 @@ -4623,6 +5589,12 @@ snapshots: espree: 9.6.1 semver: 7.6.3 + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -4657,12 +5629,25 @@ snapshots: lodash@4.17.21: {} + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + longest-streak@3.1.0: {} loupe@3.1.1: dependencies: get-func-name: 2.0.2 + lower-case-first@1.0.2: + dependencies: + lower-case: 1.1.4 + + lower-case@1.1.4: {} + + lru-cache@10.4.3: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -4671,6 +5656,16 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magicast@0.3.5: + dependencies: + '@babel/parser': 7.25.7 + '@babel/types': 7.25.7 + source-map-js: 1.2.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + markdown-table@3.0.3: {} mdast-util-find-and-replace@3.0.1: @@ -4780,6 +5775,8 @@ snapshots: dependencies: is-what: 4.1.16 + merge-stream@2.0.0: {} + merge2@1.4.1: {} micromark-core-commonmark@2.0.1: @@ -4984,16 +5981,24 @@ snapshots: dependencies: mime-db: 1.52.0 + mimic-fn@2.1.0: {} + min-indent@1.0.1: {} minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.5: dependencies: brace-expansion: 2.0.1 + minipass@7.1.2: {} + mlly@1.7.1: dependencies: acorn: 8.12.1 @@ -5011,6 +6016,10 @@ snapshots: natural-compare@1.4.0: {} + no-case@2.3.2: + dependencies: + lower-case: 1.1.4 + node-fetch-native@1.6.4: {} node-releases@2.0.18: {} @@ -5024,6 +6033,10 @@ snapshots: normalize-path@3.0.0: {} + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -5036,6 +6049,10 @@ snapshots: node-fetch-native: 1.6.4 ufo: 1.5.4 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -5045,6 +6062,18 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -5063,8 +6092,14 @@ snapshots: p-try@2.2.0: {} + package-json-from-dist@1.0.1: {} + package-manager-detector@0.2.0: {} + param-case@2.1.1: + dependencies: + no-case: 2.3.2 + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -5087,12 +6122,26 @@ snapshots: dependencies: entities: 4.5.0 + pascal-case@2.0.1: + dependencies: + camel-case: 3.0.0 + upper-case-first: 1.1.2 + + path-case@2.1.1: + dependencies: + no-case: 2.3.2 + path-exists@4.0.0: {} path-key@3.1.1: {} path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + pathe@1.1.2: {} pathval@2.0.0: {} @@ -5151,6 +6200,12 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -5182,6 +6237,11 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + reusify@1.0.4: {} rollup@4.22.5: @@ -5206,12 +6266,37 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.22.5 fsevents: 2.3.3 + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + optional: true + rrweb-cssom@0.7.1: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} + safer-buffer@2.1.2: {} saxes@6.0.0: @@ -5230,6 +6315,11 @@ snapshots: semver@7.6.3: {} + sentence-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case-first: 1.1.2 + seroval-plugins@1.1.1(seroval@1.1.1): dependencies: seroval: 1.1.1 @@ -5244,6 +6334,10 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + sirv@2.0.4: dependencies: '@polka/url': 1.0.0-next.28 @@ -5254,6 +6348,10 @@ snapshots: slashes@3.0.12: {} + snake-case@2.1.0: + dependencies: + no-case: 2.3.2 + solid-js@1.9.1: dependencies: csstype: 3.1.3 @@ -5279,6 +6377,10 @@ snapshots: transitivePeerDependencies: - supports-color + solid-sonner@0.2.8(solid-js@1.9.1): + dependencies: + solid-js: 1.9.1 + source-map-js@1.2.1: {} spdx-correct@3.2.0: @@ -5300,6 +6402,8 @@ snapshots: spdx-license-ids@3.0.20: {} + sprintf-js@1.0.3: {} + stable-hash@0.0.4: {} stackback@0.0.2: {} @@ -5312,10 +6416,26 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-final-newline@2.0.0: {} + strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -5332,6 +6452,11 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + swap-case@1.1.2: + dependencies: + lower-case: 1.1.4 + upper-case: 1.1.3 + symbol-tree@3.2.4: {} synckit@0.6.2: @@ -5347,15 +6472,21 @@ snapshots: tapable@2.2.1: {} + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + text-table@0.2.0: {} tinybench@2.9.0: {} tinyexec@0.3.0: {} - tinyglobby@0.2.6: + tinyglobby@0.2.9: dependencies: - fdir: 6.3.0(picomatch@4.0.2) + fdir: 6.4.0(picomatch@4.0.2) picomatch: 4.0.2 tinypool@1.0.1: {} @@ -5364,6 +6495,11 @@ snapshots: tinyspy@3.0.2: {} + title-case@2.1.1: + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + tldts-core@6.1.47: {} tldts@6.1.47: @@ -5444,15 +6580,17 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unocss-preset-animations@1.1.0(@unocss/preset-wind@0.62.4)(unocss@0.62.4(postcss@8.4.47)(rollup@4.22.5)(vite@5.4.8)): + universalify@2.0.1: {} + + unocss-preset-animations@1.1.0(@unocss/preset-wind@0.63.2)(unocss@0.62.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8)): dependencies: - '@unocss/preset-wind': 0.62.4 - unocss: 0.62.4(postcss@8.4.47)(rollup@4.22.5)(vite@5.4.8) + '@unocss/preset-wind': 0.63.2 + unocss: 0.62.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8) - unocss@0.62.4(postcss@8.4.47)(rollup@4.22.5)(vite@5.4.8): + unocss@0.62.4(postcss@8.4.47)(rollup@4.24.0)(vite@5.4.8): dependencies: - '@unocss/astro': 0.62.4(rollup@4.22.5)(vite@5.4.8) - '@unocss/cli': 0.62.4(rollup@4.22.5) + '@unocss/astro': 0.62.4(rollup@4.24.0)(vite@5.4.8) + '@unocss/cli': 0.62.4(rollup@4.24.0) '@unocss/core': 0.62.4 '@unocss/postcss': 0.62.4(postcss@8.4.47) '@unocss/preset-attributify': 0.62.4 @@ -5467,7 +6605,7 @@ snapshots: '@unocss/transformer-compile-class': 0.62.4 '@unocss/transformer-directives': 0.62.4 '@unocss/transformer-variant-group': 0.62.4 - '@unocss/vite': 0.62.4(rollup@4.22.5)(vite@5.4.8) + '@unocss/vite': 0.62.4(rollup@4.24.0)(vite@5.4.8) optionalDependencies: vite: 5.4.8 transitivePeerDependencies: @@ -5481,6 +6619,12 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.0 + upper-case-first@1.1.2: + dependencies: + upper-case: 1.1.3 + + upper-case@1.1.3: {} + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -5494,7 +6638,7 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@2.1.1: + vite-node@2.1.2: dependencies: cac: 6.7.14 debug: 4.3.7 @@ -5539,15 +6683,15 @@ snapshots: optionalDependencies: vite: 5.4.8 - vitest@2.1.1(jsdom@25.0.1): + vitest@2.1.2(jsdom@25.0.1): dependencies: - '@vitest/expect': 2.1.1 - '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(vite@5.4.8) - '@vitest/pretty-format': 2.1.1 - '@vitest/runner': 2.1.1 - '@vitest/snapshot': 2.1.1 - '@vitest/spy': 2.1.1 - '@vitest/utils': 2.1.1 + '@vitest/expect': 2.1.2 + '@vitest/mocker': 2.1.2(@vitest/spy@2.1.2)(vite@5.4.8) + '@vitest/pretty-format': 2.1.2 + '@vitest/runner': 2.1.2 + '@vitest/snapshot': 2.1.2 + '@vitest/spy': 2.1.2 + '@vitest/utils': 2.1.2 chai: 5.1.1 debug: 4.3.7 magic-string: 0.30.11 @@ -5558,7 +6702,7 @@ snapshots: tinypool: 1.0.1 tinyrainbow: 1.2.0 vite: 5.4.8 - vite-node: 2.1.1 + vite-node: 2.1.2 why-is-node-running: 2.3.0 optionalDependencies: jsdom: 25.0.1 @@ -5573,10 +6717,10 @@ snapshots: - supports-color - terser - vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@1.21.6)): + vue-eslint-parser@9.4.3(eslint@9.11.1(jiti@2.1.1)): dependencies: debug: 4.3.7 - eslint: 9.11.1(jiti@1.21.6) + eslint: 9.11.1(jiti@2.1.1) eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 @@ -5590,6 +6734,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + webidl-conversions@7.0.0: {} whatwg-encoding@3.1.1: @@ -5620,6 +6768,12 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + ws@8.18.0: {} xml-name-validator@4.0.0: {}