From be700230c02054333b661793260072c85c69bf85 Mon Sep 17 00:00:00 2001 From: Legendaxicad Date: Sat, 6 Jan 2024 06:49:56 +0700 Subject: [PATCH] feat: Added settings, themes, css bases, and fixed errors --- .eslintignore | 16 + .eslintrc.cjs | 62 + .gitignore | 12 + .husky/commit-msg | 18 + .husky/pre-commit | 4 + .npmrc | 1 + .prettierignore | 4 + .prettierrc | 8 + README.md | 11 + commitlint.config.cjs | 6 + components.json | 13 + package.json | 60 + pnpm-lock.yaml | 3563 +++++++++++++++++ postcss.config.js | 6 + src/app.d.ts | 13 + src/app.html | 12 + src/app.pcss | 89 + src/lib/api/gacha.ts | 4 + src/lib/components/navigator/Header.svelte | 26 + src/lib/components/navigator/Sidebar.svelte | 161 + .../alert-dialog/alert-dialog-action.svelte | 21 + .../alert-dialog/alert-dialog-cancel.svelte | 21 + .../alert-dialog/alert-dialog-content.svelte | 28 + .../alert-dialog-description.svelte | 16 + .../alert-dialog/alert-dialog-footer.svelte | 16 + .../alert-dialog/alert-dialog-header.svelte | 13 + .../alert-dialog/alert-dialog-overlay.svelte | 21 + .../alert-dialog/alert-dialog-portal.svelte | 9 + .../ui/alert-dialog/alert-dialog-title.svelte | 14 + src/lib/components/ui/alert-dialog/index.ts | 40 + src/lib/components/ui/button/button.svelte | 25 + src/lib/components/ui/button/index.ts | 57 + .../components/ui/card/card-content.svelte | 13 + .../ui/card/card-description.svelte | 13 + src/lib/components/ui/card/card-footer.svelte | 13 + src/lib/components/ui/card/card-header.svelte | 13 + src/lib/components/ui/card/card-title.svelte | 21 + src/lib/components/ui/card/card.svelte | 16 + src/lib/components/ui/card/index.ts | 24 + .../ui/collapsible/collapsible-content.svelte | 15 + src/lib/components/ui/collapsible/index.ts | 15 + src/lib/components/ui/icon/icon.svelte | 84 + src/lib/services/gacha.ts | 5 + src/lib/services/i18n.ts | 15 + src/lib/store/global_state.ts | 32 + src/lib/structs/gacha.ts | 259 ++ src/lib/structs/settings.ts | 276 ++ src/lib/utils.ts | 56 + src/routes/+layout.svelte | 27 + src/routes/+page.svelte | 2 + src/routes/settings/+page.svelte | 129 + static/favicon.png | Bin 0 -> 1571 bytes static/images/atk_flat.png | Bin 0 -> 2936 bytes static/images/atk_percent.png | Bin 0 -> 6200 bytes static/images/crit_damage.png | Bin 0 -> 7221 bytes static/images/crit_rate.png | Bin 0 -> 6145 bytes static/images/defense_flat.png | Bin 0 -> 3449 bytes static/images/defense_percent.png | Bin 0 -> 6151 bytes static/images/em.png | Bin 0 -> 7020 bytes static/images/er.png | Bin 0 -> 5579 bytes static/images/hp_flat.png | Bin 0 -> 7012 bytes static/images/hp_percent.png | Bin 0 -> 8585 bytes svelte.config.js | 17 + tailwind.config.js | 74 + tsconfig.json | 14 + vite.config.js | 6 + 66 files changed, 5509 insertions(+) create mode 100644 .eslintignore create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit create mode 100644 .npmrc create mode 100644 .prettierignore create mode 100644 .prettierrc create mode 100644 README.md create mode 100644 commitlint.config.cjs create mode 100644 components.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 postcss.config.js create mode 100644 src/app.d.ts create mode 100644 src/app.html create mode 100644 src/app.pcss create mode 100644 src/lib/api/gacha.ts create mode 100644 src/lib/components/navigator/Header.svelte create mode 100644 src/lib/components/navigator/Sidebar.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-action.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-content.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-description.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-header.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte create mode 100644 src/lib/components/ui/alert-dialog/alert-dialog-title.svelte create mode 100644 src/lib/components/ui/alert-dialog/index.ts create mode 100644 src/lib/components/ui/button/button.svelte create mode 100644 src/lib/components/ui/button/index.ts create mode 100644 src/lib/components/ui/card/card-content.svelte create mode 100644 src/lib/components/ui/card/card-description.svelte create mode 100644 src/lib/components/ui/card/card-footer.svelte create mode 100644 src/lib/components/ui/card/card-header.svelte create mode 100644 src/lib/components/ui/card/card-title.svelte create mode 100644 src/lib/components/ui/card/card.svelte create mode 100644 src/lib/components/ui/card/index.ts create mode 100644 src/lib/components/ui/collapsible/collapsible-content.svelte create mode 100644 src/lib/components/ui/collapsible/index.ts create mode 100644 src/lib/components/ui/icon/icon.svelte create mode 100644 src/lib/services/gacha.ts create mode 100644 src/lib/services/i18n.ts create mode 100644 src/lib/store/global_state.ts create mode 100644 src/lib/structs/gacha.ts create mode 100644 src/lib/structs/settings.ts create mode 100644 src/lib/utils.ts create mode 100644 src/routes/+layout.svelte create mode 100644 src/routes/+page.svelte create mode 100644 src/routes/settings/+page.svelte create mode 100644 static/favicon.png create mode 100644 static/images/atk_flat.png create mode 100644 static/images/atk_percent.png create mode 100644 static/images/crit_damage.png create mode 100644 static/images/crit_rate.png create mode 100644 static/images/defense_flat.png create mode 100644 static/images/defense_percent.png create mode 100644 static/images/em.png create mode 100644 static/images/er.png create mode 100644 static/images/hp_flat.png create mode 100644 static/images/hp_percent.png create mode 100644 svelte.config.js create mode 100644 tailwind.config.js create mode 100644 tsconfig.json create mode 100644 vite.config.js diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 00000000..2957f596 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,16 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example + +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock + +# Ignore shadcn files +src/lib/components/ui \ No newline at end of file diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 00000000..16a21345 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,62 @@ +/** @type { import("eslint").Linter.Config } */ +module.exports = { + root: true, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:svelte/recommended', + 'prettier' + ], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint'], + parserOptions: { + sourceType: 'module', + ecmaVersion: 2020, + extraFileExtensions: ['.svelte'] + }, + env: { + browser: true, + es2017: true, + node: true + }, + rules: { + 'no-unused-vars': 'off', + '@typescript-eslint/no-unused-vars': [ + 'error', + { + argsIgnorePattern: '^_', + varsIgnorePattern: '^_', + caughtErrorsIgnorePattern: '^_' + } + ], + '@typescript-eslint/naming-convention': [ + 'error', + { + selector: ['default'], + format: ['camelCase', 'PascalCase'], + leadingUnderscore: 'allow' + }, + { + selector: ['variable'], + format: ['camelCase', 'UPPER_CASE'] + }, + { + selector: ['objectLiteralProperty'], + format: ['camelCase', 'UPPER_CASE'] + }, + { + selector: ['typeLike'], + format: ['PascalCase'] + } + ] + }, + overrides: [ + { + files: ['*.svelte'], + parser: 'svelte-eslint-parser', + parserOptions: { + parser: '@typescript-eslint/parser' + } + } + ] +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..671da202 --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +.DS_Store +node_modules +/build +/.svelte-kit +/package +.env +.env.* +!.env.example +vite.config.js.timestamp-* +vite.config.ts.timestamp-* +.idea +/.npm-only-allow \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 00000000..28c08a00 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,18 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +# Get the commit message +commit_msg=$(cat "$1") +original_commit_msg=$(cat "$1") + +# Check if the commit message contains the [CI Skip] prefix +if echo "$commit_msg" | grep -q '^\[CI Skip\]'; then + # Remove the [CI Skip] prefix + commit_msg=$(echo "$commit_msg" | sed 's/^\[CI Skip\] //') + + # Write the modified commit message back to the file + echo "$commit_msg" > "$1" +fi + +pnpm exec commitlint --edit "$1" +echo "$original_commit_msg" > "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 00000000..4a68a25e --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +pnpm format && pnpm lint diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..b6f27f13 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..cc41cea9 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,4 @@ +# Ignore files for PNPM, NPM and YARN +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000..95730232 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "useTabs": true, + "singleQuote": true, + "trailingComma": "none", + "printWidth": 100, + "plugins": ["prettier-plugin-svelte"], + "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] +} diff --git a/README.md b/README.md new file mode 100644 index 00000000..1fbc43cd --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Dval.in + +## This is dval.in, successor and better version of paimon.moe, and is the one site for all Genshin Impact Guides and Help. Character, Info, Weapons, Wishes, Guides, and more in one spot. + +### REQUIRED - Commit Messages: Use the Conventional Commits (https://www.conventionalcommits.org/en/v1.0.0/) + +### Development Guide + +1. Clone the repository +2. Do `pnpm install` to install the dependencies and git hooks (MUST DO) +3. Do `pnpm run dev` to start the development server diff --git a/commitlint.config.cjs b/commitlint.config.cjs new file mode 100644 index 00000000..521f0726 --- /dev/null +++ b/commitlint.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + extends: ['@commitlint/config-conventional'], + rules: { + 'subject-case': [0, 'never'] + } +}; diff --git a/components.json b/components.json new file mode 100644 index 00000000..ee5bfcb9 --- /dev/null +++ b/components.json @@ -0,0 +1,13 @@ +{ + "$schema": "https://shadcn-svelte.com/schema.json", + "style": "default", + "tailwind": { + "config": "tailwind.config.js", + "css": "src/app.pcss", + "baseColor": "slate" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils" + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..106c17b0 --- /dev/null +++ b/package.json @@ -0,0 +1,60 @@ +{ + "name": "dvalin", + "version": "0.0.1", + "private": true, + "scripts": { + "preinstall": "node -e \"if(process.env.npm_execpath.indexOf('pnpm') === -1) throw new Error('You must use PNPM to install')\"", + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", + "prepare": "husky install", + "lint": "prettier --check . && eslint .", + "format": "prettier --write ." + }, + "devDependencies": { + "@commitlint/cli": "^18.4.3", + "@commitlint/config-conventional": "^18.4.3", + "@sveltejs/adapter-static": "^3.0.1", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "@types/eslint": "8.56.0", + "@typescript-eslint/eslint-plugin": "^6.0.0", + "@typescript-eslint/parser": "^6.0.0", + "autoprefixer": "^10.4.16", + "eslint": "^8.56.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-svelte": "^2.35.1", + "husky": "^8.0.0", + "postcss": "^8.4.32", + "prettier": "^3.1.1", + "prettier-plugin-svelte": "^3.1.2", + "sass": "^1.69.6", + "svelte": "^4.2.7", + "svelte-check": "^3.6.0", + "svelte-lucide": "^0.8.2", + "tailwindcss": "^3.4.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3" + }, + "type": "module", + "dependencies": { + "@mdi/js": "^7.4.47", + "bits-ui": "^0.12.0", + "clsx": "^2.1.0", + "i18next": "^23.7.12", + "lucide-svelte": "^0.303.0", + "svelte-i18next": "^2.2.2", + "svelte-persisted-store": "^0.8.0", + "tailwind-merge": "^2.2.0", + "tailwind-variants": "^0.1.19", + "tw-colors": "^3.3.1" + }, + "engines": { + "npm": "please-use-pnpm", + "yarn": "please-use-pnpm" + }, + "description": "This is dval.in, successor and better version of paimon.moe, and is the one site for all Genshin Impact Guides and Help. Character, Info, Weapons, Wishes, Guides, and more in one spot." +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..dab7a341 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,3563 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@mdi/js': + specifier: ^7.4.47 + version: 7.4.47 + bits-ui: + specifier: ^0.12.0 + version: 0.12.0(svelte@4.2.8) + clsx: + specifier: ^2.1.0 + version: 2.1.0 + i18next: + specifier: ^23.7.12 + version: 23.7.12 + lucide-svelte: + specifier: ^0.303.0 + version: 0.303.0(svelte@4.2.8) + svelte-i18next: + specifier: ^2.2.2 + version: 2.2.2(i18next@23.7.12)(svelte@4.2.8) + svelte-persisted-store: + specifier: ^0.8.0 + version: 0.8.0(svelte@4.2.8) + tailwind-merge: + specifier: ^2.2.0 + version: 2.2.0 + tailwind-variants: + specifier: ^0.1.19 + version: 0.1.19(tailwindcss@3.4.0) + tw-colors: + specifier: ^3.3.1 + version: 3.3.1(tailwindcss@3.4.0) + +devDependencies: + '@commitlint/cli': + specifier: ^18.4.3 + version: 18.4.3(typescript@5.3.3) + '@commitlint/config-conventional': + specifier: ^18.4.3 + version: 18.4.3 + '@sveltejs/adapter-static': + specifier: ^3.0.1 + version: 3.0.1(@sveltejs/kit@2.0.6) + '@sveltejs/kit': + specifier: ^2.0.0 + version: 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + '@sveltejs/vite-plugin-svelte': + specifier: ^3.0.0 + version: 3.0.1(svelte@4.2.8)(vite@5.0.10) + '@types/eslint': + specifier: 8.56.0 + version: 8.56.0 + '@typescript-eslint/eslint-plugin': + specifier: ^6.0.0 + version: 6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/parser': + specifier: ^6.0.0 + version: 6.16.0(eslint@8.56.0)(typescript@5.3.3) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.32) + eslint: + specifier: ^8.56.0 + version: 8.56.0 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) + eslint-plugin-svelte: + specifier: ^2.35.1 + version: 2.35.1(eslint@8.56.0)(svelte@4.2.8) + husky: + specifier: ^8.0.0 + version: 8.0.3 + postcss: + specifier: ^8.4.32 + version: 8.4.32 + prettier: + specifier: ^3.1.1 + version: 3.1.1 + prettier-plugin-svelte: + specifier: ^3.1.2 + version: 3.1.2(prettier@3.1.1)(svelte@4.2.8) + sass: + specifier: ^1.69.6 + version: 1.69.6 + svelte: + specifier: ^4.2.7 + version: 4.2.8 + svelte-check: + specifier: ^3.6.0 + version: 3.6.2(postcss@8.4.32)(sass@1.69.6)(svelte@4.2.8) + svelte-lucide: + specifier: ^0.8.2 + version: 0.8.2(svelte@4.2.8) + tailwindcss: + specifier: ^3.4.0 + version: 3.4.0 + tslib: + specifier: ^2.4.1 + version: 2.6.2 + typescript: + specifier: ^5.0.0 + version: 5.3.3 + vite: + specifier: ^5.0.3 + version: 5.0.10(@types/node@18.19.3)(sass@1.69.6) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + dev: true + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + /@ampproject/remapping@2.2.1: + resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + dev: true + + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/runtime@7.23.7: + resolution: {integrity: sha512-w06OXVOFso7LcbzMiDGt+3X7Rh7Ho8MmgPoWU3rarH+8upf+wSU/grlGbWzQyr3DkdN6ZeuMFjpdwW0Q+HxobA==} + engines: {node: '>=6.9.0'} + dependencies: + regenerator-runtime: 0.14.1 + dev: false + + /@commitlint/cli@18.4.3(typescript@5.3.3): + resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} + engines: {node: '>=v18'} + hasBin: true + dependencies: + '@commitlint/format': 18.4.3 + '@commitlint/lint': 18.4.3 + '@commitlint/load': 18.4.3(typescript@5.3.3) + '@commitlint/read': 18.4.3 + '@commitlint/types': 18.4.3 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - typescript + dev: true + + /@commitlint/config-conventional@18.4.3: + resolution: {integrity: sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==} + engines: {node: '>=v18'} + dependencies: + conventional-changelog-conventionalcommits: 7.0.2 + dev: true + + /@commitlint/config-validator@18.4.3: + resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.4.3 + ajv: 8.12.0 + dev: true + + /@commitlint/ensure@18.4.3: + resolution: {integrity: sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.4.3 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + dev: true + + /@commitlint/execute-rule@18.4.3: + resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/format@18.4.3: + resolution: {integrity: sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.4.3 + chalk: 4.1.2 + dev: true + + /@commitlint/is-ignored@18.4.3: + resolution: {integrity: sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.4.3 + semver: 7.5.4 + dev: true + + /@commitlint/lint@18.4.3: + resolution: {integrity: sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/is-ignored': 18.4.3 + '@commitlint/parse': 18.4.3 + '@commitlint/rules': 18.4.3 + '@commitlint/types': 18.4.3 + dev: true + + /@commitlint/load@18.4.3(typescript@5.3.3): + resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 18.4.3 + '@commitlint/execute-rule': 18.4.3 + '@commitlint/resolve-extends': 18.4.3 + '@commitlint/types': 18.4.3 + '@types/node': 18.19.3 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.3.3) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + transitivePeerDependencies: + - typescript + dev: true + + /@commitlint/message@18.4.3: + resolution: {integrity: sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/parse@18.4.3: + resolution: {integrity: sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/types': 18.4.3 + conventional-changelog-angular: 7.0.0 + conventional-commits-parser: 5.0.0 + dev: true + + /@commitlint/read@18.4.3: + resolution: {integrity: sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/top-level': 18.4.3 + '@commitlint/types': 18.4.3 + fs-extra: 11.2.0 + git-raw-commits: 2.0.11 + minimist: 1.2.8 + dev: true + + /@commitlint/resolve-extends@18.4.3: + resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/config-validator': 18.4.3 + '@commitlint/types': 18.4.3 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + dev: true + + /@commitlint/rules@18.4.3: + resolution: {integrity: sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==} + engines: {node: '>=v18'} + dependencies: + '@commitlint/ensure': 18.4.3 + '@commitlint/message': 18.4.3 + '@commitlint/to-lines': 18.4.3 + '@commitlint/types': 18.4.3 + execa: 5.1.1 + dev: true + + /@commitlint/to-lines@18.4.3: + resolution: {integrity: sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==} + engines: {node: '>=v18'} + dev: true + + /@commitlint/top-level@18.4.3: + resolution: {integrity: sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==} + engines: {node: '>=v18'} + dependencies: + find-up: 5.0.0 + dev: true + + /@commitlint/types@18.4.3: + resolution: {integrity: sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==} + engines: {node: '>=v18'} + dependencies: + chalk: 4.1.2 + dev: true + + /@esbuild/aix-ppc64@0.19.10: + resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.19.10: + resolution: {integrity: sha512-1X4CClKhDgC3by7k8aOWZeBXQX8dHT5QAMCAQDArCLaYfkppoARvh0fit3X2Qs+MXDngKcHv6XXyQCpY0hkK1Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.19.10: + resolution: {integrity: sha512-7W0bK7qfkw1fc2viBfrtAEkDKHatYfHzr/jKAHNr9BvkYDXPcC6bodtm8AyLJNNuqClLNaeTLuwURt4PRT9d7w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.19.10: + resolution: {integrity: sha512-O/nO/g+/7NlitUxETkUv/IvADKuZXyH4BHf/g/7laqKC4i/7whLpB0gvpPc2zpF0q9Q6FXS3TS75QHac9MvVWw==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.19.10: + resolution: {integrity: sha512-YSRRs2zOpwypck+6GL3wGXx2gNP7DXzetmo5pHXLrY/VIMsS59yKfjPizQ4lLt5vEI80M41gjm2BxrGZ5U+VMA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.19.10: + resolution: {integrity: sha512-alfGtT+IEICKtNE54hbvPg13xGBe4GkVxyGWtzr+yHO7HIiRJppPDhOKq3zstTcVf8msXb/t4eavW3jCDpMSmA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.19.10: + resolution: {integrity: sha512-dMtk1wc7FSH8CCkE854GyGuNKCewlh+7heYP/sclpOG6Cectzk14qdUIY5CrKDbkA/OczXq9WesqnPl09mj5dg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.19.10: + resolution: {integrity: sha512-G5UPPspryHu1T3uX8WiOEUa6q6OlQh6gNl4CO4Iw5PS+Kg5bVggVFehzXBJY6X6RSOMS8iXDv2330VzaObm4Ag==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.19.10: + resolution: {integrity: sha512-QxaouHWZ+2KWEj7cGJmvTIHVALfhpGxo3WLmlYfJ+dA5fJB6lDEIg+oe/0//FuyVHuS3l79/wyBxbHr0NgtxJQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.19.10: + resolution: {integrity: sha512-j6gUW5aAaPgD416Hk9FHxn27On28H4eVI9rJ4az7oCGTFW48+LcgNDBN+9f8rKZz7EEowo889CPKyeaD0iw9Kg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.19.10: + resolution: {integrity: sha512-4ub1YwXxYjj9h1UIZs2hYbnTZBtenPw5NfXCRgEkGb0b6OJ2gpkMvDqRDYIDRjRdWSe/TBiZltm3Y3Q8SN1xNg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.19.10: + resolution: {integrity: sha512-lo3I9k+mbEKoxtoIbM0yC/MZ1i2wM0cIeOejlVdZ3D86LAcFXFRdeuZmh91QJvUTW51bOK5W2BznGNIl4+mDaA==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.19.10: + resolution: {integrity: sha512-J4gH3zhHNbdZN0Bcr1QUGVNkHTdpijgx5VMxeetSk6ntdt+vR1DqGmHxQYHRmNb77tP6GVvD+K0NyO4xjd7y4A==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.19.10: + resolution: {integrity: sha512-tgT/7u+QhV6ge8wFMzaklOY7KqiyitgT1AUHMApau32ZlvTB/+efeCtMk4eXS+uEymYK249JsoiklZN64xt6oQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.19.10: + resolution: {integrity: sha512-0f/spw0PfBMZBNqtKe5FLzBDGo0SKZKvMl5PHYQr3+eiSscfJ96XEknCe+JoOayybWUFQbcJTrk946i3j9uYZA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.19.10: + resolution: {integrity: sha512-pZFe0OeskMHzHa9U38g+z8Yx5FNCLFtUnJtQMpwhS+r4S566aK2ci3t4NCP4tjt6d5j5uo4h7tExZMjeKoehAA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.19.10: + resolution: {integrity: sha512-SpYNEqg/6pZYoc+1zLCjVOYvxfZVZj6w0KROZ3Fje/QrM3nfvT2llI+wmKSrWuX6wmZeTapbarvuNNK/qepSgA==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.19.10: + resolution: {integrity: sha512-ACbZ0vXy9zksNArWlk2c38NdKg25+L9pr/mVaj9SUq6lHZu/35nx2xnQVRGLrC1KKQqJKRIB0q8GspiHI3J80Q==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.19.10: + resolution: {integrity: sha512-PxcgvjdSjtgPMiPQrM3pwSaG4kGphP+bLSb+cihuP0LYdZv1epbAIecHVl5sD3npkfYBZ0ZnOjR878I7MdJDFg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.19.10: + resolution: {integrity: sha512-ZkIOtrRL8SEJjr+VHjmW0znkPs+oJXhlJbNwfI37rvgeMtk3sxOQevXPXjmAPZPigVTncvFqLMd+uV0IBSEzqA==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.19.10: + resolution: {integrity: sha512-+Sa4oTDbpBfGpl3Hn3XiUe4f8TU2JF7aX8cOfqFYMMjXp6ma6NJDztl5FDG8Ezx0OjwGikIHw+iA54YLDNNVfw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.19.10: + resolution: {integrity: sha512-EOGVLK1oWMBXgfttJdPHDTiivYSjX6jDNaATeNOaCOFEVcfMjtbx7WVQwPSE1eIfCp/CaSF2nSrDtzc4I9f8TQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.19.10: + resolution: {integrity: sha512-whqLG6Sc70AbU73fFYvuYzaE4MNMBIlR1Y/IrUeOXFrWHxBEjjbZaQ3IXIQS8wJdAzue2GwYZCjOrgrU1oUHoA==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.56.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.1.4: + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.0 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /@floating-ui/core@1.5.2: + resolution: {integrity: sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==} + dependencies: + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/dom@1.5.3: + resolution: {integrity: sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==} + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/utils': 0.1.6 + dev: false + + /@floating-ui/utils@0.1.6: + resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + dev: true + + /@internationalized/date@3.5.1: + resolution: {integrity: sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + 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 + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + + /@mdi/js@7.4.47: + resolution: {integrity: sha512-KPnNOtm5i2pMabqZxpUz7iQf+mfrYZyKCZ8QNz85czgEt7cuHcGorWfdzUMWYA0SD+a6Hn4FmJ+YhzzzjkTZrQ==} + dev: false + + /@melt-ui/svelte@0.65.2(svelte@4.2.8): + resolution: {integrity: sha512-BpsSl9Bjp1++8U3+LaDOFUoX/PFQ9N7QWFhlFdUEZduhrbVyU70v9A459SKrQ+esFSjvh1AvqJYkMAUJXJlAmQ==} + peerDependencies: + svelte: '>=3 <5' + dependencies: + '@floating-ui/core': 1.5.2 + '@floating-ui/dom': 1.5.3 + '@internationalized/date': 3.5.1 + dequal: 2.0.3 + focus-trap: 7.5.4 + nanoid: 4.0.2 + svelte: 4.2.8 + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.16.0 + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + optional: true + + /@polka/url@1.0.0-next.24: + resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} + dev: true + + /@rollup/rollup-android-arm-eabi@4.9.1: + resolution: {integrity: sha512-6vMdBZqtq1dVQ4CWdhFwhKZL6E4L1dV6jUjuBvsavvNJSppzi6dLBbuV+3+IyUREaj9ZFvQefnQm28v4OCXlig==} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-android-arm64@4.9.1: + resolution: {integrity: sha512-Jto9Fl3YQ9OLsTDWtLFPtaIMSL2kwGyGoVCmPC8Gxvym9TCZm4Sie+cVeblPO66YZsYH8MhBKDMGZ2NDxuk/XQ==} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-arm64@4.9.1: + resolution: {integrity: sha512-LtYcLNM+bhsaKAIGwVkh5IOWhaZhjTfNOkGzGqdHvhiCUVuJDalvDxEdSnhFzAn+g23wgsycmZk1vbnaibZwwA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-darwin-x64@4.9.1: + resolution: {integrity: sha512-KyP/byeXu9V+etKO6Lw3E4tW4QdcnzDG/ake031mg42lob5tN+5qfr+lkcT/SGZaH2PdW4Z1NX9GHEkZ8xV7og==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm-gnueabihf@4.9.1: + resolution: {integrity: sha512-Yqz/Doumf3QTKplwGNrCHe/B2p9xqDghBZSlAY0/hU6ikuDVQuOUIpDP/YcmoT+447tsZTmirmjgG3znvSCR0Q==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-gnu@4.9.1: + resolution: {integrity: sha512-u3XkZVvxcvlAOlQJ3UsD1rFvLWqu4Ef/Ggl40WAVCuogf4S1nJPHh5RTgqYFpCOvuGJ7H5yGHabjFKEZGExk5Q==} + cpu: [arm64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-arm64-musl@4.9.1: + resolution: {integrity: sha512-0XSYN/rfWShW+i+qjZ0phc6vZ7UWI8XWNz4E/l+6edFt+FxoEghrJHjX1EY/kcUGCnZzYYRCl31SNdfOi450Aw==} + cpu: [arm64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-riscv64-gnu@4.9.1: + resolution: {integrity: sha512-LmYIO65oZVfFt9t6cpYkbC4d5lKHLYv5B4CSHRpnANq0VZUQXGcCPXHzbCXCz4RQnx7jvlYB1ISVNCE/omz5cw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-gnu@4.9.1: + resolution: {integrity: sha512-kr8rEPQ6ns/Lmr/hiw8sEVj9aa07gh1/tQF2Y5HrNCCEPiCBGnBUt9tVusrcBBiJfIt1yNaXN6r1CCmpbFEDpg==} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-linux-x64-musl@4.9.1: + resolution: {integrity: sha512-t4QSR7gN+OEZLG0MiCgPqMWZGwmeHhsM4AkegJ0Kiy6TnJ9vZ8dEIwHw1LcZKhbHxTY32hp9eVCMdR3/I8MGRw==} + cpu: [x64] + os: [linux] + libc: [musl] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.9.1: + resolution: {integrity: sha512-7XI4ZCBN34cb+BH557FJPmh0kmNz2c25SCQeT9OiFWEgf8+dL6ZwJ8f9RnUIit+j01u07Yvrsuu1rZGxJCc51g==} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-ia32-msvc@4.9.1: + resolution: {integrity: sha512-yE5c2j1lSWOH5jp+Q0qNL3Mdhr8WuqCNVjc6BxbVfS5cAS6zRmdiw7ktb8GNpDCEUJphILY6KACoFoRtKoqNQg==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-x64-msvc@4.9.1: + resolution: {integrity: sha512-PyJsSsafjmIhVgaI1Zdj7m8BB8mMckFah/xbpplObyHfiXzKcI5UOUXRyOdHW7nz4DpMCuzLnF7v5IWHenCwYA==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@sveltejs/adapter-static@3.0.1(@sveltejs/kit@2.0.6): + resolution: {integrity: sha512-6lMvf7xYEJ+oGeR5L8DFJJrowkefTK6ZgA4JiMqoClMkKq0s6yvsd3FZfCFvX1fQ0tpCD7fkuRVHsnUVgsHyNg==} + peerDependencies: + '@sveltejs/kit': ^2.0.0 + dependencies: + '@sveltejs/kit': 2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + dev: true + + /@sveltejs/kit@2.0.6(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-dnHtyjBLGXx+hrZQ9GuqLlSfTBixewJaByUVWai7LmB4dgV3FwkK155OltEgONDQW6KW64hLNS/uojdx3uC2/g==} + engines: {node: '>=18.13'} + hasBin: true + requiresBuild: true + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.3 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10) + '@types/cookie': 0.6.0 + cookie: 0.6.0 + devalue: 4.3.2 + esm-env: 1.0.0 + kleur: 4.1.5 + magic-string: 0.30.5 + mrmime: 2.0.0 + sade: 1.8.1 + set-cookie-parser: 2.6.0 + sirv: 2.0.4 + svelte: 4.2.8 + tiny-glob: 0.2.9 + vite: 5.0.10(@types/node@18.19.3)(sass@1.69.6) + dev: true + + /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + '@sveltejs/vite-plugin-svelte': ^3.0.0 + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte': 3.0.1(svelte@4.2.8)(vite@5.0.10) + debug: 4.3.4 + svelte: 4.2.8 + vite: 5.0.10(@types/node@18.19.3)(sass@1.69.6) + transitivePeerDependencies: + - supports-color + dev: true + + /@sveltejs/vite-plugin-svelte@3.0.1(svelte@4.2.8)(vite@5.0.10): + resolution: {integrity: sha512-CGURX6Ps+TkOovK6xV+Y2rn8JKa8ZPUHPZ/NKgCxAmgBrXReavzFl8aOSCj3kQ1xqT7yGJj53hjcV/gqwDAaWA==} + engines: {node: ^18.0.0 || >=20} + peerDependencies: + svelte: ^4.0.0 || ^5.0.0-next.0 + vite: ^5.0.0 + dependencies: + '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.1)(svelte@4.2.8)(vite@5.0.10) + debug: 4.3.4 + deepmerge: 4.3.1 + kleur: 4.1.5 + magic-string: 0.30.5 + svelte: 4.2.8 + svelte-hmr: 0.15.3(svelte@4.2.8) + vite: 5.0.10(@types/node@18.19.3)(sass@1.69.6) + vitefu: 0.2.5(vite@5.0.10) + transitivePeerDependencies: + - supports-color + dev: true + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 + dev: false + + /@types/cookie@0.6.0: + resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + dev: true + + /@types/eslint@8.56.0: + resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} + dependencies: + '@types/estree': 1.0.5 + '@types/json-schema': 7.0.15 + dev: true + + /@types/estree@1.0.5: + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: true + + /@types/minimist@1.2.5: + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + dev: true + + /@types/node@18.19.3: + resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/normalize-package-data@2.4.4: + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + dev: true + + /@types/pug@2.0.10: + resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + dev: true + + /@types/semver@7.5.6: + resolution: {integrity: sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==} + dev: true + + /@typescript-eslint/eslint-plugin@6.16.0(@typescript-eslint/parser@6.16.0)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-O5f7Kv5o4dLWQtPX4ywPPa+v9G+1q1x8mz0Kr0pXUtKsevo+gIJHLkGc8RxaZWtP8RrhwhSNIWThnW42K9/0rQ==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/type-utils': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: 8.56.0 + graphemer: 1.4.0 + ignore: 5.3.0 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/parser@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-H2GM3eUo12HpKZU9njig3DF5zJ58ja6ahj1GoHEHOgQvYxzoFJJEvC1MQ7T2l9Ha+69ZSOn7RTxOdpC/y3ikMw==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + eslint: 8.56.0 + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/scope-manager@6.16.0: + resolution: {integrity: sha512-0N7Y9DSPdaBQ3sqSCwlrm9zJwkpOuc6HYm7LpzLAPqBL7dmzAUimr4M29dMkOP/tEwvOCC/Cxo//yOfJD3HUiw==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/visitor-keys': 6.16.0 + dev: true + + /@typescript-eslint/type-utils@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-ThmrEOcARmOnoyQfYkHw/DX2SEYBalVECmoldVuH6qagKROp/jMnfXpAU/pAIWub9c4YTxga+XwgAkoA0pxfmg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + '@typescript-eslint/utils': 6.16.0(eslint@8.56.0)(typescript@5.3.3) + debug: 4.3.4 + eslint: 8.56.0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/types@6.16.0: + resolution: {integrity: sha512-hvDFpLEvTJoHutVl87+MG/c5C8I6LOgEx05zExTSJDEVU7hhR3jhV8M5zuggbdFCw98+HhZWPHZeKS97kS3JoQ==} + engines: {node: ^16.0.0 || >=18.0.0} + dev: true + + /@typescript-eslint/typescript-estree@6.16.0(typescript@5.3.3): + resolution: {integrity: sha512-VTWZuixh/vr7nih6CfrdpmFNLEnoVBF1skfjdyGnNwXOH1SLeHItGdZDHhhAIzd3ACazyY2Fg76zuzOVTaknGA==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/visitor-keys': 6.16.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@typescript-eslint/utils@6.16.0(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-T83QPKrBm6n//q9mv7oiSvy/Xq/7Hyw9SzSEhMHJwznEmQayfBM87+oAlkNAMEO7/MjIwKyOHgBJbxB0s7gx2A==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.6 + '@typescript-eslint/scope-manager': 6.16.0 + '@typescript-eslint/types': 6.16.0 + '@typescript-eslint/typescript-estree': 6.16.0(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + + /@typescript-eslint/visitor-keys@6.16.0: + resolution: {integrity: sha512-QSFQLruk7fhs91a/Ep/LqRdbJCZ1Rq03rqBdKT5Ky17Sz8zRLUksqIe9DW0pKtg/Z35/ztbLQ6qpOCN6rOC11A==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.16.0 + eslint-visitor-keys: 3.4.3 + dev: true + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + dev: true + + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + dev: true + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + dev: true + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ajv@8.12.0: + resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + dependencies: + fast-deep-equal: 3.1.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + uri-js: 4.4.1 + dev: true + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: true + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + dev: true + + /aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + dependencies: + dequal: 2.0.3 + + /array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + dev: true + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true + + /autoprefixer@10.4.16(postcss@8.4.32): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.2 + caniuse-lite: 1.0.30001571 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + dev: true + + /axobject-query@3.2.1: + resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} + dependencies: + dequal: 2.0.3 + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + + /bits-ui@0.12.0(svelte@4.2.8): + resolution: {integrity: sha512-/waSHjQM+zCrLsq/3ncxuc6vMzxzE783uhtZKFTF/8xb4sZJ/QZi4Yr7r5aJNghGais1E+fmxpk9lvdft740fw==} + peerDependencies: + svelte: ^4.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@melt-ui/svelte': 0.65.2(svelte@4.2.8) + nanoid: 5.0.4 + svelte: 4.2.8 + dev: false + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: true + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.22.2: + resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001571 + electron-to-chromium: 1.4.616 + node-releases: 2.0.14 + update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true + + /buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + /camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + dev: true + + /camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + dev: true + + /caniuse-lite@1.0.30001571: + resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + dev: true + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + /cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + dev: true + + /clsx@2.1.0: + resolution: {integrity: sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==} + engines: {node: '>=6'} + dev: false + + /code-red@1.0.4: + resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + '@types/estree': 1.0.5 + acorn: 8.11.2 + estree-walker: 3.0.3 + periscopic: 3.1.0 + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: true + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + dev: false + + /color@4.2.3: + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} + engines: {node: '>=12.5.0'} + dependencies: + color-convert: 2.0.1 + color-string: 1.9.1 + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + /compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + dev: true + + /conventional-changelog-angular@7.0.0: + resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-changelog-conventionalcommits@7.0.2: + resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} + engines: {node: '>=16'} + dependencies: + compare-func: 2.0.0 + dev: true + + /conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==} + engines: {node: '>=16'} + hasBin: true + dependencies: + JSONStream: 1.3.5 + is-text-path: 2.0.0 + meow: 12.1.1 + split2: 4.2.0 + dev: true + + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + dev: true + + /cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@5.3.3): + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + dependencies: + '@types/node': 18.19.3 + cosmiconfig: 8.3.6(typescript@5.3.3) + jiti: 1.21.0 + typescript: 5.3.3 + dev: true + + /cosmiconfig@8.3.6(typescript@5.3.3): + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + typescript: 5.3.3 + dev: true + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + dev: true + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + dev: true + + /decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + dev: true + + /decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + dev: true + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + + /deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + dev: true + + /dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + /detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + dev: true + + /devalue@4.3.2: + resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} + dev: true + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + dev: true + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + dependencies: + is-obj: 2.0.0 + dev: true + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + /electron-to-chromium@1.4.616: + resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + /error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + dependencies: + is-arrayish: 0.2.1 + dev: true + + /es6-promise@3.3.1: + resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + dev: true + + /esbuild@0.19.10: + resolution: {integrity: sha512-S1Y27QGt/snkNYrRcswgRFqZjaTG5a5xM3EQo97uNBnH505pdzSNe/HLBq1v0RO7iK/ngdbhJB6mDAp0OK+iUA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.19.10 + '@esbuild/android-arm': 0.19.10 + '@esbuild/android-arm64': 0.19.10 + '@esbuild/android-x64': 0.19.10 + '@esbuild/darwin-arm64': 0.19.10 + '@esbuild/darwin-x64': 0.19.10 + '@esbuild/freebsd-arm64': 0.19.10 + '@esbuild/freebsd-x64': 0.19.10 + '@esbuild/linux-arm': 0.19.10 + '@esbuild/linux-arm64': 0.19.10 + '@esbuild/linux-ia32': 0.19.10 + '@esbuild/linux-loong64': 0.19.10 + '@esbuild/linux-mips64el': 0.19.10 + '@esbuild/linux-ppc64': 0.19.10 + '@esbuild/linux-riscv64': 0.19.10 + '@esbuild/linux-s390x': 0.19.10 + '@esbuild/linux-x64': 0.19.10 + '@esbuild/netbsd-x64': 0.19.10 + '@esbuild/openbsd-x64': 0.19.10 + '@esbuild/sunos-x64': 0.19.10 + '@esbuild/win32-arm64': 0.19.10 + '@esbuild/win32-ia32': 0.19.10 + '@esbuild/win32-x64': 0.19.10 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: true + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + dev: true + + /eslint-compat-utils@0.1.2(eslint@8.56.0): + resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-config-prettier@9.1.0(eslint@8.56.0): + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.56.0 + dev: true + + /eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.8): + resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0-0 + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@jridgewell/sourcemap-codec': 1.4.15 + debug: 4.3.4 + eslint: 8.56.0 + eslint-compat-utils: 0.1.2(eslint@8.56.0) + esutils: 2.0.3 + known-css-properties: 0.29.0 + postcss: 8.4.32 + postcss-load-config: 3.1.4(postcss@8.4.32) + postcss-safe-parser: 6.0.0(postcss@8.4.32) + postcss-selector-parser: 6.0.14 + semver: 7.5.4 + svelte: 4.2.8 + svelte-eslint-parser: 0.33.1(svelte@4.2.8) + transitivePeerDependencies: + - supports-color + - ts-node + dev: true + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.56.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /esm-env@1.0.0: + resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + dev: true + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + dev: true + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + dev: true + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + 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 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + dev: true + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + + /fastq@1.16.0: + resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + dev: true + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + dev: true + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + dev: true + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + dev: true + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: false + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true + + /focus-trap@7.5.4: + resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} + dependencies: + tabbable: 6.2.0 + dev: false + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + dependencies: + ini: 1.3.8 + dev: true + + /globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + + /globalyzer@0.1.0: + resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.0 + merge2: 1.4.1 + slash: 3.0.0 + dev: true + + /globrex@0.1.2: + resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: true + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + dev: true + + /hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: true + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: true + + /hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + dependencies: + lru-cache: 6.0.0 + dev: true + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /i18next@23.7.12: + resolution: {integrity: sha512-BZcAvh5M/s2CDrbxNFT8kscfzCYW607wnc4wnQ11HaHDJlS46P/0+P++nmgnc5CIjSQ1DfHAM9RE+hIyALvI7g==} + dependencies: + '@babel/runtime': 7.23.7 + dev: false + + /ignore@5.3.0: + resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} + engines: {node: '>= 4'} + dev: true + + /immutable@4.3.4: + resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + dev: true + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + + /indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + dev: true + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + dev: true + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: true + + /is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true + + /is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + dev: false + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + dev: true + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + + /is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + dev: true + + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-text-path@2.0.0: + resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==} + engines: {node: '>=8'} + dependencies: + text-extensions: 2.4.0 + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + + /js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + dev: true + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + dev: true + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + dev: true + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + dev: true + + /json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + dev: true + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + + /jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + dev: true + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + dev: true + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + dev: true + + /kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + dev: true + + /kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + dev: true + + /known-css-properties@0.29.0: + resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} + dev: true + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + /lilconfig@3.0.0: + resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} + engines: {node: '>=14'} + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + /locate-character@3.0.0: + resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} + + /locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + dependencies: + p-locate: 4.1.0 + dev: true + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + dev: true + + /lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + dev: true + + /lodash.foreach@4.5.0: + resolution: {integrity: sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==} + dev: false + + /lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + dev: true + + /lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + dev: true + + /lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + dev: true + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + + /lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + dev: true + + /lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + dev: true + + /lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + dev: true + + /lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + dev: true + + /lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + dev: true + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + dev: true + + /lru-cache@10.1.0: + resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} + engines: {node: 14 || >=16.14} + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + dev: true + + /lucide-svelte@0.303.0(svelte@4.2.8): + resolution: {integrity: sha512-Lt5kH3pGSSQdFDgL+y09xkp8FCGm7pQBdxmRxdpA0/im5AHl6WGDECWdiB4dnBCp8njOgWd0TaSqgkL0dF0efg==} + peerDependencies: + svelte: '>=3 <5' + dependencies: + svelte: 4.2.8 + dev: false + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + dev: true + + /map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + dev: true + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + + /meow@12.1.1: + resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} + engines: {node: '>=16.10'} + dev: true + + /meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + dev: true + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + dev: true + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + dev: true + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + dev: true + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + dev: true + + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /nanoid@4.0.2: + resolution: {integrity: sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==} + engines: {node: ^14 || ^16 || >=18} + hasBin: true + dev: false + + /nanoid@5.0.4: + resolution: {integrity: sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==} + engines: {node: ^18 || >=20} + hasBin: true + dev: false + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + + /node-releases@2.0.14: + resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.13.1 + semver: 7.5.4 + validate-npm-package-license: 3.0.4 + dev: true + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + dev: true + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + + /p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + dependencies: + p-try: 2.2.0 + dev: true + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + dev: true + + /p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + dependencies: + p-limit: 2.3.0 + dev: true + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + dev: true + + /p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + dev: true + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + + /parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + dependencies: + '@babel/code-frame': 7.23.5 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + dev: true + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + dev: true + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + dev: true + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.1.0 + minipass: 7.0.4 + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + dev: true + + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + /postcss-import@15.1.0(postcss@8.4.32): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.32 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + + /postcss-js@4.0.1(postcss@8.4.32): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.32 + + /postcss-load-config@3.1.4(postcss@8.4.32): + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.32 + yaml: 1.10.2 + dev: true + + /postcss-load-config@4.0.2(postcss@8.4.32): + resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 3.0.0 + postcss: 8.4.32 + yaml: 2.3.4 + + /postcss-nested@6.0.1(postcss@8.4.32): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.32 + postcss-selector-parser: 6.0.14 + + /postcss-safe-parser@6.0.0(postcss@8.4.32): + resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.3.3 + dependencies: + postcss: 8.4.32 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.32): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.32 + dev: true + + /postcss-selector-parser@6.0.14: + resolution: {integrity: sha512-65xXYsT40i9GyWzlHQ5ShZoK7JZdySeOozi/tz2EezDo6c04q6+ckYMeoY7idaie1qp2dT5KoYQ2yky6JuoHnA==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + /postcss@8.4.32: + resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier-plugin-svelte@3.1.2(prettier@3.1.1)(svelte@4.2.8): + resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==} + peerDependencies: + prettier: ^3.0.0 + svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + dependencies: + prettier: 3.1.1 + svelte: 4.2.8 + dev: true + + /prettier@3.1.1: + resolution: {integrity: sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + dev: true + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + + /read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + dev: true + + /read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + dev: true + + /readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + + /redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + dev: true + + /regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + dev: false + + /require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + dev: true + + /require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + + /resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + dev: true + + /resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + dependencies: + global-dirs: 0.1.1 + dev: true + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + dev: true + + /rollup@4.9.1: + resolution: {integrity: sha512-pgPO9DWzLoW/vIhlSoDByCzcpX92bKEorbgXuZrqxByte3JFk2xSW2JEeAcyLc9Ru9pqcNNW+Ob7ntsk2oT/Xw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.9.1 + '@rollup/rollup-android-arm64': 4.9.1 + '@rollup/rollup-darwin-arm64': 4.9.1 + '@rollup/rollup-darwin-x64': 4.9.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.9.1 + '@rollup/rollup-linux-arm64-gnu': 4.9.1 + '@rollup/rollup-linux-arm64-musl': 4.9.1 + '@rollup/rollup-linux-riscv64-gnu': 4.9.1 + '@rollup/rollup-linux-x64-gnu': 4.9.1 + '@rollup/rollup-linux-x64-musl': 4.9.1 + '@rollup/rollup-win32-arm64-msvc': 4.9.1 + '@rollup/rollup-win32-ia32-msvc': 4.9.1 + '@rollup/rollup-win32-x64-msvc': 4.9.1 + fsevents: 2.3.3 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + dependencies: + mri: 1.2.0 + dev: true + + /safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + dev: true + + /sander@0.5.1: + resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} + dependencies: + es6-promise: 3.3.1 + graceful-fs: 4.2.11 + mkdirp: 0.5.6 + rimraf: 2.7.1 + dev: true + + /sass@1.69.6: + resolution: {integrity: sha512-qbRr3k9JGHWXCvZU77SD2OTwUlC+gNT+61JOLcmLm+XqH4h/5D+p4IIsxvpkB89S9AwJOyb5+rWNpIucaFxSFQ==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + chokidar: 3.5.3 + immutable: 4.3.4 + source-map-js: 1.0.2 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /set-cookie-parser@2.6.0: + resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + /simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + dependencies: + is-arrayish: 0.3.2 + dev: false + + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.24 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + dev: true + + /sorcery@0.11.0: + resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} + hasBin: true + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + buffer-crc32: 0.2.13 + minimist: 1.2.8 + sander: 0.5.1 + dev: true + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: true + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: true + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: true + + /split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + dev: true + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + /string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + dependencies: + min-indent: 1.0.1 + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + dev: true + + /sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 10.3.10 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: true + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + dev: true + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svelte-check@3.6.2(postcss@8.4.32)(sass@1.69.6)(svelte@4.2.8): + resolution: {integrity: sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==} + hasBin: true + peerDependencies: + svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + dependencies: + '@jridgewell/trace-mapping': 0.3.20 + chokidar: 3.5.3 + fast-glob: 3.3.2 + import-fresh: 3.3.0 + picocolors: 1.0.0 + sade: 1.8.1 + svelte: 4.2.8 + svelte-preprocess: 5.1.3(postcss@8.4.32)(sass@1.69.6)(svelte@4.2.8)(typescript@5.3.3) + typescript: 5.3.3 + transitivePeerDependencies: + - '@babel/core' + - coffeescript + - less + - postcss + - postcss-load-config + - pug + - sass + - stylus + - sugarss + dev: true + + /svelte-eslint-parser@0.33.1(svelte@4.2.8): + resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + svelte: ^3.37.0 || ^4.0.0 + peerDependenciesMeta: + svelte: + optional: true + dependencies: + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + postcss: 8.4.32 + postcss-scss: 4.0.9(postcss@8.4.32) + svelte: 4.2.8 + dev: true + + /svelte-hmr@0.15.3(svelte@4.2.8): + resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} + engines: {node: ^12.20 || ^14.13.1 || >= 16} + peerDependencies: + svelte: ^3.19.0 || ^4.0.0 + dependencies: + svelte: 4.2.8 + dev: true + + /svelte-i18next@2.2.2(i18next@23.7.12)(svelte@4.2.8): + resolution: {integrity: sha512-IpJDZCH5cCgKfHQHgiLmGT4j9HCdg4fqsP3oP2deLu8PxmNj0Ui6khMiDoxAxedAiYEhr0xendv2xqh3Rq+uQQ==} + peerDependencies: + i18next: '*' + svelte: '*' + dependencies: + i18next: 23.7.12 + svelte: 4.2.8 + dev: false + + /svelte-lucide@0.8.2(svelte@4.2.8): + resolution: {integrity: sha512-PHLH0/IHDjvGUqM7KgHfEsAEmNzPaLbqp4gcQdpQVAnQKQcpwURoF/J+6rqtHwbwsmuNL4RNOrkz6DcDRbwm9Q==} + peerDependencies: + svelte: ^3.54.0 || ^4.0.0 + dependencies: + svelte: 4.2.8 + dev: true + + /svelte-persisted-store@0.8.0(svelte@4.2.8): + resolution: {integrity: sha512-MwVIlJXQFxp+qCbCelsvHYNxxy8AlRJguPj7m+IBB0lpO3jsxFM3wcjO3ytkoZPkUbwUssTLs0XNIFSJL2jXqw==} + engines: {node: '>=0.14'} + peerDependencies: + svelte: ^3.48.0 || >4.0.0 + dependencies: + svelte: 4.2.8 + dev: false + + /svelte-preprocess@5.1.3(postcss@8.4.32)(sass@1.69.6)(svelte@4.2.8)(typescript@5.3.3): + resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} + engines: {node: '>= 16.0.0', pnpm: ^8.0.0} + requiresBuild: true + peerDependencies: + '@babel/core': ^7.10.2 + coffeescript: ^2.5.1 + less: ^3.11.3 || ^4.0.0 + postcss: ^7 || ^8 + postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + pug: ^3.0.0 + sass: ^1.26.8 + stylus: ^0.55.0 + sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 + svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 + typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' + peerDependenciesMeta: + '@babel/core': + optional: true + coffeescript: + optional: true + less: + optional: true + postcss: + optional: true + postcss-load-config: + optional: true + pug: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + typescript: + optional: true + dependencies: + '@types/pug': 2.0.10 + detect-indent: 6.1.0 + magic-string: 0.30.5 + postcss: 8.4.32 + sass: 1.69.6 + sorcery: 0.11.0 + strip-indent: 3.0.0 + svelte: 4.2.8 + typescript: 5.3.3 + dev: true + + /svelte@4.2.8: + resolution: {integrity: sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==} + engines: {node: '>=16'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + acorn: 8.11.2 + aria-query: 5.3.0 + axobject-query: 3.2.1 + code-red: 1.0.4 + css-tree: 2.3.1 + estree-walker: 3.0.3 + is-reference: 3.0.2 + locate-character: 3.0.0 + magic-string: 0.30.5 + periscopic: 3.1.0 + + /tabbable@6.2.0: + resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + dev: false + + /tailwind-merge@1.14.0: + resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} + dev: false + + /tailwind-merge@2.2.0: + resolution: {integrity: sha512-SqqhhaL0T06SW59+JVNfAqKdqLs0497esifRrZ7jOaefP3o64fdFNDMrAQWZFMxTLJPiHVjRLUywT8uFz1xNWQ==} + dependencies: + '@babel/runtime': 7.23.7 + dev: false + + /tailwind-variants@0.1.19(tailwindcss@3.4.0): + resolution: {integrity: sha512-D9Yf5WqsxodnCtjZt6KifEoKwW8rTURXQV03KRKlojITQM5gV1vPVWufWNiIvd/ptC3QybYFpwmHK9cs4Ei08Q==} + engines: {node: '>=16.x', pnpm: '>=7.x'} + peerDependencies: + tailwindcss: '*' + dependencies: + tailwind-merge: 1.14.0 + tailwindcss: 3.4.0 + dev: false + + /tailwindcss@3.4.0: + resolution: {integrity: sha512-VigzymniH77knD1dryXbyxR+ePHihHociZbXnLZHUyzf2MMs2ZVqlUrZ3FvpXP8pno9JzmILt1sZPD19M3IxtA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.32 + postcss-import: 15.1.0(postcss@8.4.32) + postcss-js: 4.0.1(postcss@8.4.32) + postcss-load-config: 4.0.2(postcss@8.4.32) + postcss-nested: 6.0.1(postcss@8.4.32) + postcss-selector-parser: 6.0.14 + resolve: 1.22.8 + sucrase: 3.35.0 + transitivePeerDependencies: + - ts-node + + /text-extensions@2.4.0: + resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==} + engines: {node: '>=8'} + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + dev: true + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + + /through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + dependencies: + readable-stream: 3.6.2 + dev: true + + /through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + dev: true + + /tiny-glob@0.2.9: + resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} + dependencies: + globalyzer: 0.1.0 + globrex: 0.1.2 + dev: true + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + + /trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + dev: true + + /ts-api-utils@1.0.3(typescript@5.3.3): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.3.3 + dev: true + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /tw-colors@3.3.1(tailwindcss@3.4.0): + resolution: {integrity: sha512-PH6NShNtDzPCm6zjl0SZe3kmdYSfDS7Sk4mWa9+KzaeSH1ZmpLRrBjZoBJKaFcDB3o7iuFPPg9+HtW05pGPQyQ==} + peerDependencies: + tailwindcss: '>=3.0.0' + dependencies: + color: 4.2.3 + flat: 5.0.2 + lodash.foreach: 4.5.0 + tailwindcss: 3.4.0 + dev: false + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + + /type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + + /type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + dev: true + + /type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + dev: true + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.2): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.2 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + dev: true + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: true + + /vite@5.0.10(@types/node@18.19.3)(sass@1.69.6): + resolution: {integrity: sha512-2P8J7WWgmc355HUMlFrwofacvr98DAjoE52BfdbwQtyLH06XKwaL/FMnmKM2crF0iX4MpmMKoDlNCB1ok7zHCw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.19.3 + esbuild: 0.19.10 + postcss: 8.4.32 + rollup: 4.9.1 + sass: 1.69.6 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vitefu@0.2.5(vite@5.0.10): + resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + vite: + optional: true + dependencies: + vite: 5.0.10(@types/node@18.19.3)(sass@1.69.6) + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + dev: true + + /y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + dev: true + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: true + + /yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + dev: true + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + + /yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + dev: true + + /yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + dev: true + + /yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + dependencies: + cliui: 8.0.1 + escalade: 3.1.1 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + dev: true + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + dev: true diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..0f772168 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {} + } +}; diff --git a/src/app.d.ts b/src/app.d.ts new file mode 100644 index 00000000..743f07b2 --- /dev/null +++ b/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/src/app.html b/src/app.html new file mode 100644 index 00000000..77a5ff52 --- /dev/null +++ b/src/app.html @@ -0,0 +1,12 @@ + + + + + + + %sveltekit.head% + + +
%sveltekit.body%
+ + diff --git a/src/app.pcss b/src/app.pcss new file mode 100644 index 00000000..752605e1 --- /dev/null +++ b/src/app.pcss @@ -0,0 +1,89 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 222.2 84% 4.9%; + + --muted: 210 40% 96.1%; + --muted-foreground: 215.4 16.3% 46.9%; + + --popover: 0 0% 100%; + --popover-foreground: 222.2 84% 4.9%; + + --card: 0 0% 100%; + --card-foreground: 222.2 84% 4.9%; + + --border: 214.3 31.8% 91.4%; + --input: 214.3 31.8% 91.4%; + + --primary: 222.2 47.4% 11.2%; + --primary-foreground: 210 40% 98%; + + --secondary: 210 40% 96.1%; + --secondary-foreground: 222.2 47.4% 11.2%; + + --accent: 210 40% 96.1%; + --accent-foreground: 222.2 47.4% 11.2%; + + --destructive: 0 72.2% 50.6%; + --destructive-foreground: 210 40% 98%; + + --ring: 222.2 84% 4.9%; + + --radius: 0.5rem; + } + + .dark { + --background: 222.2 84% 4.9%; + --foreground: 210 40% 98%; + + --muted: 217.2 32.6% 17.5%; + --muted-foreground: 215 20.2% 65.1%; + + --popover: 222.2 84% 4.9%; + --popover-foreground: 210 40% 98%; + + --card: 222.2 84% 4.9%; + --card-foreground: 210 40% 98%; + + --border: 217.2 32.6% 17.5%; + --input: 217.2 32.6% 17.5%; + + --primary: 210 40% 98%; + --primary-foreground: 222.2 47.4% 11.2%; + + --secondary: 217.2 32.6% 17.5%; + --secondary-foreground: 210 40% 98%; + + --accent: 217.2 32.6% 17.5%; + --accent-foreground: 210 40% 98%; + + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 40% 98%; + + --ring: hsl(212.7, 26.8%, 83.9); + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} + +/* Hide scrollbar for Chrome, Safari and Opera */ +.hide-scrollbar::-webkit-scrollbar { + display: none; +} + +/* Hide scrollbar for IE, Edge and Firefox */ +.hide-scrollbar { + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} diff --git a/src/lib/api/gacha.ts b/src/lib/api/gacha.ts new file mode 100644 index 00000000..5ccaac70 --- /dev/null +++ b/src/lib/api/gacha.ts @@ -0,0 +1,4 @@ +export default class GachaApi { + // TODO: Discuss about this, whether to send ONLY the auth_key and game_biz and let backend do all the fetch, or send fetch one by one + fetchFromGenshin(_start: number, _count: number, _authKey: string) {} +} diff --git a/src/lib/components/navigator/Header.svelte b/src/lib/components/navigator/Header.svelte new file mode 100644 index 00000000..11b32ca7 --- /dev/null +++ b/src/lib/components/navigator/Header.svelte @@ -0,0 +1,26 @@ + + +
+ + + +
diff --git a/src/lib/components/navigator/Sidebar.svelte b/src/lib/components/navigator/Sidebar.svelte new file mode 100644 index 00000000..9fa2e0fe --- /dev/null +++ b/src/lib/components/navigator/Sidebar.svelte @@ -0,0 +1,161 @@ + + +
+ {#if !isMobile} + +

dval.in

+
+ {/if} + {#if isMobile} +
+ +
+ {/if} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte new file mode 100644 index 00000000..723052b0 --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-action.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte new file mode 100644 index 00000000..09af9bdd --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-cancel.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte new file mode 100644 index 00000000..02ea222c --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-content.svelte @@ -0,0 +1,28 @@ + + + + + + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte new file mode 100644 index 00000000..f4af7fd2 --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-description.svelte @@ -0,0 +1,16 @@ + + + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte new file mode 100644 index 00000000..da4f517e --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-footer.svelte @@ -0,0 +1,16 @@ + + +
+ +
diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte new file mode 100644 index 00000000..40dfb922 --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-header.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte new file mode 100644 index 00000000..1c6afd2a --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-overlay.svelte @@ -0,0 +1,21 @@ + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte new file mode 100644 index 00000000..347119a2 --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-portal.svelte @@ -0,0 +1,9 @@ + + + + + diff --git a/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte b/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte new file mode 100644 index 00000000..fb4dc59a --- /dev/null +++ b/src/lib/components/ui/alert-dialog/alert-dialog-title.svelte @@ -0,0 +1,14 @@ + + + + + diff --git a/src/lib/components/ui/alert-dialog/index.ts b/src/lib/components/ui/alert-dialog/index.ts new file mode 100644 index 00000000..0cf3d722 --- /dev/null +++ b/src/lib/components/ui/alert-dialog/index.ts @@ -0,0 +1,40 @@ +import { AlertDialog as AlertDialogPrimitive } from 'bits-ui'; + +const Root = AlertDialogPrimitive.Root; +const Trigger = AlertDialogPrimitive.Trigger; + +import Title from './alert-dialog-title.svelte'; +import Action from './alert-dialog-action.svelte'; +import Cancel from './alert-dialog-cancel.svelte'; +import Portal from './alert-dialog-portal.svelte'; +import Footer from './alert-dialog-footer.svelte'; +import Header from './alert-dialog-header.svelte'; +import Overlay from './alert-dialog-overlay.svelte'; +import Content from './alert-dialog-content.svelte'; +import Description from './alert-dialog-description.svelte'; + +export { + Root, + Title, + Action, + Cancel, + Portal, + Footer, + Header, + Trigger, + Overlay, + Content, + Description, + // + Root as AlertDialog, + Title as AlertDialogTitle, + Action as AlertDialogAction, + Cancel as AlertDialogCancel, + Portal as AlertDialogPortal, + Footer as AlertDialogFooter, + Header as AlertDialogHeader, + Trigger as AlertDialogTrigger, + Overlay as AlertDialogOverlay, + Content as AlertDialogContent, + Description as AlertDialogDescription +}; diff --git a/src/lib/components/ui/button/button.svelte b/src/lib/components/ui/button/button.svelte new file mode 100644 index 00000000..fb61a871 --- /dev/null +++ b/src/lib/components/ui/button/button.svelte @@ -0,0 +1,25 @@ + + + + + diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts new file mode 100644 index 00000000..9d8f4694 --- /dev/null +++ b/src/lib/components/ui/button/index.ts @@ -0,0 +1,57 @@ +import Root from './button.svelte'; +import { tv, type VariantProps } from 'tailwind-variants'; +import type { Button as ButtonPrimitive } from 'bits-ui'; + +const buttonVariants = tv({ + base: 'inline-flex items-center rounded-md text-sm font-medium whitespace-nowrap ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', + variants: { + variant: { + default: 'justify-center bg-primary text-primary-foreground hover:bg-primary/90', + destructive: + 'justify-center bg-destructive text-destructive-foreground hover:bg-destructive/90', + outline: + 'justify-center border border-input bg-background hover:bg-accent hover:text-accent-foreground', + secondary: 'justify-center bg-secondary text-secondary-foreground hover:bg-secondary/80', + ghost: 'justify-center hover:bg-accent hover:text-accent-foreground', + link: 'justify-center text-primary underline-offset-4 hover:underline', + sidebar: + 'bg-sidebar justify-center ml-0 text-fill lg:justify-start lg:ml-8 hover:text-white hover:bg-primary/90 w-full', + activeSidebar: + 'bg-activeSidebar justify-center ml-0 text-fill lg:justify-start lg:ml-8 hover:text-white hover:bg-primary/90 w-full', + headerSidebar: + 'justify-center bg-sidebar text-fill/50 w-full lg:justify-start hover:text-fill/80', + navigatorClose: 'justify-center bg-transparent' + }, + size: { + default: 'h-10 px-4 py-2', + sm: 'h-9 rounded-md px-3', + lg: 'h-11 rounded-md px-8', + icon: 'h-10 w-10' + } + }, + defaultVariants: { + variant: 'default', + size: 'default' + } +}); + +type Variant = VariantProps['variant']; +type Size = VariantProps['size']; + +type Props = ButtonPrimitive.Props & { + variant?: Variant; + size?: Size; +}; + +type Events = ButtonPrimitive.Events; + +export { + Root, + type Props, + type Events, + // + Root as Button, + type Props as ButtonProps, + type Events as ButtonEvents, + buttonVariants +}; diff --git a/src/lib/components/ui/card/card-content.svelte b/src/lib/components/ui/card/card-content.svelte new file mode 100644 index 00000000..c87d58a2 --- /dev/null +++ b/src/lib/components/ui/card/card-content.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/src/lib/components/ui/card/card-description.svelte b/src/lib/components/ui/card/card-description.svelte new file mode 100644 index 00000000..9132aaa3 --- /dev/null +++ b/src/lib/components/ui/card/card-description.svelte @@ -0,0 +1,13 @@ + + +

+ +

diff --git a/src/lib/components/ui/card/card-footer.svelte b/src/lib/components/ui/card/card-footer.svelte new file mode 100644 index 00000000..414ded97 --- /dev/null +++ b/src/lib/components/ui/card/card-footer.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/src/lib/components/ui/card/card-header.svelte b/src/lib/components/ui/card/card-header.svelte new file mode 100644 index 00000000..8079df38 --- /dev/null +++ b/src/lib/components/ui/card/card-header.svelte @@ -0,0 +1,13 @@ + + +
+ +
diff --git a/src/lib/components/ui/card/card-title.svelte b/src/lib/components/ui/card/card-title.svelte new file mode 100644 index 00000000..e683f79b --- /dev/null +++ b/src/lib/components/ui/card/card-title.svelte @@ -0,0 +1,21 @@ + + + + + diff --git a/src/lib/components/ui/card/card.svelte b/src/lib/components/ui/card/card.svelte new file mode 100644 index 00000000..085a7478 --- /dev/null +++ b/src/lib/components/ui/card/card.svelte @@ -0,0 +1,16 @@ + + +
+ +
diff --git a/src/lib/components/ui/card/index.ts b/src/lib/components/ui/card/index.ts new file mode 100644 index 00000000..86c54082 --- /dev/null +++ b/src/lib/components/ui/card/index.ts @@ -0,0 +1,24 @@ +import Root from './card.svelte'; +import Content from './card-content.svelte'; +import Description from './card-description.svelte'; +import Footer from './card-footer.svelte'; +import Header from './card-header.svelte'; +import Title from './card-title.svelte'; + +export { + Root, + Content, + Description, + Footer, + Header, + Title, + // + Root as Card, + Content as CardContent, + Description as CardDescription, + Footer as CardFooter, + Header as CardHeader, + Title as CardTitle +}; + +export type HeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; diff --git a/src/lib/components/ui/collapsible/collapsible-content.svelte b/src/lib/components/ui/collapsible/collapsible-content.svelte new file mode 100644 index 00000000..21831bb6 --- /dev/null +++ b/src/lib/components/ui/collapsible/collapsible-content.svelte @@ -0,0 +1,15 @@ + + + + + diff --git a/src/lib/components/ui/collapsible/index.ts b/src/lib/components/ui/collapsible/index.ts new file mode 100644 index 00000000..ac7413ce --- /dev/null +++ b/src/lib/components/ui/collapsible/index.ts @@ -0,0 +1,15 @@ +import { Collapsible as CollapsiblePrimitive } from 'bits-ui'; +import Content from './collapsible-content.svelte'; + +const Root = CollapsiblePrimitive.Root; +const Trigger = CollapsiblePrimitive.Trigger; + +export { + Root, + Content, + Trigger, + // + Root as Collapsible, + Content as CollapsibleContent, + Trigger as CollapsibleTrigger +}; diff --git a/src/lib/components/ui/icon/icon.svelte b/src/lib/components/ui/icon/icon.svelte new file mode 100644 index 00000000..515c0651 --- /dev/null +++ b/src/lib/components/ui/icon/icon.svelte @@ -0,0 +1,84 @@ + + + + {#if title} + {title} + {/if} + {#if spin !== false} + {#if inverse} + + {:else} + + {/if} + + + + {:else} + + {/if} + + + diff --git a/src/lib/services/gacha.ts b/src/lib/services/gacha.ts new file mode 100644 index 00000000..e746d858 --- /dev/null +++ b/src/lib/services/gacha.ts @@ -0,0 +1,5 @@ +export default class GachaService { + importFromPaimon() {} + + importFromGenshin() {} +} diff --git a/src/lib/services/i18n.ts b/src/lib/services/i18n.ts new file mode 100644 index 00000000..f1f27db3 --- /dev/null +++ b/src/lib/services/i18n.ts @@ -0,0 +1,15 @@ +import i18next from 'i18next'; +import { createI18nStore } from 'svelte-i18next'; + +i18next.init({ + lng: 'en', + resources: { + en: { + translation: { + key: 'translation' + } + } + } +}); +const i18n = createI18nStore(i18next); +export default i18n; diff --git a/src/lib/store/global_state.ts b/src/lib/store/global_state.ts new file mode 100644 index 00000000..48489e89 --- /dev/null +++ b/src/lib/store/global_state.ts @@ -0,0 +1,32 @@ +import { writable } from 'svelte/store'; +import { persisted } from 'svelte-persisted-store'; +import { type Settings, Convert as SettingsConvert } from '$lib/structs/settings'; + +export const showSidebar = writable(false); +export const showSidebarSections = persisted('showSidebarSections', [true, true, true]); + +export const settings = persisted( + 'settings', + { + global: { + theme: 0 + }, + user: { + logined: false, + email: '', + username: '' + } + }, + { + storage: 'local', + syncTabs: true, + serializer: { + parse: (text: string): Settings => { + return SettingsConvert.toSettings(text); + }, + stringify: (data: Settings): string => { + return SettingsConvert.settingsToJson(data); + } + } + } +); diff --git a/src/lib/structs/gacha.ts b/src/lib/structs/gacha.ts new file mode 100644 index 00000000..221a04e7 --- /dev/null +++ b/src/lib/structs/gacha.ts @@ -0,0 +1,259 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable no-prototype-builtins */ +/* eslint-disable no-empty */ + +// TODO: Test the convertor +export interface GachaRecord { + info: UIGFInfo; + list: UIGFItem[]; + + [property: string]: any; +} + +export interface UIGFInfo { + exportApp?: string; + exportAppVersion?: string; + /** + * yyyy-MM-dd HH:mm:ss + */ + exportTime?: string; + exportTimestamp?: number; + lang?: string; + regionTimeZone?: number; + uid: string; + uigfVersion: string; + + [property: string]: any; +} + +export interface UIGFItem { + count?: string; + gachaType: string; + id: string; + itemID: string; + itemType?: string; + name?: string; + rankType?: string; + time: string; + /** + * 用于区分卡池类型不同,但卡池保底计算相同的物品 + * Used to differ between pools + */ + uigfGachaType: string; + + [property: string]: any; +} + +// Converts JSON strings to/from your types +// and asserts the results of JSON.parse at runtime +export class GachaRecordConvert { + public static toGachaRecord(json: string): GachaRecord { + return cast(JSON.parse(json), r('GachaRecord')); + } + + public static gachaRecordToJson(value: GachaRecord): string { + return JSON.stringify(uncast(value, r('GachaRecord')), null, 2); + } +} + +function invalidValue(typ: any, val: any, key: any, parent: any = ''): never { + const prettyTyp = prettyTypeName(typ); + const parentText = parent ? ` on ${parent}` : ''; + const keyText = key ? ` for key "${key}"` : ''; + throw Error( + `Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}` + ); +} + +function prettyTypeName(typ: any): string { + if (Array.isArray(typ)) { + if (typ.length === 2 && typ[0] === undefined) { + return `an optional ${prettyTypeName(typ[1])}`; + } else { + return `one of [${typ + .map((a) => { + return prettyTypeName(a); + }) + .join(', ')}]`; + } + } else if (typeof typ === 'object' && typ.literal !== undefined) { + return typ.literal; + } else { + return typeof typ; + } +} + +function jsonToJSProps(typ: any): any { + if (typ.jsonToJS === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.json] = { key: p.js, typ: p.typ })); + typ.jsonToJS = map; + } + return typ.jsonToJS; +} + +function jsToJSONProps(typ: any): any { + if (typ.jsToJSON === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.js] = { key: p.json, typ: p.typ })); + typ.jsToJSON = map; + } + return typ.jsToJSON; +} + +function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any { + function transformPrimitive(typ: string, val: any): any { + if (typeof typ === typeof val) return val; + return invalidValue(typ, val, key, parent); + } + + function transformUnion(typs: any[], val: any): any { + // val must validate against one typ in typs + const l = typs.length; + for (let i = 0; i < l; i++) { + const typ = typs[i]; + try { + return transform(val, typ, getProps); + } catch (_) {} + } + return invalidValue(typs, val, key, parent); + } + + function transformEnum(cases: string[], val: any): any { + if (cases.indexOf(val) !== -1) return val; + return invalidValue( + cases.map((a) => { + return l(a); + }), + val, + key, + parent + ); + } + + function transformArray(typ: any, val: any): any { + // val must be an array with no invalid elements + if (!Array.isArray(val)) return invalidValue(l('array'), val, key, parent); + return val.map((el) => transform(el, typ, getProps)); + } + + function transformDate(val: any): any { + if (val === null) { + return null; + } + const d = new Date(val); + if (isNaN(d.valueOf())) { + return invalidValue(l('Date'), val, key, parent); + } + return d; + } + + function transformObject(props: { [k: string]: any }, additional: any, val: any): any { + if (val === null || typeof val !== 'object' || Array.isArray(val)) { + return invalidValue(l(ref || 'object'), val, key, parent); + } + const result: any = {}; + Object.getOwnPropertyNames(props).forEach((key) => { + const prop = props[key]; + const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined; + result[prop.key] = transform(v, prop.typ, getProps, key, ref); + }); + Object.getOwnPropertyNames(val).forEach((key) => { + if (!Object.prototype.hasOwnProperty.call(props, key)) { + result[key] = transform(val[key], additional, getProps, key, ref); + } + }); + return result; + } + + if (typ === 'any') return val; + if (typ === null) { + if (val === null) return val; + return invalidValue(typ, val, key, parent); + } + if (typ === false) return invalidValue(typ, val, key, parent); + let ref: any = undefined; + while (typeof typ === 'object' && typ.ref !== undefined) { + ref = typ.ref; + typ = typeMap[typ.ref]; + } + if (Array.isArray(typ)) return transformEnum(typ, val); + if (typeof typ === 'object') { + return typ.hasOwnProperty('unionMembers') + ? transformUnion(typ.unionMembers, val) + : typ.hasOwnProperty('arrayItems') + ? transformArray(typ.arrayItems, val) + : typ.hasOwnProperty('props') + ? transformObject(getProps(typ), typ.additional, val) + : invalidValue(typ, val, key, parent); + } + // Numbers can be parsed by Date but shouldn't be. + if (typ === Date && typeof val !== 'number') return transformDate(val); + return transformPrimitive(typ, val); +} + +function cast(val: any, typ: any): T { + return transform(val, typ, jsonToJSProps); +} + +function uncast(val: T, typ: any): any { + return transform(val, typ, jsToJSONProps); +} + +function l(typ: any) { + return { literal: typ }; +} + +function a(typ: any) { + return { arrayItems: typ }; +} + +function u(...typs: any[]) { + return { unionMembers: typs }; +} + +function o(props: any[], additional: any) { + return { props, additional }; +} + +function r(name: string) { + return { ref: name }; +} + +const typeMap: any = { + GachaRecord: o( + [ + { json: 'info', js: 'info', typ: r('UIGFInfo') }, + { json: 'list', js: 'list', typ: a(r('UIGFItem')) } + ], + 'any' + ), + UIGFInfo: o( + [ + { json: 'export_app', js: 'exportApp', typ: u(undefined, '') }, + { json: 'export_app_version', js: 'exportAppVersion', typ: u(undefined, '') }, + { json: 'export_time', js: 'exportTime', typ: u(undefined, '') }, + { json: 'export_timestamp', js: 'exportTimestamp', typ: u(undefined, 3.14) }, + { json: 'lang', js: 'lang', typ: u(undefined, '') }, + { json: 'region_time_zone', js: 'regionTimeZone', typ: u(undefined, 3.14) }, + { json: 'uid', js: 'uid', typ: '' }, + { json: 'uigf_version', js: 'uigfVersion', typ: '' } + ], + 'any' + ), + UIGFItem: o( + [ + { json: 'count', js: 'count', typ: u(undefined, '') }, + { json: 'gacha_type', js: 'gachaType', typ: '' }, + { json: 'id', js: 'id', typ: '' }, + { json: 'item_id', js: 'itemID', typ: '' }, + { json: 'item_type', js: 'itemType', typ: u(undefined, '') }, + { json: 'name', js: 'name', typ: u(undefined, '') }, + { json: 'rank_type', js: 'rankType', typ: u(undefined, '') }, + { json: 'time', js: 'time', typ: '' }, + { json: 'uigf_gacha_type', js: 'uigfGachaType', typ: '' } + ], + 'any' + ) +}; diff --git a/src/lib/structs/settings.ts b/src/lib/structs/settings.ts new file mode 100644 index 00000000..a27b4197 --- /dev/null +++ b/src/lib/structs/settings.ts @@ -0,0 +1,276 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable no-prototype-builtins */ +/* eslint-disable no-empty */ + +/** JSON Schema for setting +{ + "type": "object", + "title": "Settings", + "properties": { + "user": { + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "Username" + }, + "email": { + "type": "string", + "title": "Email" + }, + "logined": { + "type": "boolean", + "title": "Logined", + "description": "Login Status" + } + }, + "title": "User", + "description": "User related data", + "required": [ + "username", + "email", + "logined" + ] + }, + "global": { + "type": "object", + "properties": { + "theme": { + "type": "number", + "title": "Theme ID" + } + }, + "title": "Global", + "description": "Global settings that affect whole site", + "required": [ + "theme" + ] + } + }, + "description": "Settings for dval.in", + "required": [ + "user", + "global" + ] +} +**/ +/** + * Settings for dval.in + */ +export interface Settings { + /** + * Global settings that affect whole site + */ + global: Global; + /** + * User related data + */ + user: User; + [property: string]: any; +} + +/** + * Global settings that affect whole site + */ +export interface Global { + theme: number; + [property: string]: any; +} + +/** + * User related data + */ +export interface User { + logined: boolean; + email: string; + username: string; + [property: string]: any; +} + +// Converts JSON strings to/from your types +// and asserts the results of JSON.parse at runtime +export class Convert { + public static toSettings(json: string): Settings { + return cast(JSON.parse(json), r('Settings')); + } + + public static settingsToJson(value: Settings): string { + return JSON.stringify(uncast(value, r('Settings')), null, 2); + } +} + +function invalidValue(typ: any, val: any, key: any, parent: any = ''): never { + const prettyTyp = prettyTypeName(typ); + const parentText = parent ? ` on ${parent}` : ''; + const keyText = key ? ` for key "${key}"` : ''; + throw Error( + `Invalid value${keyText}${parentText}. Expected ${prettyTyp} but got ${JSON.stringify(val)}` + ); +} + +function prettyTypeName(typ: any): string { + if (Array.isArray(typ)) { + if (typ.length === 2 && typ[0] === undefined) { + return `an optional ${prettyTypeName(typ[1])}`; + } else { + return `one of [${typ + .map((a) => { + return prettyTypeName(a); + }) + .join(', ')}]`; + } + } else if (typeof typ === 'object' && typ.literal !== undefined) { + return typ.literal; + } else { + return typeof typ; + } +} + +function jsonToJSProps(typ: any): any { + if (typ.jsonToJS === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.json] = { key: p.js, typ: p.typ })); + typ.jsonToJS = map; + } + return typ.jsonToJS; +} + +function jsToJSONProps(typ: any): any { + if (typ.jsToJSON === undefined) { + const map: any = {}; + typ.props.forEach((p: any) => (map[p.js] = { key: p.json, typ: p.typ })); + typ.jsToJSON = map; + } + return typ.jsToJSON; +} + +function transform(val: any, typ: any, getProps: any, key: any = '', parent: any = ''): any { + function transformPrimitive(typ: string, val: any): any { + if (typeof typ === typeof val) return val; + return invalidValue(typ, val, key, parent); + } + + function transformUnion(typs: any[], val: any): any { + // val must validate against one typ in typs + const l = typs.length; + for (let i = 0; i < l; i++) { + const typ = typs[i]; + try { + return transform(val, typ, getProps); + } catch (_) {} + } + return invalidValue(typs, val, key, parent); + } + + function transformEnum(cases: string[], val: any): any { + if (cases.indexOf(val) !== -1) return val; + return invalidValue( + cases.map((a) => { + return l(a); + }), + val, + key, + parent + ); + } + + function transformArray(typ: any, val: any): any { + // val must be an array with no invalid elements + if (!Array.isArray(val)) return invalidValue(l('array'), val, key, parent); + return val.map((el) => transform(el, typ, getProps)); + } + + function transformDate(val: any): any { + if (val === null) { + return null; + } + const d = new Date(val); + if (isNaN(d.valueOf())) { + return invalidValue(l('Date'), val, key, parent); + } + return d; + } + + function transformObject(props: { [k: string]: any }, additional: any, val: any): any { + if (val === null || typeof val !== 'object' || Array.isArray(val)) { + return invalidValue(l(ref || 'object'), val, key, parent); + } + const result: any = {}; + Object.getOwnPropertyNames(props).forEach((key) => { + const prop = props[key]; + const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined; + result[prop.key] = transform(v, prop.typ, getProps, key, ref); + }); + Object.getOwnPropertyNames(val).forEach((key) => { + if (!Object.prototype.hasOwnProperty.call(props, key)) { + result[key] = transform(val[key], additional, getProps, key, ref); + } + }); + return result; + } + + if (typ === 'any') return val; + if (typ === null) { + if (val === null) return val; + return invalidValue(typ, val, key, parent); + } + if (typ === false) return invalidValue(typ, val, key, parent); + let ref: any = undefined; + while (typeof typ === 'object' && typ.ref !== undefined) { + ref = typ.ref; + typ = typeMap[typ.ref]; + } + if (Array.isArray(typ)) return transformEnum(typ, val); + if (typeof typ === 'object') { + return typ.hasOwnProperty('unionMembers') + ? transformUnion(typ.unionMembers, val) + : typ.hasOwnProperty('arrayItems') + ? transformArray(typ.arrayItems, val) + : typ.hasOwnProperty('props') + ? transformObject(getProps(typ), typ.additional, val) + : invalidValue(typ, val, key, parent); + } + // Numbers can be parsed by Date but shouldn't be. + if (typ === Date && typeof val !== 'number') return transformDate(val); + return transformPrimitive(typ, val); +} + +function cast(val: any, typ: any): T { + return transform(val, typ, jsonToJSProps); +} + +function uncast(val: T, typ: any): any { + return transform(val, typ, jsToJSONProps); +} + +function l(typ: any) { + return { literal: typ }; +} + +function o(props: any[], additional: any) { + return { props, additional }; +} + +function r(name: string) { + return { ref: name }; +} + +const typeMap: any = { + Settings: o( + [ + { json: 'global', js: 'global', typ: r('Global') }, + { json: 'user', js: 'user', typ: r('User') } + ], + 'any' + ), + Global: o([{ json: 'theme', js: 'theme', typ: 3.14 }], 'any'), + User: o( + [ + { json: 'logined', js: 'logined', typ: true }, + { json: 'email', js: 'email', typ: '' }, + { json: 'username', js: 'username', typ: '' } + ], + 'any' + ) +}; diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 00000000..eba19d86 --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,56 @@ +import { type ClassValue, clsx } from 'clsx'; +import { twMerge } from 'tailwind-merge'; +import { cubicOut } from 'svelte/easing'; +import type { TransitionConfig } from 'svelte/transition'; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} + +type FlyAndScaleParams = { + y?: number; + x?: number; + start?: number; + duration?: number; +}; + +export const flyAndScale = ( + node: Element, + params: FlyAndScaleParams = { y: -8, x: 0, start: 0.95, duration: 150 } +): TransitionConfig => { + const style = getComputedStyle(node); + const transform = style.transform === 'none' ? '' : style.transform; + + const scaleConversion = (valueA: number, scaleA: [number, number], scaleB: [number, number]) => { + const [minA, maxA] = scaleA; + const [minB, maxB] = scaleB; + + const percentage = (valueA - minA) / (maxA - minA); + const valueB = percentage * (maxB - minB) + minB; + + return valueB; + }; + + const styleToString = (style: Record): string => { + return Object.keys(style).reduce((str, key) => { + if (style[key] === undefined) return str; + return str + `${key}:${style[key]};`; + }, ''); + }; + + return { + duration: params.duration ?? 200, + delay: 0, + css: (t) => { + const y = scaleConversion(t, [0, 1], [params.y ?? 5, 0]); + const x = scaleConversion(t, [0, 1], [params.x ?? 0, 0]); + const scale = scaleConversion(t, [0, 1], [params.start ?? 0.95, 1]); + + return styleToString({ + transform: `${transform} translate3d(${x}px, ${y}px, 0) scale(${scale})`, + opacity: t + }); + }, + easing: cubicOut + }; +}; diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte new file mode 100644 index 00000000..9f907924 --- /dev/null +++ b/src/routes/+layout.svelte @@ -0,0 +1,27 @@ + + + +
+
+ + + + {#if $showSidebar} + + {/if} + +
+ +
+
+ \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte new file mode 100644 index 00000000..e6dcadb5 --- /dev/null +++ b/src/routes/+page.svelte @@ -0,0 +1,2 @@ +

Welcome to SvelteKit

+

Visit kit.svelte.dev to read the documentation

diff --git a/src/routes/settings/+page.svelte b/src/routes/settings/+page.svelte new file mode 100644 index 00000000..4aea5c53 --- /dev/null +++ b/src/routes/settings/+page.svelte @@ -0,0 +1,129 @@ + +{#key category_on} +
+
+ + + + + User Settings + + +
+ themeChange(0)} + bind:group={category_on} + /> + +
+ + themeChange(1)} + bind:group={category_on} + /> + +
+ + themeChange(2)} + /> + +
+
+
+ + + + + Global Settings + + +
+ + +
+
+
+
+
+{/key} \ No newline at end of file diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..825b9e65af7c104cfb07089bb28659393b4f2097 GIT binary patch literal 1571 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

SW9R$wgQ}X{?36T?ip~`*6v(NbhvXM zg?kF@So0-i2vy*z+bU29g55Uz-;*5*BFV=C-~#_+hX%(#R@3J(*mQX7 zAQZ}AvXkE9ns&?a4~6Zq767SfQdIoqq7PMjV6+hmR5S(3Y?BDwR WcfxO7;s<{o0MwOVDpe_1hW;P0%9V=% literal 0 HcmV?d00001 diff --git a/static/images/defense_flat.png b/static/images/defense_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..a515e300cc4e2ebc55bc9abe8543823e68b0ad7b GIT binary patch literal 3449 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 literal 0 HcmV?d00001 diff --git a/static/images/defense_percent.png b/static/images/defense_percent.png new file mode 100644 index 0000000000000000000000000000000000000000..c1c177742b8a6a759d5602efb8af0fbf8f33a676 GIT binary patch literal 6151 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 literal 0 HcmV?d00001 diff --git a/static/images/em.png b/static/images/em.png new file mode 100644 index 0000000000000000000000000000000000000000..67a53e36d8159c1774bd88c1c6e76203edae6655 GIT binary patch literal 7020 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 F{13{aLh1kj literal 0 HcmV?d00001 diff --git a/static/images/hp_flat.png b/static/images/hp_flat.png new file mode 100644 index 0000000000000000000000000000000000000000..ce69f9d05a69e9f6dafc127fe704ecb8d0b915dd GIT binary patch literal 7012 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 literal 0 HcmV?d00001 diff --git a/static/images/hp_percent.png b/static/images/hp_percent.png new file mode 100644 index 0000000000000000000000000000000000000000..beec454e23db760fa78ee1ec7515821a4e9ecc62 GIT binary patch literal 8585 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 KB+CCY^8X)qr+P{N literal 0 HcmV?d00001 diff --git a/svelte.config.js b/svelte.config.js new file mode 100644 index 00000000..8bb2b900 --- /dev/null +++ b/svelte.config.js @@ -0,0 +1,17 @@ +import adapter from '@sveltejs/adapter-static'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter({ + fallback: 'index.html' + }) + }, + preprocess: vitePreprocess() +}; + +export default config; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000..d2e4c5d0 --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,74 @@ +import { fontFamily } from 'tailwindcss/defaultTheme'; +import { createThemes } from 'tw-colors'; +/* eslint-disable @typescript-eslint/naming-convention */ +/** @type {import('tailwindcss').Config} */ +const config = { + darkMode: ['class'], + content: ['./src/**/*.{html,js,svelte,ts}'], + corePlugins: { + preflight: true + }, + safelist: ['0'], + theme: { + container: { + center: true, + padding: '2rem', + screens: { + '2xl': '1400px' + } + }, + extend: { + backgroundColor: "#000000", + colors: {}, + borderRadius: { + lg: 'var(--radius)', + md: 'calc(var(--radius) - 2px)', + sm: 'calc(var(--radius) - 4px)' + }, + fontFamily: { + sans: [...fontFamily.sans] + } + } + }, + plugins: [ + createThemes( + { + t0: { + border: '#000000', + input: '#000000', + background: '#1c3563', + foreground: '#3F6797', + activeSidebar: '#000000', + sidebarText: '#8BB0C9', + fill: '#D0DFE9', + sidebar: '#10172A' + }, + t1: { + border: '#000000', + input: '#000000', + background: '#304b42', + foreground: '#13644d', + activeSidebar: '#000000', + sidebarText: '#d8f3dc', + fill: '#b7e4c7', + sidebar: '#081c15' + }, + t2: { + border: '#000000', + input: '#000000', + background: '#E7C561', + foreground: '#5A4608', + activeSidebar: '#000000', + sidebarText: '#312504', + fill: '#5A4608', + sidebar: '#C6A237' + } + }, + { + defaultTheme: 't0' + } + ) + ] +}; + +export default config; diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..a8f10c8e --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,14 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 00000000..842631bd --- /dev/null +++ b/vite.config.js @@ -0,0 +1,6 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; + +export default defineConfig({ + plugins: [sveltekit()] +}); \ No newline at end of file