├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE.md ├── README.md ├── eslint.config.js ├── header-image.png ├── package.json ├── playwright.config.ts ├── pnpm-lock.yaml ├── postcss.config.cjs ├── src ├── app.css ├── app.d.ts ├── app.html ├── index.test.ts ├── lib │ ├── components │ │ ├── CheckmarkIcon.svelte │ │ ├── ErrorIcon.svelte │ │ ├── LoaderIcon.svelte │ │ ├── ToastBar.svelte │ │ ├── ToastIcon.svelte │ │ ├── ToastMessage.svelte │ │ ├── ToastWrapper.svelte │ │ └── Toaster.svelte │ ├── core │ │ ├── store.ts │ │ ├── toast.ts │ │ ├── types.ts │ │ ├── use-toaster.ts │ │ └── utils.ts │ └── index.ts ├── routes │ ├── +layout.svelte │ └── +page.svelte └── www │ ├── Copy.svelte │ ├── Examples.svelte │ ├── RichContent.svelte │ ├── demo-code.ts │ └── examples.ts ├── static ├── favicon.png ├── fonts │ ├── HKGrotesk-Black.woff │ ├── HKGrotesk-Black.woff2 │ ├── HKGrotesk-BlackItalic.woff │ ├── HKGrotesk-BlackItalic.woff2 │ ├── HKGrotesk-Bold.woff │ ├── HKGrotesk-Bold.woff2 │ ├── HKGrotesk-BoldItalic.woff │ ├── HKGrotesk-BoldItalic.woff2 │ ├── HKGrotesk-ExtraBold.woff │ ├── HKGrotesk-ExtraBold.woff2 │ ├── HKGrotesk-ExtraBoldItalic.woff │ ├── HKGrotesk-ExtraBoldItalic.woff2 │ ├── HKGrotesk-Italic.woff │ ├── HKGrotesk-Italic.woff2 │ ├── HKGrotesk-Medium.woff │ ├── HKGrotesk-Medium.woff2 │ ├── HKGrotesk-MediumItalic.woff │ ├── HKGrotesk-MediumItalic.woff2 │ ├── HKGrotesk-Regular.woff │ ├── HKGrotesk-Regular.woff2 │ ├── HKGrotesk-SemiBold.woff │ ├── HKGrotesk-SemiBold.woff2 │ ├── HKGrotesk-SemiBoldItalic.woff │ └── HKGrotesk-SemiBoldItalic.woff2 ├── og-image.png └── prism-theme.css ├── svelte.config.js ├── tailwind.config.cjs ├── tests └── test.ts ├── tsconfig.json └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /dist 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Kabir Goel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 | 4 | 5 |

6 |

7 | Website · NPM Package 8 |

9 | 10 | # svelte-french-toast 11 | 12 | > Buttery smooth Svelte notifications. 13 | 14 | svelte-french-toast is a Svelte port of Timo Lins’s react-hot-toast, a lightweight, customizable, and beautiful-by-default toast notification library. 15 | 16 | ## Installation 17 | 18 | Install the package with your favorite package manager: 19 | 20 | ``` 21 | npm install svelte-french-toast 22 | ``` 23 | 24 | ``` 25 | pnpm install svelte-french-toast 26 | ``` 27 | 28 | ``` 29 | yarn add svelte-french-toast 30 | ``` 31 | 32 | ## Basic usage 33 | 34 | Mount a `` at the top level of your app and use the `toast` API to display toasts. 35 | 36 | ```js 37 | 44 | 45 | 46 | 47 | ``` 48 | 49 | For more usage examples, see [the website](https://svelte-french-toast.vercel.app). 50 | 51 | ## Thanks 52 | 53 | Thanks to the original author of React Hot Toast and its contributors. 54 | 55 | ``` 56 | MIT License 57 | 58 | Copyright (c) 2020 Timo Lins 59 | 60 | Permission is hereby granted, free of charge, to any person obtaining a copy 61 | of this software and associated documentation files (the "Software"), to deal 62 | in the Software without restriction, including without limitation the rights 63 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 64 | copies of the Software, and to permit persons to whom the Software is 65 | furnished to do so, subject to the following conditions: 66 | 67 | The above copyright notice and this permission notice shall be included in all 68 | copies or substantial portions of the Software. 69 | 70 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 71 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 72 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 73 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 74 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 75 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 76 | SOFTWARE. 77 | ``` 78 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import eslint from '@eslint/js'; 2 | import globals from 'globals'; 3 | import tseslint from 'typescript-eslint'; 4 | import tsParser from '@typescript-eslint/parser'; 5 | import eslintPluginSvelte from 'eslint-plugin-svelte'; 6 | import svelteParser from 'svelte-eslint-parser'; 7 | import eslintConfigPrettier from 'eslint-config-prettier'; 8 | import svelteConfig from './svelte.config.js'; 9 | 10 | export default tseslint.config( 11 | eslint.configs.recommended, 12 | tseslint.configs.recommended, 13 | eslintPluginSvelte.configs['flat/recommended'], 14 | eslintConfigPrettier, 15 | { 16 | ignores: [ 17 | '*.cjs', 18 | '.DS_Store', 19 | 'node_modules', 20 | '/build', 21 | '.svelte-kit', 22 | '/package', 23 | '.env', 24 | '.env.*', 25 | '!.env.example', 26 | 'pnpm-lock.yaml', 27 | 'package-lock.json', 28 | 'yarn.lock' 29 | ] 30 | }, 31 | { 32 | languageOptions: { 33 | sourceType: 'module', 34 | ecmaVersion: 2020, 35 | globals: { 36 | ...globals.browser, 37 | ...globals.es2017, 38 | ...globals.node 39 | } 40 | } 41 | }, 42 | { 43 | files: ['*.svelte', '**/*.svelte'], 44 | languageOptions: { 45 | parser: svelteParser, 46 | parserOptions: { 47 | parser: tsParser, 48 | svelteConfig 49 | } 50 | } 51 | } 52 | ); 53 | -------------------------------------------------------------------------------- /header-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/header-image.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-french-toast", 3 | "version": "2.0.0-alpha.0", 4 | "description": "Buttery smooth Svelte toasts. Lightweight, customizable, and beautiful by default.", 5 | "keywords": [ 6 | "svelte", 7 | "notifications", 8 | "toast", 9 | "snackbar" 10 | ], 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/kbrgl/svelte-french-toast.git" 14 | }, 15 | "license": "MIT", 16 | "author": "Kabir Goel", 17 | "type": "module", 18 | "exports": { 19 | ".": { 20 | "types": "./dist/index.d.ts", 21 | "svelte": "./dist/index.js" 22 | } 23 | }, 24 | "svelte": "./dist/index.js", 25 | "types": "./dist/index.d.ts", 26 | "files": [ 27 | "dist" 28 | ], 29 | "scripts": { 30 | "build": "vite build && pnpm run package", 31 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 32 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 33 | "dev": "vite dev", 34 | "format": "prettier --write .", 35 | "lint": "prettier --check . && eslint .", 36 | "package": "svelte-kit sync && svelte-package && publint && cp README.md header-image.png dist/", 37 | "prepare": "svelte-kit sync", 38 | "prepublishOnly": "pnpm run package", 39 | "preview": "vite preview", 40 | "test": "playwright test", 41 | "test:unit": "vitest" 42 | }, 43 | "dependencies": { 44 | "svelte-writable-derived": "^3.1.1" 45 | }, 46 | "peerDependencies": { 47 | "svelte": "^5.0.0" 48 | }, 49 | "devDependencies": { 50 | "@eslint/js": "^9.21.0", 51 | "@playwright/test": "^1.50.1", 52 | "@sveltejs/adapter-auto": "^4.0.0", 53 | "@sveltejs/kit": "^2.17.2", 54 | "@sveltejs/package": "^2.3.10", 55 | "@sveltejs/vite-plugin-svelte": "^5.0.3", 56 | "@types/prismjs": "^1.26.5", 57 | "autoprefixer": "^10.4.20", 58 | "eslint": "^9.21.0", 59 | "eslint-config-prettier": "^8.10.0", 60 | "eslint-plugin-svelte": "^2.46.1", 61 | "globals": "^16.0.0", 62 | "postcss": "^8.5.3", 63 | "prettier": "^3.5.2", 64 | "prettier-plugin-svelte": "^3.3.3", 65 | "prism-svelte": "^0.5.0", 66 | "prismjs": "^1.29.0", 67 | "publint": "^0.1.16", 68 | "svelte": "^5.0.0", 69 | "svelte-check": "^4.1.4", 70 | "tailwindcss": "^3.4.17", 71 | "tslib": "^2.8.1", 72 | "typescript": "^5.7.3", 73 | "typescript-eslint": "^8.24.1", 74 | "vite": "^6.1.1", 75 | "vitest": "^3.0.6" 76 | }, 77 | "packageManager": "pnpm@9.13.2+sha512.88c9c3864450350e65a33587ab801acf946d7c814ed1134da4a924f6df5a2120fd36b46aab68f7cd1d413149112d53c7db3a4136624cfd00ff1846a0c6cef48a" 78 | } 79 | -------------------------------------------------------------------------------- /playwright.config.ts: -------------------------------------------------------------------------------- 1 | import type { PlaywrightTestConfig } from '@playwright/test'; 2 | 3 | const config: PlaywrightTestConfig = { 4 | webServer: { 5 | command: 'npm run build && npm run preview', 6 | port: 4173 7 | }, 8 | testDir: 'tests' 9 | }; 10 | 11 | export default config; 12 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | svelte-writable-derived: 12 | specifier: ^3.1.1 13 | version: 3.1.1(svelte@5.20.2) 14 | devDependencies: 15 | '@eslint/js': 16 | specifier: ^9.21.0 17 | version: 9.21.0 18 | '@playwright/test': 19 | specifier: ^1.50.1 20 | version: 1.50.1 21 | '@sveltejs/adapter-auto': 22 | specifier: ^4.0.0 23 | version: 4.0.0(@sveltejs/kit@2.17.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0))) 24 | '@sveltejs/kit': 25 | specifier: ^2.17.2 26 | version: 2.17.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 27 | '@sveltejs/package': 28 | specifier: ^2.3.10 29 | version: 2.3.10(svelte@5.20.2)(typescript@5.7.3) 30 | '@sveltejs/vite-plugin-svelte': 31 | specifier: ^5.0.3 32 | version: 5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 33 | '@types/prismjs': 34 | specifier: ^1.26.5 35 | version: 1.26.5 36 | autoprefixer: 37 | specifier: ^10.4.20 38 | version: 10.4.20(postcss@8.5.3) 39 | eslint: 40 | specifier: ^9.21.0 41 | version: 9.21.0(jiti@1.21.7) 42 | eslint-config-prettier: 43 | specifier: ^8.10.0 44 | version: 8.10.0(eslint@9.21.0(jiti@1.21.7)) 45 | eslint-plugin-svelte: 46 | specifier: ^2.46.1 47 | version: 2.46.1(eslint@9.21.0(jiti@1.21.7))(svelte@5.20.2) 48 | globals: 49 | specifier: ^16.0.0 50 | version: 16.0.0 51 | postcss: 52 | specifier: ^8.5.3 53 | version: 8.5.3 54 | prettier: 55 | specifier: ^3.5.2 56 | version: 3.5.2 57 | prettier-plugin-svelte: 58 | specifier: ^3.3.3 59 | version: 3.3.3(prettier@3.5.2)(svelte@5.20.2) 60 | prism-svelte: 61 | specifier: ^0.5.0 62 | version: 0.5.0 63 | prismjs: 64 | specifier: ^1.29.0 65 | version: 1.29.0 66 | publint: 67 | specifier: ^0.1.16 68 | version: 0.1.16 69 | svelte: 70 | specifier: ^5.0.0 71 | version: 5.20.2 72 | svelte-check: 73 | specifier: ^4.1.4 74 | version: 4.1.4(svelte@5.20.2)(typescript@5.7.3) 75 | tailwindcss: 76 | specifier: ^3.4.17 77 | version: 3.4.17 78 | tslib: 79 | specifier: ^2.8.1 80 | version: 2.8.1 81 | typescript: 82 | specifier: ^5.7.3 83 | version: 5.7.3 84 | typescript-eslint: 85 | specifier: ^8.24.1 86 | version: 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 87 | vite: 88 | specifier: ^6.1.1 89 | version: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 90 | vitest: 91 | specifier: ^3.0.6 92 | version: 3.0.6(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 93 | 94 | packages: 95 | 96 | '@alloc/quick-lru@5.2.0': 97 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 98 | engines: {node: '>=10'} 99 | 100 | '@ampproject/remapping@2.3.0': 101 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 102 | engines: {node: '>=6.0.0'} 103 | 104 | '@esbuild/aix-ppc64@0.24.2': 105 | resolution: {integrity: sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==} 106 | engines: {node: '>=18'} 107 | cpu: [ppc64] 108 | os: [aix] 109 | 110 | '@esbuild/android-arm64@0.24.2': 111 | resolution: {integrity: sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==} 112 | engines: {node: '>=18'} 113 | cpu: [arm64] 114 | os: [android] 115 | 116 | '@esbuild/android-arm@0.24.2': 117 | resolution: {integrity: sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==} 118 | engines: {node: '>=18'} 119 | cpu: [arm] 120 | os: [android] 121 | 122 | '@esbuild/android-x64@0.24.2': 123 | resolution: {integrity: sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==} 124 | engines: {node: '>=18'} 125 | cpu: [x64] 126 | os: [android] 127 | 128 | '@esbuild/darwin-arm64@0.24.2': 129 | resolution: {integrity: sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==} 130 | engines: {node: '>=18'} 131 | cpu: [arm64] 132 | os: [darwin] 133 | 134 | '@esbuild/darwin-x64@0.24.2': 135 | resolution: {integrity: sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==} 136 | engines: {node: '>=18'} 137 | cpu: [x64] 138 | os: [darwin] 139 | 140 | '@esbuild/freebsd-arm64@0.24.2': 141 | resolution: {integrity: sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==} 142 | engines: {node: '>=18'} 143 | cpu: [arm64] 144 | os: [freebsd] 145 | 146 | '@esbuild/freebsd-x64@0.24.2': 147 | resolution: {integrity: sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==} 148 | engines: {node: '>=18'} 149 | cpu: [x64] 150 | os: [freebsd] 151 | 152 | '@esbuild/linux-arm64@0.24.2': 153 | resolution: {integrity: sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==} 154 | engines: {node: '>=18'} 155 | cpu: [arm64] 156 | os: [linux] 157 | 158 | '@esbuild/linux-arm@0.24.2': 159 | resolution: {integrity: sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==} 160 | engines: {node: '>=18'} 161 | cpu: [arm] 162 | os: [linux] 163 | 164 | '@esbuild/linux-ia32@0.24.2': 165 | resolution: {integrity: sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==} 166 | engines: {node: '>=18'} 167 | cpu: [ia32] 168 | os: [linux] 169 | 170 | '@esbuild/linux-loong64@0.24.2': 171 | resolution: {integrity: sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==} 172 | engines: {node: '>=18'} 173 | cpu: [loong64] 174 | os: [linux] 175 | 176 | '@esbuild/linux-mips64el@0.24.2': 177 | resolution: {integrity: sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==} 178 | engines: {node: '>=18'} 179 | cpu: [mips64el] 180 | os: [linux] 181 | 182 | '@esbuild/linux-ppc64@0.24.2': 183 | resolution: {integrity: sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==} 184 | engines: {node: '>=18'} 185 | cpu: [ppc64] 186 | os: [linux] 187 | 188 | '@esbuild/linux-riscv64@0.24.2': 189 | resolution: {integrity: sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==} 190 | engines: {node: '>=18'} 191 | cpu: [riscv64] 192 | os: [linux] 193 | 194 | '@esbuild/linux-s390x@0.24.2': 195 | resolution: {integrity: sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==} 196 | engines: {node: '>=18'} 197 | cpu: [s390x] 198 | os: [linux] 199 | 200 | '@esbuild/linux-x64@0.24.2': 201 | resolution: {integrity: sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==} 202 | engines: {node: '>=18'} 203 | cpu: [x64] 204 | os: [linux] 205 | 206 | '@esbuild/netbsd-arm64@0.24.2': 207 | resolution: {integrity: sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==} 208 | engines: {node: '>=18'} 209 | cpu: [arm64] 210 | os: [netbsd] 211 | 212 | '@esbuild/netbsd-x64@0.24.2': 213 | resolution: {integrity: sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==} 214 | engines: {node: '>=18'} 215 | cpu: [x64] 216 | os: [netbsd] 217 | 218 | '@esbuild/openbsd-arm64@0.24.2': 219 | resolution: {integrity: sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==} 220 | engines: {node: '>=18'} 221 | cpu: [arm64] 222 | os: [openbsd] 223 | 224 | '@esbuild/openbsd-x64@0.24.2': 225 | resolution: {integrity: sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==} 226 | engines: {node: '>=18'} 227 | cpu: [x64] 228 | os: [openbsd] 229 | 230 | '@esbuild/sunos-x64@0.24.2': 231 | resolution: {integrity: sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==} 232 | engines: {node: '>=18'} 233 | cpu: [x64] 234 | os: [sunos] 235 | 236 | '@esbuild/win32-arm64@0.24.2': 237 | resolution: {integrity: sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==} 238 | engines: {node: '>=18'} 239 | cpu: [arm64] 240 | os: [win32] 241 | 242 | '@esbuild/win32-ia32@0.24.2': 243 | resolution: {integrity: sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==} 244 | engines: {node: '>=18'} 245 | cpu: [ia32] 246 | os: [win32] 247 | 248 | '@esbuild/win32-x64@0.24.2': 249 | resolution: {integrity: sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==} 250 | engines: {node: '>=18'} 251 | cpu: [x64] 252 | os: [win32] 253 | 254 | '@eslint-community/eslint-utils@4.4.1': 255 | resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 256 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 257 | peerDependencies: 258 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 259 | 260 | '@eslint-community/regexpp@4.12.1': 261 | resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 262 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 263 | 264 | '@eslint/config-array@0.19.2': 265 | resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/core@0.12.0': 269 | resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@eslint/eslintrc@3.3.0': 273 | resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} 274 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 275 | 276 | '@eslint/js@9.21.0': 277 | resolution: {integrity: sha512-BqStZ3HX8Yz6LvsF5ByXYrtigrV5AXADWLAGc7PH/1SxOb7/FIYYMszZZWiUou/GB9P2lXWk2SV4d+Z8h0nknw==} 278 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 279 | 280 | '@eslint/object-schema@2.1.6': 281 | resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} 282 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 283 | 284 | '@eslint/plugin-kit@0.2.7': 285 | resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} 286 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 287 | 288 | '@humanfs/core@0.19.1': 289 | resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 290 | engines: {node: '>=18.18.0'} 291 | 292 | '@humanfs/node@0.16.6': 293 | resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 294 | engines: {node: '>=18.18.0'} 295 | 296 | '@humanwhocodes/module-importer@1.0.1': 297 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 298 | engines: {node: '>=12.22'} 299 | 300 | '@humanwhocodes/retry@0.3.1': 301 | resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 302 | engines: {node: '>=18.18'} 303 | 304 | '@humanwhocodes/retry@0.4.2': 305 | resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} 306 | engines: {node: '>=18.18'} 307 | 308 | '@isaacs/cliui@8.0.2': 309 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 310 | engines: {node: '>=12'} 311 | 312 | '@jridgewell/gen-mapping@0.3.8': 313 | resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 314 | engines: {node: '>=6.0.0'} 315 | 316 | '@jridgewell/resolve-uri@3.1.0': 317 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 318 | engines: {node: '>=6.0.0'} 319 | 320 | '@jridgewell/set-array@1.2.1': 321 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 322 | engines: {node: '>=6.0.0'} 323 | 324 | '@jridgewell/sourcemap-codec@1.5.0': 325 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 326 | 327 | '@jridgewell/trace-mapping@0.3.25': 328 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 329 | 330 | '@nodelib/fs.scandir@2.1.5': 331 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 332 | engines: {node: '>= 8'} 333 | 334 | '@nodelib/fs.stat@2.0.5': 335 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 336 | engines: {node: '>= 8'} 337 | 338 | '@nodelib/fs.walk@1.2.8': 339 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 340 | engines: {node: '>= 8'} 341 | 342 | '@pkgjs/parseargs@0.11.0': 343 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 344 | engines: {node: '>=14'} 345 | 346 | '@playwright/test@1.50.1': 347 | resolution: {integrity: sha512-Jii3aBg+CEDpgnuDxEp/h7BimHcUTDlpEtce89xEumlJ5ef2hqepZ+PWp1DDpYC/VO9fmWVI1IlEaoI5fK9FXQ==} 348 | engines: {node: '>=18'} 349 | hasBin: true 350 | 351 | '@polka/url@1.0.0-next.28': 352 | resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} 353 | 354 | '@rollup/rollup-android-arm-eabi@4.34.8': 355 | resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} 356 | cpu: [arm] 357 | os: [android] 358 | 359 | '@rollup/rollup-android-arm64@4.34.8': 360 | resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} 361 | cpu: [arm64] 362 | os: [android] 363 | 364 | '@rollup/rollup-darwin-arm64@4.34.8': 365 | resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} 366 | cpu: [arm64] 367 | os: [darwin] 368 | 369 | '@rollup/rollup-darwin-x64@4.34.8': 370 | resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} 371 | cpu: [x64] 372 | os: [darwin] 373 | 374 | '@rollup/rollup-freebsd-arm64@4.34.8': 375 | resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} 376 | cpu: [arm64] 377 | os: [freebsd] 378 | 379 | '@rollup/rollup-freebsd-x64@4.34.8': 380 | resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} 381 | cpu: [x64] 382 | os: [freebsd] 383 | 384 | '@rollup/rollup-linux-arm-gnueabihf@4.34.8': 385 | resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} 386 | cpu: [arm] 387 | os: [linux] 388 | 389 | '@rollup/rollup-linux-arm-musleabihf@4.34.8': 390 | resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} 391 | cpu: [arm] 392 | os: [linux] 393 | 394 | '@rollup/rollup-linux-arm64-gnu@4.34.8': 395 | resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} 396 | cpu: [arm64] 397 | os: [linux] 398 | 399 | '@rollup/rollup-linux-arm64-musl@4.34.8': 400 | resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} 401 | cpu: [arm64] 402 | os: [linux] 403 | 404 | '@rollup/rollup-linux-loongarch64-gnu@4.34.8': 405 | resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} 406 | cpu: [loong64] 407 | os: [linux] 408 | 409 | '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': 410 | resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} 411 | cpu: [ppc64] 412 | os: [linux] 413 | 414 | '@rollup/rollup-linux-riscv64-gnu@4.34.8': 415 | resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} 416 | cpu: [riscv64] 417 | os: [linux] 418 | 419 | '@rollup/rollup-linux-s390x-gnu@4.34.8': 420 | resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} 421 | cpu: [s390x] 422 | os: [linux] 423 | 424 | '@rollup/rollup-linux-x64-gnu@4.34.8': 425 | resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} 426 | cpu: [x64] 427 | os: [linux] 428 | 429 | '@rollup/rollup-linux-x64-musl@4.34.8': 430 | resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} 431 | cpu: [x64] 432 | os: [linux] 433 | 434 | '@rollup/rollup-win32-arm64-msvc@4.34.8': 435 | resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} 436 | cpu: [arm64] 437 | os: [win32] 438 | 439 | '@rollup/rollup-win32-ia32-msvc@4.34.8': 440 | resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} 441 | cpu: [ia32] 442 | os: [win32] 443 | 444 | '@rollup/rollup-win32-x64-msvc@4.34.8': 445 | resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} 446 | cpu: [x64] 447 | os: [win32] 448 | 449 | '@sveltejs/adapter-auto@4.0.0': 450 | resolution: {integrity: sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==} 451 | peerDependencies: 452 | '@sveltejs/kit': ^2.0.0 453 | 454 | '@sveltejs/kit@2.17.2': 455 | resolution: {integrity: sha512-Vypk02baf7qd3SOB1uUwUC/3Oka+srPo2J0a8YN3EfJypRshDkNx9HzNKjSmhOnGWwT+SSO06+N0mAb8iVTmTQ==} 456 | engines: {node: '>=18.13'} 457 | hasBin: true 458 | peerDependencies: 459 | '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 460 | svelte: ^4.0.0 || ^5.0.0-next.0 461 | vite: ^5.0.3 || ^6.0.0 462 | 463 | '@sveltejs/package@2.3.10': 464 | resolution: {integrity: sha512-A4fQacgjJ7C/7oSmxR61/TdB14u6ecyMZ8V9JCR5Lol0bLj/PdJPU4uFodFBsKzO3iFiJMpNTgZZ+zYsYZNpUg==} 465 | engines: {node: ^16.14 || >=18} 466 | hasBin: true 467 | peerDependencies: 468 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 469 | 470 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1': 471 | resolution: {integrity: sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw==} 472 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 473 | peerDependencies: 474 | '@sveltejs/vite-plugin-svelte': ^5.0.0 475 | svelte: ^5.0.0 476 | vite: ^6.0.0 477 | 478 | '@sveltejs/vite-plugin-svelte@5.0.3': 479 | resolution: {integrity: sha512-MCFS6CrQDu1yGwspm4qtli0e63vaPCehf6V7pIMP15AsWgMKrqDGCPFF/0kn4SP0ii4aySu4Pa62+fIRGFMjgw==} 480 | engines: {node: ^18.0.0 || ^20.0.0 || >=22} 481 | peerDependencies: 482 | svelte: ^5.0.0 483 | vite: ^6.0.0 484 | 485 | '@types/cookie@0.6.0': 486 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 487 | 488 | '@types/estree@1.0.6': 489 | resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 490 | 491 | '@types/json-schema@7.0.15': 492 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 493 | 494 | '@types/node@18.15.3': 495 | resolution: {integrity: sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw==} 496 | 497 | '@types/prismjs@1.26.5': 498 | resolution: {integrity: sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==} 499 | 500 | '@typescript-eslint/eslint-plugin@8.24.1': 501 | resolution: {integrity: sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==} 502 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 503 | peerDependencies: 504 | '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 505 | eslint: ^8.57.0 || ^9.0.0 506 | typescript: '>=4.8.4 <5.8.0' 507 | 508 | '@typescript-eslint/parser@8.24.1': 509 | resolution: {integrity: sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==} 510 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 511 | peerDependencies: 512 | eslint: ^8.57.0 || ^9.0.0 513 | typescript: '>=4.8.4 <5.8.0' 514 | 515 | '@typescript-eslint/scope-manager@8.24.1': 516 | resolution: {integrity: sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==} 517 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 518 | 519 | '@typescript-eslint/type-utils@8.24.1': 520 | resolution: {integrity: sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==} 521 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 522 | peerDependencies: 523 | eslint: ^8.57.0 || ^9.0.0 524 | typescript: '>=4.8.4 <5.8.0' 525 | 526 | '@typescript-eslint/types@8.24.1': 527 | resolution: {integrity: sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==} 528 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 529 | 530 | '@typescript-eslint/typescript-estree@8.24.1': 531 | resolution: {integrity: sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==} 532 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 533 | peerDependencies: 534 | typescript: '>=4.8.4 <5.8.0' 535 | 536 | '@typescript-eslint/utils@8.24.1': 537 | resolution: {integrity: sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==} 538 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 539 | peerDependencies: 540 | eslint: ^8.57.0 || ^9.0.0 541 | typescript: '>=4.8.4 <5.8.0' 542 | 543 | '@typescript-eslint/visitor-keys@8.24.1': 544 | resolution: {integrity: sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==} 545 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 546 | 547 | '@vitest/expect@3.0.6': 548 | resolution: {integrity: sha512-zBduHf/ja7/QRX4HdP1DSq5XrPgdN+jzLOwaTq/0qZjYfgETNFCKf9nOAp2j3hmom3oTbczuUzrzg9Hafh7hNg==} 549 | 550 | '@vitest/mocker@3.0.6': 551 | resolution: {integrity: sha512-KPztr4/tn7qDGZfqlSPQoF2VgJcKxnDNhmfR3VgZ6Fy1bO8T9Fc1stUiTXtqz0yG24VpD00pZP5f8EOFknjNuQ==} 552 | peerDependencies: 553 | msw: ^2.4.9 554 | vite: ^5.0.0 || ^6.0.0 555 | peerDependenciesMeta: 556 | msw: 557 | optional: true 558 | vite: 559 | optional: true 560 | 561 | '@vitest/pretty-format@3.0.6': 562 | resolution: {integrity: sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==} 563 | 564 | '@vitest/runner@3.0.6': 565 | resolution: {integrity: sha512-JopP4m/jGoaG1+CBqubV/5VMbi7L+NQCJTu1J1Pf6YaUbk7bZtaq5CX7p+8sY64Sjn1UQ1XJparHfcvTTdu9cA==} 566 | 567 | '@vitest/snapshot@3.0.6': 568 | resolution: {integrity: sha512-qKSmxNQwT60kNwwJHMVwavvZsMGXWmngD023OHSgn873pV0lylK7dwBTfYP7e4URy5NiBCHHiQGA9DHkYkqRqg==} 569 | 570 | '@vitest/spy@3.0.6': 571 | resolution: {integrity: sha512-HfOGx/bXtjy24fDlTOpgiAEJbRfFxoX3zIGagCqACkFKKZ/TTOE6gYMKXlqecvxEndKFuNHcHqP081ggZ2yM0Q==} 572 | 573 | '@vitest/utils@3.0.6': 574 | resolution: {integrity: sha512-18ktZpf4GQFTbf9jK543uspU03Q2qya7ZGya5yiZ0Gx0nnnalBvd5ZBislbl2EhLjM8A8rt4OilqKG7QwcGkvQ==} 575 | 576 | acorn-jsx@5.3.2: 577 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 578 | peerDependencies: 579 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 580 | 581 | acorn-typescript@1.4.13: 582 | resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} 583 | peerDependencies: 584 | acorn: '>=8.9.0' 585 | 586 | acorn@8.14.0: 587 | resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 588 | engines: {node: '>=0.4.0'} 589 | hasBin: true 590 | 591 | acorn@8.9.0: 592 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} 593 | engines: {node: '>=0.4.0'} 594 | hasBin: true 595 | 596 | ajv@6.12.6: 597 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 598 | 599 | ansi-regex@5.0.1: 600 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 601 | engines: {node: '>=8'} 602 | 603 | ansi-regex@6.1.0: 604 | resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 605 | engines: {node: '>=12'} 606 | 607 | ansi-styles@4.3.0: 608 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 609 | engines: {node: '>=8'} 610 | 611 | ansi-styles@6.2.1: 612 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 613 | engines: {node: '>=12'} 614 | 615 | any-promise@1.3.0: 616 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 617 | 618 | anymatch@3.1.3: 619 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 620 | engines: {node: '>= 8'} 621 | 622 | arg@5.0.2: 623 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 624 | 625 | argparse@2.0.1: 626 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 627 | 628 | aria-query@5.3.2: 629 | resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 630 | engines: {node: '>= 0.4'} 631 | 632 | assertion-error@2.0.1: 633 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 634 | engines: {node: '>=12'} 635 | 636 | autoprefixer@10.4.20: 637 | resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 638 | engines: {node: ^10 || ^12 || >=14} 639 | hasBin: true 640 | peerDependencies: 641 | postcss: ^8.1.0 642 | 643 | axobject-query@4.1.0: 644 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 645 | engines: {node: '>= 0.4'} 646 | 647 | balanced-match@1.0.2: 648 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 649 | 650 | binary-extensions@2.2.0: 651 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 652 | engines: {node: '>=8'} 653 | 654 | brace-expansion@1.1.11: 655 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 656 | 657 | brace-expansion@2.0.1: 658 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 659 | 660 | braces@3.0.3: 661 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 662 | engines: {node: '>=8'} 663 | 664 | browserslist@4.24.4: 665 | resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 666 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 667 | hasBin: true 668 | 669 | cac@6.7.14: 670 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 671 | engines: {node: '>=8'} 672 | 673 | callsites@3.1.0: 674 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 675 | engines: {node: '>=6'} 676 | 677 | camelcase-css@2.0.1: 678 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 679 | engines: {node: '>= 6'} 680 | 681 | caniuse-lite@1.0.30001700: 682 | resolution: {integrity: sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==} 683 | 684 | chai@5.2.0: 685 | resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==} 686 | engines: {node: '>=12'} 687 | 688 | chalk@4.1.2: 689 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 690 | engines: {node: '>=10'} 691 | 692 | check-error@2.1.1: 693 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 694 | engines: {node: '>= 16'} 695 | 696 | chokidar@3.6.0: 697 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 698 | engines: {node: '>= 8.10.0'} 699 | 700 | chokidar@4.0.3: 701 | resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} 702 | engines: {node: '>= 14.16.0'} 703 | 704 | clsx@2.1.1: 705 | resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 706 | engines: {node: '>=6'} 707 | 708 | color-convert@2.0.1: 709 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 710 | engines: {node: '>=7.0.0'} 711 | 712 | color-name@1.1.4: 713 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 714 | 715 | commander@4.1.1: 716 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 717 | engines: {node: '>= 6'} 718 | 719 | concat-map@0.0.1: 720 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 721 | 722 | cookie@0.6.0: 723 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 724 | engines: {node: '>= 0.6'} 725 | 726 | cross-spawn@7.0.3: 727 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 728 | engines: {node: '>= 8'} 729 | 730 | cross-spawn@7.0.6: 731 | resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 732 | engines: {node: '>= 8'} 733 | 734 | cssesc@3.0.0: 735 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 736 | engines: {node: '>=4'} 737 | hasBin: true 738 | 739 | debug@4.4.0: 740 | resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 741 | engines: {node: '>=6.0'} 742 | peerDependencies: 743 | supports-color: '*' 744 | peerDependenciesMeta: 745 | supports-color: 746 | optional: true 747 | 748 | dedent-js@1.0.1: 749 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 750 | 751 | deep-eql@5.0.2: 752 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 753 | engines: {node: '>=6'} 754 | 755 | deep-is@0.1.4: 756 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 757 | 758 | deepmerge@4.3.1: 759 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 760 | engines: {node: '>=0.10.0'} 761 | 762 | devalue@5.1.1: 763 | resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==} 764 | 765 | didyoumean@1.2.2: 766 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 767 | 768 | dlv@1.1.3: 769 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 770 | 771 | eastasianwidth@0.2.0: 772 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 773 | 774 | electron-to-chromium@1.5.103: 775 | resolution: {integrity: sha512-P6+XzIkfndgsrjROJWfSvVEgNHtPgbhVyTkwLjUM2HU/h7pZRORgaTlHqfAikqxKmdJMLW8fftrdGWbd/Ds0FA==} 776 | 777 | emoji-regex@8.0.0: 778 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 779 | 780 | emoji-regex@9.2.2: 781 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 782 | 783 | es-module-lexer@1.6.0: 784 | resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==} 785 | 786 | esbuild@0.24.2: 787 | resolution: {integrity: sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==} 788 | engines: {node: '>=18'} 789 | hasBin: true 790 | 791 | escalade@3.2.0: 792 | resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 793 | engines: {node: '>=6'} 794 | 795 | escape-string-regexp@4.0.0: 796 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 797 | engines: {node: '>=10'} 798 | 799 | eslint-compat-utils@0.5.1: 800 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 801 | engines: {node: '>=12'} 802 | peerDependencies: 803 | eslint: '>=6.0.0' 804 | 805 | eslint-config-prettier@8.10.0: 806 | resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} 807 | hasBin: true 808 | peerDependencies: 809 | eslint: '>=7.0.0' 810 | 811 | eslint-plugin-svelte@2.46.1: 812 | resolution: {integrity: sha512-7xYr2o4NID/f9OEYMqxsEQsCsj4KaMy4q5sANaKkAb6/QeCjYFxRmDm2S3YC3A3pl1kyPZ/syOx/i7LcWYSbIw==} 813 | engines: {node: ^14.17.0 || >=16.0.0} 814 | peerDependencies: 815 | eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 816 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 817 | peerDependenciesMeta: 818 | svelte: 819 | optional: true 820 | 821 | eslint-scope@7.2.2: 822 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 823 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 824 | 825 | eslint-scope@8.2.0: 826 | resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 827 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 828 | 829 | eslint-visitor-keys@3.4.3: 830 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 831 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 832 | 833 | eslint-visitor-keys@4.2.0: 834 | resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 835 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 836 | 837 | eslint@9.21.0: 838 | resolution: {integrity: sha512-KjeihdFqTPhOMXTt7StsDxriV4n66ueuF/jfPNC3j/lduHwr/ijDwJMsF+wyMJethgiKi5wniIE243vi07d3pg==} 839 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 840 | hasBin: true 841 | peerDependencies: 842 | jiti: '*' 843 | peerDependenciesMeta: 844 | jiti: 845 | optional: true 846 | 847 | esm-env@1.2.2: 848 | resolution: {integrity: sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==} 849 | 850 | espree@10.3.0: 851 | resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 852 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 853 | 854 | espree@9.6.1: 855 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 856 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 857 | 858 | esquery@1.5.0: 859 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 860 | engines: {node: '>=0.10'} 861 | 862 | esrap@1.4.5: 863 | resolution: {integrity: sha512-CjNMjkBWWZeHn+VX+gS8YvFwJ5+NDhg8aWZBSFJPR8qQduDNjbJodA2WcwCm7uQa5Rjqj+nZvVmceg1RbHFB9g==} 864 | 865 | esrecurse@4.3.0: 866 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 867 | engines: {node: '>=4.0'} 868 | 869 | estraverse@5.3.0: 870 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 871 | engines: {node: '>=4.0'} 872 | 873 | estree-walker@3.0.3: 874 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 875 | 876 | esutils@2.0.3: 877 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 878 | engines: {node: '>=0.10.0'} 879 | 880 | expect-type@1.1.0: 881 | resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} 882 | engines: {node: '>=12.0.0'} 883 | 884 | fast-deep-equal@3.1.3: 885 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 886 | 887 | fast-glob@3.3.3: 888 | resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 889 | engines: {node: '>=8.6.0'} 890 | 891 | fast-json-stable-stringify@2.1.0: 892 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 893 | 894 | fast-levenshtein@2.0.6: 895 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 896 | 897 | fastq@1.15.0: 898 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 899 | 900 | fdir@6.4.3: 901 | resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 902 | peerDependencies: 903 | picomatch: ^3 || ^4 904 | peerDependenciesMeta: 905 | picomatch: 906 | optional: true 907 | 908 | file-entry-cache@8.0.0: 909 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 910 | engines: {node: '>=16.0.0'} 911 | 912 | fill-range@7.1.1: 913 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 914 | engines: {node: '>=8'} 915 | 916 | find-up@5.0.0: 917 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 918 | engines: {node: '>=10'} 919 | 920 | flat-cache@4.0.1: 921 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 922 | engines: {node: '>=16'} 923 | 924 | flatted@3.3.3: 925 | resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} 926 | 927 | foreground-child@3.3.0: 928 | resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 929 | engines: {node: '>=14'} 930 | 931 | fraction.js@4.3.7: 932 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 933 | 934 | fs.realpath@1.0.0: 935 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 936 | 937 | fsevents@2.3.2: 938 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 939 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 940 | os: [darwin] 941 | 942 | fsevents@2.3.3: 943 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 944 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 945 | os: [darwin] 946 | 947 | function-bind@1.1.2: 948 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 949 | 950 | glob-parent@5.1.2: 951 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 952 | engines: {node: '>= 6'} 953 | 954 | glob-parent@6.0.2: 955 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 956 | engines: {node: '>=10.13.0'} 957 | 958 | glob@10.4.5: 959 | resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 960 | hasBin: true 961 | 962 | glob@8.1.0: 963 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 964 | engines: {node: '>=12'} 965 | deprecated: Glob versions prior to v9 are no longer supported 966 | 967 | globals@14.0.0: 968 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 969 | engines: {node: '>=18'} 970 | 971 | globals@16.0.0: 972 | resolution: {integrity: sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==} 973 | engines: {node: '>=18'} 974 | 975 | graphemer@1.4.0: 976 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 977 | 978 | has-flag@4.0.0: 979 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 980 | engines: {node: '>=8'} 981 | 982 | hasown@2.0.2: 983 | resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 984 | engines: {node: '>= 0.4'} 985 | 986 | ignore-walk@5.0.1: 987 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 988 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 989 | 990 | ignore@5.2.4: 991 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 992 | engines: {node: '>= 4'} 993 | 994 | ignore@5.3.2: 995 | resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 996 | engines: {node: '>= 4'} 997 | 998 | import-fresh@3.3.0: 999 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1000 | engines: {node: '>=6'} 1001 | 1002 | import-meta-resolve@4.1.0: 1003 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 1004 | 1005 | imurmurhash@0.1.4: 1006 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1007 | engines: {node: '>=0.8.19'} 1008 | 1009 | inflight@1.0.6: 1010 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1011 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 1012 | 1013 | inherits@2.0.4: 1014 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1015 | 1016 | is-binary-path@2.1.0: 1017 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1018 | engines: {node: '>=8'} 1019 | 1020 | is-core-module@2.16.1: 1021 | resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 1022 | engines: {node: '>= 0.4'} 1023 | 1024 | is-extglob@2.1.1: 1025 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1026 | engines: {node: '>=0.10.0'} 1027 | 1028 | is-fullwidth-code-point@3.0.0: 1029 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1030 | engines: {node: '>=8'} 1031 | 1032 | is-glob@4.0.3: 1033 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1034 | engines: {node: '>=0.10.0'} 1035 | 1036 | is-number@7.0.0: 1037 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1038 | engines: {node: '>=0.12.0'} 1039 | 1040 | is-reference@3.0.3: 1041 | resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 1042 | 1043 | isexe@2.0.0: 1044 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1045 | 1046 | jackspeak@3.4.3: 1047 | resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 1048 | 1049 | jiti@1.21.7: 1050 | resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} 1051 | hasBin: true 1052 | 1053 | js-yaml@4.1.0: 1054 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1055 | hasBin: true 1056 | 1057 | json-buffer@3.0.1: 1058 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1059 | 1060 | json-schema-traverse@0.4.1: 1061 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1062 | 1063 | json-stable-stringify-without-jsonify@1.0.1: 1064 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1065 | 1066 | keyv@4.5.4: 1067 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1068 | 1069 | kleur@4.1.5: 1070 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1071 | engines: {node: '>=6'} 1072 | 1073 | known-css-properties@0.35.0: 1074 | resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} 1075 | 1076 | levn@0.4.1: 1077 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1078 | engines: {node: '>= 0.8.0'} 1079 | 1080 | lilconfig@2.1.0: 1081 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1082 | engines: {node: '>=10'} 1083 | 1084 | lilconfig@3.1.3: 1085 | resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1086 | engines: {node: '>=14'} 1087 | 1088 | lines-and-columns@1.2.4: 1089 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1090 | 1091 | locate-character@3.0.0: 1092 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1093 | 1094 | locate-path@6.0.0: 1095 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1096 | engines: {node: '>=10'} 1097 | 1098 | lodash.merge@4.6.2: 1099 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1100 | 1101 | loupe@3.1.3: 1102 | resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==} 1103 | 1104 | lower-case@2.0.2: 1105 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 1106 | 1107 | lru-cache@10.4.3: 1108 | resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 1109 | 1110 | magic-string@0.30.11: 1111 | resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} 1112 | 1113 | magic-string@0.30.17: 1114 | resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1115 | 1116 | merge2@1.4.1: 1117 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1118 | engines: {node: '>= 8'} 1119 | 1120 | micromatch@4.0.8: 1121 | resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1122 | engines: {node: '>=8.6'} 1123 | 1124 | minimatch@3.1.2: 1125 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1126 | 1127 | minimatch@5.1.6: 1128 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1129 | engines: {node: '>=10'} 1130 | 1131 | minimatch@9.0.5: 1132 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1133 | engines: {node: '>=16 || 14 >=14.17'} 1134 | 1135 | minipass@7.1.2: 1136 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1137 | engines: {node: '>=16 || 14 >=14.17'} 1138 | 1139 | mri@1.2.0: 1140 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1141 | engines: {node: '>=4'} 1142 | 1143 | mrmime@2.0.1: 1144 | resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} 1145 | engines: {node: '>=10'} 1146 | 1147 | ms@2.1.3: 1148 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1149 | 1150 | mz@2.7.0: 1151 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1152 | 1153 | nanoid@3.3.8: 1154 | resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 1155 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1156 | hasBin: true 1157 | 1158 | natural-compare@1.4.0: 1159 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1160 | 1161 | no-case@3.0.4: 1162 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 1163 | 1164 | node-releases@2.0.19: 1165 | resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1166 | 1167 | normalize-path@3.0.0: 1168 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1169 | engines: {node: '>=0.10.0'} 1170 | 1171 | normalize-range@0.1.2: 1172 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1173 | engines: {node: '>=0.10.0'} 1174 | 1175 | npm-bundled@2.0.1: 1176 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 1177 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1178 | 1179 | npm-normalize-package-bin@2.0.0: 1180 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 1181 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1182 | 1183 | npm-packlist@5.1.3: 1184 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 1185 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1186 | hasBin: true 1187 | 1188 | object-assign@4.1.1: 1189 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1190 | engines: {node: '>=0.10.0'} 1191 | 1192 | object-hash@3.0.0: 1193 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1194 | engines: {node: '>= 6'} 1195 | 1196 | once@1.4.0: 1197 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1198 | 1199 | optionator@0.9.4: 1200 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 1201 | engines: {node: '>= 0.8.0'} 1202 | 1203 | p-limit@3.1.0: 1204 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1205 | engines: {node: '>=10'} 1206 | 1207 | p-locate@5.0.0: 1208 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1209 | engines: {node: '>=10'} 1210 | 1211 | package-json-from-dist@1.0.1: 1212 | resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1213 | 1214 | parent-module@1.0.1: 1215 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1216 | engines: {node: '>=6'} 1217 | 1218 | pascal-case@3.1.2: 1219 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 1220 | 1221 | path-exists@4.0.0: 1222 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1223 | engines: {node: '>=8'} 1224 | 1225 | path-key@3.1.1: 1226 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1227 | engines: {node: '>=8'} 1228 | 1229 | path-parse@1.0.7: 1230 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1231 | 1232 | path-scurry@1.11.1: 1233 | resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 1234 | engines: {node: '>=16 || 14 >=14.18'} 1235 | 1236 | pathe@2.0.3: 1237 | resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1238 | 1239 | pathval@2.0.0: 1240 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1241 | engines: {node: '>= 14.16'} 1242 | 1243 | picocolors@1.1.1: 1244 | resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1245 | 1246 | picomatch@2.3.1: 1247 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1248 | engines: {node: '>=8.6'} 1249 | 1250 | pify@2.3.0: 1251 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1252 | engines: {node: '>=0.10.0'} 1253 | 1254 | pirates@4.0.6: 1255 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1256 | engines: {node: '>= 6'} 1257 | 1258 | playwright-core@1.50.1: 1259 | resolution: {integrity: sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==} 1260 | engines: {node: '>=18'} 1261 | hasBin: true 1262 | 1263 | playwright@1.50.1: 1264 | resolution: {integrity: sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==} 1265 | engines: {node: '>=18'} 1266 | hasBin: true 1267 | 1268 | postcss-import@15.1.0: 1269 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1270 | engines: {node: '>=14.0.0'} 1271 | peerDependencies: 1272 | postcss: ^8.0.0 1273 | 1274 | postcss-js@4.0.1: 1275 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1276 | engines: {node: ^12 || ^14 || >= 16} 1277 | peerDependencies: 1278 | postcss: ^8.4.21 1279 | 1280 | postcss-load-config@3.1.4: 1281 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1282 | engines: {node: '>= 10'} 1283 | peerDependencies: 1284 | postcss: '>=8.0.9' 1285 | ts-node: '>=9.0.0' 1286 | peerDependenciesMeta: 1287 | postcss: 1288 | optional: true 1289 | ts-node: 1290 | optional: true 1291 | 1292 | postcss-load-config@4.0.2: 1293 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 1294 | engines: {node: '>= 14'} 1295 | peerDependencies: 1296 | postcss: '>=8.0.9' 1297 | ts-node: '>=9.0.0' 1298 | peerDependenciesMeta: 1299 | postcss: 1300 | optional: true 1301 | ts-node: 1302 | optional: true 1303 | 1304 | postcss-nested@6.2.0: 1305 | resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 1306 | engines: {node: '>=12.0'} 1307 | peerDependencies: 1308 | postcss: ^8.2.14 1309 | 1310 | postcss-safe-parser@6.0.0: 1311 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} 1312 | engines: {node: '>=12.0'} 1313 | peerDependencies: 1314 | postcss: ^8.3.3 1315 | 1316 | postcss-scss@4.0.9: 1317 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1318 | engines: {node: '>=12.0'} 1319 | peerDependencies: 1320 | postcss: ^8.4.29 1321 | 1322 | postcss-selector-parser@6.1.2: 1323 | resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 1324 | engines: {node: '>=4'} 1325 | 1326 | postcss-value-parser@4.2.0: 1327 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1328 | 1329 | postcss@8.5.3: 1330 | resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} 1331 | engines: {node: ^10 || ^12 || >=14} 1332 | 1333 | prelude-ls@1.2.1: 1334 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1335 | engines: {node: '>= 0.8.0'} 1336 | 1337 | prettier-plugin-svelte@3.3.3: 1338 | resolution: {integrity: sha512-yViK9zqQ+H2qZD1w/bH7W8i+bVfKrD8GIFjkFe4Thl6kCT9SlAsXVNmt3jCvQOCsnOhcvYgsoVlRV/Eu6x5nNw==} 1339 | peerDependencies: 1340 | prettier: ^3.0.0 1341 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 1342 | 1343 | prettier@3.5.2: 1344 | resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==} 1345 | engines: {node: '>=14'} 1346 | hasBin: true 1347 | 1348 | prism-svelte@0.5.0: 1349 | resolution: {integrity: sha512-db91Bf3pRGKDPz1lAqLFSJXeW13mulUJxhycysFpfXV5MIK7RgWWK2E5aPAa71s8TCzQUXxF5JOV42/iOs6QkA==} 1350 | 1351 | prismjs@1.29.0: 1352 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 1353 | engines: {node: '>=6'} 1354 | 1355 | publint@0.1.16: 1356 | resolution: {integrity: sha512-wJgk7HnXDT5Ap0DjFYbGz78kPkN44iQvDiaq8P63IEEyNU9mYXvaMd2cAyIM6OgqXM/IA3CK6XWIsRq+wjNpgw==} 1357 | engines: {node: '>=16'} 1358 | hasBin: true 1359 | 1360 | punycode@2.3.0: 1361 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1362 | engines: {node: '>=6'} 1363 | 1364 | queue-microtask@1.2.3: 1365 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1366 | 1367 | read-cache@1.0.0: 1368 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1369 | 1370 | readdirp@3.6.0: 1371 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1372 | engines: {node: '>=8.10.0'} 1373 | 1374 | readdirp@4.1.2: 1375 | resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} 1376 | engines: {node: '>= 14.18.0'} 1377 | 1378 | resolve-from@4.0.0: 1379 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1380 | engines: {node: '>=4'} 1381 | 1382 | resolve@1.22.10: 1383 | resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1384 | engines: {node: '>= 0.4'} 1385 | hasBin: true 1386 | 1387 | reusify@1.0.4: 1388 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1389 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1390 | 1391 | rollup@4.34.8: 1392 | resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} 1393 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1394 | hasBin: true 1395 | 1396 | run-parallel@1.2.0: 1397 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1398 | 1399 | sade@1.8.1: 1400 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1401 | engines: {node: '>=6'} 1402 | 1403 | semver@7.7.1: 1404 | resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1405 | engines: {node: '>=10'} 1406 | hasBin: true 1407 | 1408 | set-cookie-parser@2.6.0: 1409 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1410 | 1411 | shebang-command@2.0.0: 1412 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1413 | engines: {node: '>=8'} 1414 | 1415 | shebang-regex@3.0.0: 1416 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1417 | engines: {node: '>=8'} 1418 | 1419 | siginfo@2.0.0: 1420 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1421 | 1422 | signal-exit@4.1.0: 1423 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1424 | engines: {node: '>=14'} 1425 | 1426 | sirv@3.0.1: 1427 | resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} 1428 | engines: {node: '>=18'} 1429 | 1430 | source-map-js@1.2.1: 1431 | resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1432 | engines: {node: '>=0.10.0'} 1433 | 1434 | stackback@0.0.2: 1435 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1436 | 1437 | std-env@3.8.0: 1438 | resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==} 1439 | 1440 | string-width@4.2.3: 1441 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1442 | engines: {node: '>=8'} 1443 | 1444 | string-width@5.1.2: 1445 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1446 | engines: {node: '>=12'} 1447 | 1448 | strip-ansi@6.0.1: 1449 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1450 | engines: {node: '>=8'} 1451 | 1452 | strip-ansi@7.1.0: 1453 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1454 | engines: {node: '>=12'} 1455 | 1456 | strip-json-comments@3.1.1: 1457 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1458 | engines: {node: '>=8'} 1459 | 1460 | sucrase@3.35.0: 1461 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 1462 | engines: {node: '>=16 || 14 >=14.17'} 1463 | hasBin: true 1464 | 1465 | supports-color@7.2.0: 1466 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1467 | engines: {node: '>=8'} 1468 | 1469 | supports-preserve-symlinks-flag@1.0.0: 1470 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1471 | engines: {node: '>= 0.4'} 1472 | 1473 | svelte-check@4.1.4: 1474 | resolution: {integrity: sha512-v0j7yLbT29MezzaQJPEDwksybTE2Ups9rUxEXy92T06TiA0cbqcO8wAOwNUVkFW6B0hsYHA+oAX3BS8b/2oHtw==} 1475 | engines: {node: '>= 18.0.0'} 1476 | hasBin: true 1477 | peerDependencies: 1478 | svelte: ^4.0.0 || ^5.0.0-next.0 1479 | typescript: '>=5.0.0' 1480 | 1481 | svelte-eslint-parser@0.43.0: 1482 | resolution: {integrity: sha512-GpU52uPKKcVnh8tKN5P4UZpJ/fUDndmq7wfsvoVXsyP+aY0anol7Yqo01fyrlaWGMFfm4av5DyrjlaXdLRJvGA==} 1483 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1484 | peerDependencies: 1485 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0 1486 | peerDependenciesMeta: 1487 | svelte: 1488 | optional: true 1489 | 1490 | svelte-writable-derived@3.1.1: 1491 | resolution: {integrity: sha512-w4LR6/bYZEuCs7SGr+M54oipk/UQKtiMadyOhW0PTwAtJ/Ai12QS77sLngEcfBx2q4H8ZBQucc9ktSA5sUGZWw==} 1492 | peerDependencies: 1493 | svelte: ^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94 1494 | 1495 | svelte2tsx@0.7.34: 1496 | resolution: {integrity: sha512-WTMhpNhFf8/h3SMtR5dkdSy2qfveomkhYei/QW9gSPccb0/b82tjHvLop6vT303ZkGswU/da1s6XvrLgthQPCw==} 1497 | peerDependencies: 1498 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 1499 | typescript: ^4.9.4 || ^5.0.0 1500 | 1501 | svelte@5.20.2: 1502 | resolution: {integrity: sha512-aYXJreNUiyTob0QOzRZeBXZMGeFZDch6SrSRV8QTncZb6zj0O3BEdUzPpojuHQ1pTvk+KX7I6rZCXPUf8pTPxA==} 1503 | engines: {node: '>=18'} 1504 | 1505 | tailwindcss@3.4.17: 1506 | resolution: {integrity: sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==} 1507 | engines: {node: '>=14.0.0'} 1508 | hasBin: true 1509 | 1510 | thenify-all@1.6.0: 1511 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1512 | engines: {node: '>=0.8'} 1513 | 1514 | thenify@3.3.1: 1515 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1516 | 1517 | tinybench@2.9.0: 1518 | resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 1519 | 1520 | tinyexec@0.3.2: 1521 | resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} 1522 | 1523 | tinypool@1.0.2: 1524 | resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} 1525 | engines: {node: ^18.0.0 || >=20.0.0} 1526 | 1527 | tinyrainbow@2.0.0: 1528 | resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} 1529 | engines: {node: '>=14.0.0'} 1530 | 1531 | tinyspy@3.0.2: 1532 | resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} 1533 | engines: {node: '>=14.0.0'} 1534 | 1535 | to-regex-range@5.0.1: 1536 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1537 | engines: {node: '>=8.0'} 1538 | 1539 | totalist@3.0.0: 1540 | resolution: {integrity: sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==} 1541 | engines: {node: '>=6'} 1542 | 1543 | ts-api-utils@2.0.1: 1544 | resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} 1545 | engines: {node: '>=18.12'} 1546 | peerDependencies: 1547 | typescript: '>=4.8.4' 1548 | 1549 | ts-interface-checker@0.1.13: 1550 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1551 | 1552 | tslib@2.8.1: 1553 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1554 | 1555 | type-check@0.4.0: 1556 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1557 | engines: {node: '>= 0.8.0'} 1558 | 1559 | typescript-eslint@8.24.1: 1560 | resolution: {integrity: sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==} 1561 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1562 | peerDependencies: 1563 | eslint: ^8.57.0 || ^9.0.0 1564 | typescript: '>=4.8.4 <5.8.0' 1565 | 1566 | typescript@5.7.3: 1567 | resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1568 | engines: {node: '>=14.17'} 1569 | hasBin: true 1570 | 1571 | update-browserslist-db@1.1.2: 1572 | resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} 1573 | hasBin: true 1574 | peerDependencies: 1575 | browserslist: '>= 4.21.0' 1576 | 1577 | uri-js@4.4.1: 1578 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1579 | 1580 | util-deprecate@1.0.2: 1581 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1582 | 1583 | vite-node@3.0.6: 1584 | resolution: {integrity: sha512-s51RzrTkXKJrhNbUzQRsarjmAae7VmMPAsRT7lppVpIg6mK3zGthP9Hgz0YQQKuNcF+Ii7DfYk3Fxz40jRmePw==} 1585 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1586 | hasBin: true 1587 | 1588 | vite@6.1.1: 1589 | resolution: {integrity: sha512-4GgM54XrwRfrOp297aIYspIti66k56v16ZnqHvrIM7mG+HjDlAwS7p+Srr7J6fGvEdOJ5JcQ/D9T7HhtdXDTzA==} 1590 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1591 | hasBin: true 1592 | peerDependencies: 1593 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1594 | jiti: '>=1.21.0' 1595 | less: '*' 1596 | lightningcss: ^1.21.0 1597 | sass: '*' 1598 | sass-embedded: '*' 1599 | stylus: '*' 1600 | sugarss: '*' 1601 | terser: ^5.16.0 1602 | tsx: ^4.8.1 1603 | yaml: ^2.4.2 1604 | peerDependenciesMeta: 1605 | '@types/node': 1606 | optional: true 1607 | jiti: 1608 | optional: true 1609 | less: 1610 | optional: true 1611 | lightningcss: 1612 | optional: true 1613 | sass: 1614 | optional: true 1615 | sass-embedded: 1616 | optional: true 1617 | stylus: 1618 | optional: true 1619 | sugarss: 1620 | optional: true 1621 | terser: 1622 | optional: true 1623 | tsx: 1624 | optional: true 1625 | yaml: 1626 | optional: true 1627 | 1628 | vitefu@1.0.5: 1629 | resolution: {integrity: sha512-h4Vflt9gxODPFNGPwp4zAMZRpZR7eslzwH2c5hn5kNZ5rhnKyRJ50U+yGCdc2IRaBs8O4haIgLNGrV5CrpMsCA==} 1630 | peerDependencies: 1631 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 1632 | peerDependenciesMeta: 1633 | vite: 1634 | optional: true 1635 | 1636 | vitest@3.0.6: 1637 | resolution: {integrity: sha512-/iL1Sc5VeDZKPDe58oGK4HUFLhw6b5XdY1MYawjuSaDA4sEfYlY9HnS6aCEG26fX+MgUi7MwlduTBHHAI/OvMA==} 1638 | engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 1639 | hasBin: true 1640 | peerDependencies: 1641 | '@edge-runtime/vm': '*' 1642 | '@types/debug': ^4.1.12 1643 | '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 1644 | '@vitest/browser': 3.0.6 1645 | '@vitest/ui': 3.0.6 1646 | happy-dom: '*' 1647 | jsdom: '*' 1648 | peerDependenciesMeta: 1649 | '@edge-runtime/vm': 1650 | optional: true 1651 | '@types/debug': 1652 | optional: true 1653 | '@types/node': 1654 | optional: true 1655 | '@vitest/browser': 1656 | optional: true 1657 | '@vitest/ui': 1658 | optional: true 1659 | happy-dom: 1660 | optional: true 1661 | jsdom: 1662 | optional: true 1663 | 1664 | which@2.0.2: 1665 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1666 | engines: {node: '>= 8'} 1667 | hasBin: true 1668 | 1669 | why-is-node-running@2.3.0: 1670 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1671 | engines: {node: '>=8'} 1672 | hasBin: true 1673 | 1674 | word-wrap@1.2.5: 1675 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1676 | engines: {node: '>=0.10.0'} 1677 | 1678 | wrap-ansi@7.0.0: 1679 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1680 | engines: {node: '>=10'} 1681 | 1682 | wrap-ansi@8.1.0: 1683 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1684 | engines: {node: '>=12'} 1685 | 1686 | wrappy@1.0.2: 1687 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1688 | 1689 | yaml@1.10.2: 1690 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1691 | engines: {node: '>= 6'} 1692 | 1693 | yaml@2.7.0: 1694 | resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} 1695 | engines: {node: '>= 14'} 1696 | hasBin: true 1697 | 1698 | yocto-queue@0.1.0: 1699 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1700 | engines: {node: '>=10'} 1701 | 1702 | zimmerframe@1.1.2: 1703 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 1704 | 1705 | snapshots: 1706 | 1707 | '@alloc/quick-lru@5.2.0': {} 1708 | 1709 | '@ampproject/remapping@2.3.0': 1710 | dependencies: 1711 | '@jridgewell/gen-mapping': 0.3.8 1712 | '@jridgewell/trace-mapping': 0.3.25 1713 | 1714 | '@esbuild/aix-ppc64@0.24.2': 1715 | optional: true 1716 | 1717 | '@esbuild/android-arm64@0.24.2': 1718 | optional: true 1719 | 1720 | '@esbuild/android-arm@0.24.2': 1721 | optional: true 1722 | 1723 | '@esbuild/android-x64@0.24.2': 1724 | optional: true 1725 | 1726 | '@esbuild/darwin-arm64@0.24.2': 1727 | optional: true 1728 | 1729 | '@esbuild/darwin-x64@0.24.2': 1730 | optional: true 1731 | 1732 | '@esbuild/freebsd-arm64@0.24.2': 1733 | optional: true 1734 | 1735 | '@esbuild/freebsd-x64@0.24.2': 1736 | optional: true 1737 | 1738 | '@esbuild/linux-arm64@0.24.2': 1739 | optional: true 1740 | 1741 | '@esbuild/linux-arm@0.24.2': 1742 | optional: true 1743 | 1744 | '@esbuild/linux-ia32@0.24.2': 1745 | optional: true 1746 | 1747 | '@esbuild/linux-loong64@0.24.2': 1748 | optional: true 1749 | 1750 | '@esbuild/linux-mips64el@0.24.2': 1751 | optional: true 1752 | 1753 | '@esbuild/linux-ppc64@0.24.2': 1754 | optional: true 1755 | 1756 | '@esbuild/linux-riscv64@0.24.2': 1757 | optional: true 1758 | 1759 | '@esbuild/linux-s390x@0.24.2': 1760 | optional: true 1761 | 1762 | '@esbuild/linux-x64@0.24.2': 1763 | optional: true 1764 | 1765 | '@esbuild/netbsd-arm64@0.24.2': 1766 | optional: true 1767 | 1768 | '@esbuild/netbsd-x64@0.24.2': 1769 | optional: true 1770 | 1771 | '@esbuild/openbsd-arm64@0.24.2': 1772 | optional: true 1773 | 1774 | '@esbuild/openbsd-x64@0.24.2': 1775 | optional: true 1776 | 1777 | '@esbuild/sunos-x64@0.24.2': 1778 | optional: true 1779 | 1780 | '@esbuild/win32-arm64@0.24.2': 1781 | optional: true 1782 | 1783 | '@esbuild/win32-ia32@0.24.2': 1784 | optional: true 1785 | 1786 | '@esbuild/win32-x64@0.24.2': 1787 | optional: true 1788 | 1789 | '@eslint-community/eslint-utils@4.4.1(eslint@9.21.0(jiti@1.21.7))': 1790 | dependencies: 1791 | eslint: 9.21.0(jiti@1.21.7) 1792 | eslint-visitor-keys: 3.4.3 1793 | 1794 | '@eslint-community/regexpp@4.12.1': {} 1795 | 1796 | '@eslint/config-array@0.19.2': 1797 | dependencies: 1798 | '@eslint/object-schema': 2.1.6 1799 | debug: 4.4.0 1800 | minimatch: 3.1.2 1801 | transitivePeerDependencies: 1802 | - supports-color 1803 | 1804 | '@eslint/core@0.12.0': 1805 | dependencies: 1806 | '@types/json-schema': 7.0.15 1807 | 1808 | '@eslint/eslintrc@3.3.0': 1809 | dependencies: 1810 | ajv: 6.12.6 1811 | debug: 4.4.0 1812 | espree: 10.3.0 1813 | globals: 14.0.0 1814 | ignore: 5.2.4 1815 | import-fresh: 3.3.0 1816 | js-yaml: 4.1.0 1817 | minimatch: 3.1.2 1818 | strip-json-comments: 3.1.1 1819 | transitivePeerDependencies: 1820 | - supports-color 1821 | 1822 | '@eslint/js@9.21.0': {} 1823 | 1824 | '@eslint/object-schema@2.1.6': {} 1825 | 1826 | '@eslint/plugin-kit@0.2.7': 1827 | dependencies: 1828 | '@eslint/core': 0.12.0 1829 | levn: 0.4.1 1830 | 1831 | '@humanfs/core@0.19.1': {} 1832 | 1833 | '@humanfs/node@0.16.6': 1834 | dependencies: 1835 | '@humanfs/core': 0.19.1 1836 | '@humanwhocodes/retry': 0.3.1 1837 | 1838 | '@humanwhocodes/module-importer@1.0.1': {} 1839 | 1840 | '@humanwhocodes/retry@0.3.1': {} 1841 | 1842 | '@humanwhocodes/retry@0.4.2': {} 1843 | 1844 | '@isaacs/cliui@8.0.2': 1845 | dependencies: 1846 | string-width: 5.1.2 1847 | string-width-cjs: string-width@4.2.3 1848 | strip-ansi: 7.1.0 1849 | strip-ansi-cjs: strip-ansi@6.0.1 1850 | wrap-ansi: 8.1.0 1851 | wrap-ansi-cjs: wrap-ansi@7.0.0 1852 | 1853 | '@jridgewell/gen-mapping@0.3.8': 1854 | dependencies: 1855 | '@jridgewell/set-array': 1.2.1 1856 | '@jridgewell/sourcemap-codec': 1.5.0 1857 | '@jridgewell/trace-mapping': 0.3.25 1858 | 1859 | '@jridgewell/resolve-uri@3.1.0': {} 1860 | 1861 | '@jridgewell/set-array@1.2.1': {} 1862 | 1863 | '@jridgewell/sourcemap-codec@1.5.0': {} 1864 | 1865 | '@jridgewell/trace-mapping@0.3.25': 1866 | dependencies: 1867 | '@jridgewell/resolve-uri': 3.1.0 1868 | '@jridgewell/sourcemap-codec': 1.5.0 1869 | 1870 | '@nodelib/fs.scandir@2.1.5': 1871 | dependencies: 1872 | '@nodelib/fs.stat': 2.0.5 1873 | run-parallel: 1.2.0 1874 | 1875 | '@nodelib/fs.stat@2.0.5': {} 1876 | 1877 | '@nodelib/fs.walk@1.2.8': 1878 | dependencies: 1879 | '@nodelib/fs.scandir': 2.1.5 1880 | fastq: 1.15.0 1881 | 1882 | '@pkgjs/parseargs@0.11.0': 1883 | optional: true 1884 | 1885 | '@playwright/test@1.50.1': 1886 | dependencies: 1887 | playwright: 1.50.1 1888 | 1889 | '@polka/url@1.0.0-next.28': {} 1890 | 1891 | '@rollup/rollup-android-arm-eabi@4.34.8': 1892 | optional: true 1893 | 1894 | '@rollup/rollup-android-arm64@4.34.8': 1895 | optional: true 1896 | 1897 | '@rollup/rollup-darwin-arm64@4.34.8': 1898 | optional: true 1899 | 1900 | '@rollup/rollup-darwin-x64@4.34.8': 1901 | optional: true 1902 | 1903 | '@rollup/rollup-freebsd-arm64@4.34.8': 1904 | optional: true 1905 | 1906 | '@rollup/rollup-freebsd-x64@4.34.8': 1907 | optional: true 1908 | 1909 | '@rollup/rollup-linux-arm-gnueabihf@4.34.8': 1910 | optional: true 1911 | 1912 | '@rollup/rollup-linux-arm-musleabihf@4.34.8': 1913 | optional: true 1914 | 1915 | '@rollup/rollup-linux-arm64-gnu@4.34.8': 1916 | optional: true 1917 | 1918 | '@rollup/rollup-linux-arm64-musl@4.34.8': 1919 | optional: true 1920 | 1921 | '@rollup/rollup-linux-loongarch64-gnu@4.34.8': 1922 | optional: true 1923 | 1924 | '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': 1925 | optional: true 1926 | 1927 | '@rollup/rollup-linux-riscv64-gnu@4.34.8': 1928 | optional: true 1929 | 1930 | '@rollup/rollup-linux-s390x-gnu@4.34.8': 1931 | optional: true 1932 | 1933 | '@rollup/rollup-linux-x64-gnu@4.34.8': 1934 | optional: true 1935 | 1936 | '@rollup/rollup-linux-x64-musl@4.34.8': 1937 | optional: true 1938 | 1939 | '@rollup/rollup-win32-arm64-msvc@4.34.8': 1940 | optional: true 1941 | 1942 | '@rollup/rollup-win32-ia32-msvc@4.34.8': 1943 | optional: true 1944 | 1945 | '@rollup/rollup-win32-x64-msvc@4.34.8': 1946 | optional: true 1947 | 1948 | '@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.17.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))': 1949 | dependencies: 1950 | '@sveltejs/kit': 2.17.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 1951 | import-meta-resolve: 4.1.0 1952 | 1953 | '@sveltejs/kit@2.17.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0))': 1954 | dependencies: 1955 | '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 1956 | '@types/cookie': 0.6.0 1957 | cookie: 0.6.0 1958 | devalue: 5.1.1 1959 | esm-env: 1.2.2 1960 | import-meta-resolve: 4.1.0 1961 | kleur: 4.1.5 1962 | magic-string: 0.30.11 1963 | mrmime: 2.0.1 1964 | sade: 1.8.1 1965 | set-cookie-parser: 2.6.0 1966 | sirv: 3.0.1 1967 | svelte: 5.20.2 1968 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 1969 | 1970 | '@sveltejs/package@2.3.10(svelte@5.20.2)(typescript@5.7.3)': 1971 | dependencies: 1972 | chokidar: 4.0.3 1973 | kleur: 4.1.5 1974 | sade: 1.8.1 1975 | semver: 7.7.1 1976 | svelte: 5.20.2 1977 | svelte2tsx: 0.7.34(svelte@5.20.2)(typescript@5.7.3) 1978 | transitivePeerDependencies: 1979 | - typescript 1980 | 1981 | '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0))': 1982 | dependencies: 1983 | '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 1984 | debug: 4.4.0 1985 | svelte: 5.20.2 1986 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 1987 | transitivePeerDependencies: 1988 | - supports-color 1989 | 1990 | '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0))': 1991 | dependencies: 1992 | '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)))(svelte@5.20.2)(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 1993 | debug: 4.4.0 1994 | deepmerge: 4.3.1 1995 | kleur: 4.1.5 1996 | magic-string: 0.30.17 1997 | svelte: 5.20.2 1998 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 1999 | vitefu: 1.0.5(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 2000 | transitivePeerDependencies: 2001 | - supports-color 2002 | 2003 | '@types/cookie@0.6.0': {} 2004 | 2005 | '@types/estree@1.0.6': {} 2006 | 2007 | '@types/json-schema@7.0.15': {} 2008 | 2009 | '@types/node@18.15.3': 2010 | optional: true 2011 | 2012 | '@types/prismjs@1.26.5': {} 2013 | 2014 | '@typescript-eslint/eslint-plugin@8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3)': 2015 | dependencies: 2016 | '@eslint-community/regexpp': 4.12.1 2017 | '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 2018 | '@typescript-eslint/scope-manager': 8.24.1 2019 | '@typescript-eslint/type-utils': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 2020 | '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 2021 | '@typescript-eslint/visitor-keys': 8.24.1 2022 | eslint: 9.21.0(jiti@1.21.7) 2023 | graphemer: 1.4.0 2024 | ignore: 5.3.2 2025 | natural-compare: 1.4.0 2026 | ts-api-utils: 2.0.1(typescript@5.7.3) 2027 | typescript: 5.7.3 2028 | transitivePeerDependencies: 2029 | - supports-color 2030 | 2031 | '@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3)': 2032 | dependencies: 2033 | '@typescript-eslint/scope-manager': 8.24.1 2034 | '@typescript-eslint/types': 8.24.1 2035 | '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) 2036 | '@typescript-eslint/visitor-keys': 8.24.1 2037 | debug: 4.4.0 2038 | eslint: 9.21.0(jiti@1.21.7) 2039 | typescript: 5.7.3 2040 | transitivePeerDependencies: 2041 | - supports-color 2042 | 2043 | '@typescript-eslint/scope-manager@8.24.1': 2044 | dependencies: 2045 | '@typescript-eslint/types': 8.24.1 2046 | '@typescript-eslint/visitor-keys': 8.24.1 2047 | 2048 | '@typescript-eslint/type-utils@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3)': 2049 | dependencies: 2050 | '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) 2051 | '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 2052 | debug: 4.4.0 2053 | eslint: 9.21.0(jiti@1.21.7) 2054 | ts-api-utils: 2.0.1(typescript@5.7.3) 2055 | typescript: 5.7.3 2056 | transitivePeerDependencies: 2057 | - supports-color 2058 | 2059 | '@typescript-eslint/types@8.24.1': {} 2060 | 2061 | '@typescript-eslint/typescript-estree@8.24.1(typescript@5.7.3)': 2062 | dependencies: 2063 | '@typescript-eslint/types': 8.24.1 2064 | '@typescript-eslint/visitor-keys': 8.24.1 2065 | debug: 4.4.0 2066 | fast-glob: 3.3.3 2067 | is-glob: 4.0.3 2068 | minimatch: 9.0.5 2069 | semver: 7.7.1 2070 | ts-api-utils: 2.0.1(typescript@5.7.3) 2071 | typescript: 5.7.3 2072 | transitivePeerDependencies: 2073 | - supports-color 2074 | 2075 | '@typescript-eslint/utils@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3)': 2076 | dependencies: 2077 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@1.21.7)) 2078 | '@typescript-eslint/scope-manager': 8.24.1 2079 | '@typescript-eslint/types': 8.24.1 2080 | '@typescript-eslint/typescript-estree': 8.24.1(typescript@5.7.3) 2081 | eslint: 9.21.0(jiti@1.21.7) 2082 | typescript: 5.7.3 2083 | transitivePeerDependencies: 2084 | - supports-color 2085 | 2086 | '@typescript-eslint/visitor-keys@8.24.1': 2087 | dependencies: 2088 | '@typescript-eslint/types': 8.24.1 2089 | eslint-visitor-keys: 4.2.0 2090 | 2091 | '@vitest/expect@3.0.6': 2092 | dependencies: 2093 | '@vitest/spy': 3.0.6 2094 | '@vitest/utils': 3.0.6 2095 | chai: 5.2.0 2096 | tinyrainbow: 2.0.0 2097 | 2098 | '@vitest/mocker@3.0.6(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0))': 2099 | dependencies: 2100 | '@vitest/spy': 3.0.6 2101 | estree-walker: 3.0.3 2102 | magic-string: 0.30.17 2103 | optionalDependencies: 2104 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 2105 | 2106 | '@vitest/pretty-format@3.0.6': 2107 | dependencies: 2108 | tinyrainbow: 2.0.0 2109 | 2110 | '@vitest/runner@3.0.6': 2111 | dependencies: 2112 | '@vitest/utils': 3.0.6 2113 | pathe: 2.0.3 2114 | 2115 | '@vitest/snapshot@3.0.6': 2116 | dependencies: 2117 | '@vitest/pretty-format': 3.0.6 2118 | magic-string: 0.30.17 2119 | pathe: 2.0.3 2120 | 2121 | '@vitest/spy@3.0.6': 2122 | dependencies: 2123 | tinyspy: 3.0.2 2124 | 2125 | '@vitest/utils@3.0.6': 2126 | dependencies: 2127 | '@vitest/pretty-format': 3.0.6 2128 | loupe: 3.1.3 2129 | tinyrainbow: 2.0.0 2130 | 2131 | acorn-jsx@5.3.2(acorn@8.14.0): 2132 | dependencies: 2133 | acorn: 8.14.0 2134 | 2135 | acorn-jsx@5.3.2(acorn@8.9.0): 2136 | dependencies: 2137 | acorn: 8.9.0 2138 | 2139 | acorn-typescript@1.4.13(acorn@8.14.0): 2140 | dependencies: 2141 | acorn: 8.14.0 2142 | 2143 | acorn@8.14.0: {} 2144 | 2145 | acorn@8.9.0: {} 2146 | 2147 | ajv@6.12.6: 2148 | dependencies: 2149 | fast-deep-equal: 3.1.3 2150 | fast-json-stable-stringify: 2.1.0 2151 | json-schema-traverse: 0.4.1 2152 | uri-js: 4.4.1 2153 | 2154 | ansi-regex@5.0.1: {} 2155 | 2156 | ansi-regex@6.1.0: {} 2157 | 2158 | ansi-styles@4.3.0: 2159 | dependencies: 2160 | color-convert: 2.0.1 2161 | 2162 | ansi-styles@6.2.1: {} 2163 | 2164 | any-promise@1.3.0: {} 2165 | 2166 | anymatch@3.1.3: 2167 | dependencies: 2168 | normalize-path: 3.0.0 2169 | picomatch: 2.3.1 2170 | 2171 | arg@5.0.2: {} 2172 | 2173 | argparse@2.0.1: {} 2174 | 2175 | aria-query@5.3.2: {} 2176 | 2177 | assertion-error@2.0.1: {} 2178 | 2179 | autoprefixer@10.4.20(postcss@8.5.3): 2180 | dependencies: 2181 | browserslist: 4.24.4 2182 | caniuse-lite: 1.0.30001700 2183 | fraction.js: 4.3.7 2184 | normalize-range: 0.1.2 2185 | picocolors: 1.1.1 2186 | postcss: 8.5.3 2187 | postcss-value-parser: 4.2.0 2188 | 2189 | axobject-query@4.1.0: {} 2190 | 2191 | balanced-match@1.0.2: {} 2192 | 2193 | binary-extensions@2.2.0: {} 2194 | 2195 | brace-expansion@1.1.11: 2196 | dependencies: 2197 | balanced-match: 1.0.2 2198 | concat-map: 0.0.1 2199 | 2200 | brace-expansion@2.0.1: 2201 | dependencies: 2202 | balanced-match: 1.0.2 2203 | 2204 | braces@3.0.3: 2205 | dependencies: 2206 | fill-range: 7.1.1 2207 | 2208 | browserslist@4.24.4: 2209 | dependencies: 2210 | caniuse-lite: 1.0.30001700 2211 | electron-to-chromium: 1.5.103 2212 | node-releases: 2.0.19 2213 | update-browserslist-db: 1.1.2(browserslist@4.24.4) 2214 | 2215 | cac@6.7.14: {} 2216 | 2217 | callsites@3.1.0: {} 2218 | 2219 | camelcase-css@2.0.1: {} 2220 | 2221 | caniuse-lite@1.0.30001700: {} 2222 | 2223 | chai@5.2.0: 2224 | dependencies: 2225 | assertion-error: 2.0.1 2226 | check-error: 2.1.1 2227 | deep-eql: 5.0.2 2228 | loupe: 3.1.3 2229 | pathval: 2.0.0 2230 | 2231 | chalk@4.1.2: 2232 | dependencies: 2233 | ansi-styles: 4.3.0 2234 | supports-color: 7.2.0 2235 | 2236 | check-error@2.1.1: {} 2237 | 2238 | chokidar@3.6.0: 2239 | dependencies: 2240 | anymatch: 3.1.3 2241 | braces: 3.0.3 2242 | glob-parent: 5.1.2 2243 | is-binary-path: 2.1.0 2244 | is-glob: 4.0.3 2245 | normalize-path: 3.0.0 2246 | readdirp: 3.6.0 2247 | optionalDependencies: 2248 | fsevents: 2.3.3 2249 | 2250 | chokidar@4.0.3: 2251 | dependencies: 2252 | readdirp: 4.1.2 2253 | 2254 | clsx@2.1.1: {} 2255 | 2256 | color-convert@2.0.1: 2257 | dependencies: 2258 | color-name: 1.1.4 2259 | 2260 | color-name@1.1.4: {} 2261 | 2262 | commander@4.1.1: {} 2263 | 2264 | concat-map@0.0.1: {} 2265 | 2266 | cookie@0.6.0: {} 2267 | 2268 | cross-spawn@7.0.3: 2269 | dependencies: 2270 | path-key: 3.1.1 2271 | shebang-command: 2.0.0 2272 | which: 2.0.2 2273 | 2274 | cross-spawn@7.0.6: 2275 | dependencies: 2276 | path-key: 3.1.1 2277 | shebang-command: 2.0.0 2278 | which: 2.0.2 2279 | 2280 | cssesc@3.0.0: {} 2281 | 2282 | debug@4.4.0: 2283 | dependencies: 2284 | ms: 2.1.3 2285 | 2286 | dedent-js@1.0.1: {} 2287 | 2288 | deep-eql@5.0.2: {} 2289 | 2290 | deep-is@0.1.4: {} 2291 | 2292 | deepmerge@4.3.1: {} 2293 | 2294 | devalue@5.1.1: {} 2295 | 2296 | didyoumean@1.2.2: {} 2297 | 2298 | dlv@1.1.3: {} 2299 | 2300 | eastasianwidth@0.2.0: {} 2301 | 2302 | electron-to-chromium@1.5.103: {} 2303 | 2304 | emoji-regex@8.0.0: {} 2305 | 2306 | emoji-regex@9.2.2: {} 2307 | 2308 | es-module-lexer@1.6.0: {} 2309 | 2310 | esbuild@0.24.2: 2311 | optionalDependencies: 2312 | '@esbuild/aix-ppc64': 0.24.2 2313 | '@esbuild/android-arm': 0.24.2 2314 | '@esbuild/android-arm64': 0.24.2 2315 | '@esbuild/android-x64': 0.24.2 2316 | '@esbuild/darwin-arm64': 0.24.2 2317 | '@esbuild/darwin-x64': 0.24.2 2318 | '@esbuild/freebsd-arm64': 0.24.2 2319 | '@esbuild/freebsd-x64': 0.24.2 2320 | '@esbuild/linux-arm': 0.24.2 2321 | '@esbuild/linux-arm64': 0.24.2 2322 | '@esbuild/linux-ia32': 0.24.2 2323 | '@esbuild/linux-loong64': 0.24.2 2324 | '@esbuild/linux-mips64el': 0.24.2 2325 | '@esbuild/linux-ppc64': 0.24.2 2326 | '@esbuild/linux-riscv64': 0.24.2 2327 | '@esbuild/linux-s390x': 0.24.2 2328 | '@esbuild/linux-x64': 0.24.2 2329 | '@esbuild/netbsd-arm64': 0.24.2 2330 | '@esbuild/netbsd-x64': 0.24.2 2331 | '@esbuild/openbsd-arm64': 0.24.2 2332 | '@esbuild/openbsd-x64': 0.24.2 2333 | '@esbuild/sunos-x64': 0.24.2 2334 | '@esbuild/win32-arm64': 0.24.2 2335 | '@esbuild/win32-ia32': 0.24.2 2336 | '@esbuild/win32-x64': 0.24.2 2337 | 2338 | escalade@3.2.0: {} 2339 | 2340 | escape-string-regexp@4.0.0: {} 2341 | 2342 | eslint-compat-utils@0.5.1(eslint@9.21.0(jiti@1.21.7)): 2343 | dependencies: 2344 | eslint: 9.21.0(jiti@1.21.7) 2345 | semver: 7.7.1 2346 | 2347 | eslint-config-prettier@8.10.0(eslint@9.21.0(jiti@1.21.7)): 2348 | dependencies: 2349 | eslint: 9.21.0(jiti@1.21.7) 2350 | 2351 | eslint-plugin-svelte@2.46.1(eslint@9.21.0(jiti@1.21.7))(svelte@5.20.2): 2352 | dependencies: 2353 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@1.21.7)) 2354 | '@jridgewell/sourcemap-codec': 1.5.0 2355 | eslint: 9.21.0(jiti@1.21.7) 2356 | eslint-compat-utils: 0.5.1(eslint@9.21.0(jiti@1.21.7)) 2357 | esutils: 2.0.3 2358 | known-css-properties: 0.35.0 2359 | postcss: 8.5.3 2360 | postcss-load-config: 3.1.4(postcss@8.5.3) 2361 | postcss-safe-parser: 6.0.0(postcss@8.5.3) 2362 | postcss-selector-parser: 6.1.2 2363 | semver: 7.7.1 2364 | svelte-eslint-parser: 0.43.0(svelte@5.20.2) 2365 | optionalDependencies: 2366 | svelte: 5.20.2 2367 | transitivePeerDependencies: 2368 | - ts-node 2369 | 2370 | eslint-scope@7.2.2: 2371 | dependencies: 2372 | esrecurse: 4.3.0 2373 | estraverse: 5.3.0 2374 | 2375 | eslint-scope@8.2.0: 2376 | dependencies: 2377 | esrecurse: 4.3.0 2378 | estraverse: 5.3.0 2379 | 2380 | eslint-visitor-keys@3.4.3: {} 2381 | 2382 | eslint-visitor-keys@4.2.0: {} 2383 | 2384 | eslint@9.21.0(jiti@1.21.7): 2385 | dependencies: 2386 | '@eslint-community/eslint-utils': 4.4.1(eslint@9.21.0(jiti@1.21.7)) 2387 | '@eslint-community/regexpp': 4.12.1 2388 | '@eslint/config-array': 0.19.2 2389 | '@eslint/core': 0.12.0 2390 | '@eslint/eslintrc': 3.3.0 2391 | '@eslint/js': 9.21.0 2392 | '@eslint/plugin-kit': 0.2.7 2393 | '@humanfs/node': 0.16.6 2394 | '@humanwhocodes/module-importer': 1.0.1 2395 | '@humanwhocodes/retry': 0.4.2 2396 | '@types/estree': 1.0.6 2397 | '@types/json-schema': 7.0.15 2398 | ajv: 6.12.6 2399 | chalk: 4.1.2 2400 | cross-spawn: 7.0.6 2401 | debug: 4.4.0 2402 | escape-string-regexp: 4.0.0 2403 | eslint-scope: 8.2.0 2404 | eslint-visitor-keys: 4.2.0 2405 | espree: 10.3.0 2406 | esquery: 1.5.0 2407 | esutils: 2.0.3 2408 | fast-deep-equal: 3.1.3 2409 | file-entry-cache: 8.0.0 2410 | find-up: 5.0.0 2411 | glob-parent: 6.0.2 2412 | ignore: 5.2.4 2413 | imurmurhash: 0.1.4 2414 | is-glob: 4.0.3 2415 | json-stable-stringify-without-jsonify: 1.0.1 2416 | lodash.merge: 4.6.2 2417 | minimatch: 3.1.2 2418 | natural-compare: 1.4.0 2419 | optionator: 0.9.4 2420 | optionalDependencies: 2421 | jiti: 1.21.7 2422 | transitivePeerDependencies: 2423 | - supports-color 2424 | 2425 | esm-env@1.2.2: {} 2426 | 2427 | espree@10.3.0: 2428 | dependencies: 2429 | acorn: 8.14.0 2430 | acorn-jsx: 5.3.2(acorn@8.14.0) 2431 | eslint-visitor-keys: 4.2.0 2432 | 2433 | espree@9.6.1: 2434 | dependencies: 2435 | acorn: 8.9.0 2436 | acorn-jsx: 5.3.2(acorn@8.9.0) 2437 | eslint-visitor-keys: 3.4.3 2438 | 2439 | esquery@1.5.0: 2440 | dependencies: 2441 | estraverse: 5.3.0 2442 | 2443 | esrap@1.4.5: 2444 | dependencies: 2445 | '@jridgewell/sourcemap-codec': 1.5.0 2446 | 2447 | esrecurse@4.3.0: 2448 | dependencies: 2449 | estraverse: 5.3.0 2450 | 2451 | estraverse@5.3.0: {} 2452 | 2453 | estree-walker@3.0.3: 2454 | dependencies: 2455 | '@types/estree': 1.0.6 2456 | 2457 | esutils@2.0.3: {} 2458 | 2459 | expect-type@1.1.0: {} 2460 | 2461 | fast-deep-equal@3.1.3: {} 2462 | 2463 | fast-glob@3.3.3: 2464 | dependencies: 2465 | '@nodelib/fs.stat': 2.0.5 2466 | '@nodelib/fs.walk': 1.2.8 2467 | glob-parent: 5.1.2 2468 | merge2: 1.4.1 2469 | micromatch: 4.0.8 2470 | 2471 | fast-json-stable-stringify@2.1.0: {} 2472 | 2473 | fast-levenshtein@2.0.6: {} 2474 | 2475 | fastq@1.15.0: 2476 | dependencies: 2477 | reusify: 1.0.4 2478 | 2479 | fdir@6.4.3: {} 2480 | 2481 | file-entry-cache@8.0.0: 2482 | dependencies: 2483 | flat-cache: 4.0.1 2484 | 2485 | fill-range@7.1.1: 2486 | dependencies: 2487 | to-regex-range: 5.0.1 2488 | 2489 | find-up@5.0.0: 2490 | dependencies: 2491 | locate-path: 6.0.0 2492 | path-exists: 4.0.0 2493 | 2494 | flat-cache@4.0.1: 2495 | dependencies: 2496 | flatted: 3.3.3 2497 | keyv: 4.5.4 2498 | 2499 | flatted@3.3.3: {} 2500 | 2501 | foreground-child@3.3.0: 2502 | dependencies: 2503 | cross-spawn: 7.0.3 2504 | signal-exit: 4.1.0 2505 | 2506 | fraction.js@4.3.7: {} 2507 | 2508 | fs.realpath@1.0.0: {} 2509 | 2510 | fsevents@2.3.2: 2511 | optional: true 2512 | 2513 | fsevents@2.3.3: 2514 | optional: true 2515 | 2516 | function-bind@1.1.2: {} 2517 | 2518 | glob-parent@5.1.2: 2519 | dependencies: 2520 | is-glob: 4.0.3 2521 | 2522 | glob-parent@6.0.2: 2523 | dependencies: 2524 | is-glob: 4.0.3 2525 | 2526 | glob@10.4.5: 2527 | dependencies: 2528 | foreground-child: 3.3.0 2529 | jackspeak: 3.4.3 2530 | minimatch: 9.0.5 2531 | minipass: 7.1.2 2532 | package-json-from-dist: 1.0.1 2533 | path-scurry: 1.11.1 2534 | 2535 | glob@8.1.0: 2536 | dependencies: 2537 | fs.realpath: 1.0.0 2538 | inflight: 1.0.6 2539 | inherits: 2.0.4 2540 | minimatch: 5.1.6 2541 | once: 1.4.0 2542 | 2543 | globals@14.0.0: {} 2544 | 2545 | globals@16.0.0: {} 2546 | 2547 | graphemer@1.4.0: {} 2548 | 2549 | has-flag@4.0.0: {} 2550 | 2551 | hasown@2.0.2: 2552 | dependencies: 2553 | function-bind: 1.1.2 2554 | 2555 | ignore-walk@5.0.1: 2556 | dependencies: 2557 | minimatch: 5.1.6 2558 | 2559 | ignore@5.2.4: {} 2560 | 2561 | ignore@5.3.2: {} 2562 | 2563 | import-fresh@3.3.0: 2564 | dependencies: 2565 | parent-module: 1.0.1 2566 | resolve-from: 4.0.0 2567 | 2568 | import-meta-resolve@4.1.0: {} 2569 | 2570 | imurmurhash@0.1.4: {} 2571 | 2572 | inflight@1.0.6: 2573 | dependencies: 2574 | once: 1.4.0 2575 | wrappy: 1.0.2 2576 | 2577 | inherits@2.0.4: {} 2578 | 2579 | is-binary-path@2.1.0: 2580 | dependencies: 2581 | binary-extensions: 2.2.0 2582 | 2583 | is-core-module@2.16.1: 2584 | dependencies: 2585 | hasown: 2.0.2 2586 | 2587 | is-extglob@2.1.1: {} 2588 | 2589 | is-fullwidth-code-point@3.0.0: {} 2590 | 2591 | is-glob@4.0.3: 2592 | dependencies: 2593 | is-extglob: 2.1.1 2594 | 2595 | is-number@7.0.0: {} 2596 | 2597 | is-reference@3.0.3: 2598 | dependencies: 2599 | '@types/estree': 1.0.6 2600 | 2601 | isexe@2.0.0: {} 2602 | 2603 | jackspeak@3.4.3: 2604 | dependencies: 2605 | '@isaacs/cliui': 8.0.2 2606 | optionalDependencies: 2607 | '@pkgjs/parseargs': 0.11.0 2608 | 2609 | jiti@1.21.7: {} 2610 | 2611 | js-yaml@4.1.0: 2612 | dependencies: 2613 | argparse: 2.0.1 2614 | 2615 | json-buffer@3.0.1: {} 2616 | 2617 | json-schema-traverse@0.4.1: {} 2618 | 2619 | json-stable-stringify-without-jsonify@1.0.1: {} 2620 | 2621 | keyv@4.5.4: 2622 | dependencies: 2623 | json-buffer: 3.0.1 2624 | 2625 | kleur@4.1.5: {} 2626 | 2627 | known-css-properties@0.35.0: {} 2628 | 2629 | levn@0.4.1: 2630 | dependencies: 2631 | prelude-ls: 1.2.1 2632 | type-check: 0.4.0 2633 | 2634 | lilconfig@2.1.0: {} 2635 | 2636 | lilconfig@3.1.3: {} 2637 | 2638 | lines-and-columns@1.2.4: {} 2639 | 2640 | locate-character@3.0.0: {} 2641 | 2642 | locate-path@6.0.0: 2643 | dependencies: 2644 | p-locate: 5.0.0 2645 | 2646 | lodash.merge@4.6.2: {} 2647 | 2648 | loupe@3.1.3: {} 2649 | 2650 | lower-case@2.0.2: 2651 | dependencies: 2652 | tslib: 2.8.1 2653 | 2654 | lru-cache@10.4.3: {} 2655 | 2656 | magic-string@0.30.11: 2657 | dependencies: 2658 | '@jridgewell/sourcemap-codec': 1.5.0 2659 | 2660 | magic-string@0.30.17: 2661 | dependencies: 2662 | '@jridgewell/sourcemap-codec': 1.5.0 2663 | 2664 | merge2@1.4.1: {} 2665 | 2666 | micromatch@4.0.8: 2667 | dependencies: 2668 | braces: 3.0.3 2669 | picomatch: 2.3.1 2670 | 2671 | minimatch@3.1.2: 2672 | dependencies: 2673 | brace-expansion: 1.1.11 2674 | 2675 | minimatch@5.1.6: 2676 | dependencies: 2677 | brace-expansion: 2.0.1 2678 | 2679 | minimatch@9.0.5: 2680 | dependencies: 2681 | brace-expansion: 2.0.1 2682 | 2683 | minipass@7.1.2: {} 2684 | 2685 | mri@1.2.0: {} 2686 | 2687 | mrmime@2.0.1: {} 2688 | 2689 | ms@2.1.3: {} 2690 | 2691 | mz@2.7.0: 2692 | dependencies: 2693 | any-promise: 1.3.0 2694 | object-assign: 4.1.1 2695 | thenify-all: 1.6.0 2696 | 2697 | nanoid@3.3.8: {} 2698 | 2699 | natural-compare@1.4.0: {} 2700 | 2701 | no-case@3.0.4: 2702 | dependencies: 2703 | lower-case: 2.0.2 2704 | tslib: 2.8.1 2705 | 2706 | node-releases@2.0.19: {} 2707 | 2708 | normalize-path@3.0.0: {} 2709 | 2710 | normalize-range@0.1.2: {} 2711 | 2712 | npm-bundled@2.0.1: 2713 | dependencies: 2714 | npm-normalize-package-bin: 2.0.0 2715 | 2716 | npm-normalize-package-bin@2.0.0: {} 2717 | 2718 | npm-packlist@5.1.3: 2719 | dependencies: 2720 | glob: 8.1.0 2721 | ignore-walk: 5.0.1 2722 | npm-bundled: 2.0.1 2723 | npm-normalize-package-bin: 2.0.0 2724 | 2725 | object-assign@4.1.1: {} 2726 | 2727 | object-hash@3.0.0: {} 2728 | 2729 | once@1.4.0: 2730 | dependencies: 2731 | wrappy: 1.0.2 2732 | 2733 | optionator@0.9.4: 2734 | dependencies: 2735 | deep-is: 0.1.4 2736 | fast-levenshtein: 2.0.6 2737 | levn: 0.4.1 2738 | prelude-ls: 1.2.1 2739 | type-check: 0.4.0 2740 | word-wrap: 1.2.5 2741 | 2742 | p-limit@3.1.0: 2743 | dependencies: 2744 | yocto-queue: 0.1.0 2745 | 2746 | p-locate@5.0.0: 2747 | dependencies: 2748 | p-limit: 3.1.0 2749 | 2750 | package-json-from-dist@1.0.1: {} 2751 | 2752 | parent-module@1.0.1: 2753 | dependencies: 2754 | callsites: 3.1.0 2755 | 2756 | pascal-case@3.1.2: 2757 | dependencies: 2758 | no-case: 3.0.4 2759 | tslib: 2.8.1 2760 | 2761 | path-exists@4.0.0: {} 2762 | 2763 | path-key@3.1.1: {} 2764 | 2765 | path-parse@1.0.7: {} 2766 | 2767 | path-scurry@1.11.1: 2768 | dependencies: 2769 | lru-cache: 10.4.3 2770 | minipass: 7.1.2 2771 | 2772 | pathe@2.0.3: {} 2773 | 2774 | pathval@2.0.0: {} 2775 | 2776 | picocolors@1.1.1: {} 2777 | 2778 | picomatch@2.3.1: {} 2779 | 2780 | pify@2.3.0: {} 2781 | 2782 | pirates@4.0.6: {} 2783 | 2784 | playwright-core@1.50.1: {} 2785 | 2786 | playwright@1.50.1: 2787 | dependencies: 2788 | playwright-core: 1.50.1 2789 | optionalDependencies: 2790 | fsevents: 2.3.2 2791 | 2792 | postcss-import@15.1.0(postcss@8.5.3): 2793 | dependencies: 2794 | postcss: 8.5.3 2795 | postcss-value-parser: 4.2.0 2796 | read-cache: 1.0.0 2797 | resolve: 1.22.10 2798 | 2799 | postcss-js@4.0.1(postcss@8.5.3): 2800 | dependencies: 2801 | camelcase-css: 2.0.1 2802 | postcss: 8.5.3 2803 | 2804 | postcss-load-config@3.1.4(postcss@8.5.3): 2805 | dependencies: 2806 | lilconfig: 2.1.0 2807 | yaml: 1.10.2 2808 | optionalDependencies: 2809 | postcss: 8.5.3 2810 | 2811 | postcss-load-config@4.0.2(postcss@8.5.3): 2812 | dependencies: 2813 | lilconfig: 3.1.3 2814 | yaml: 2.7.0 2815 | optionalDependencies: 2816 | postcss: 8.5.3 2817 | 2818 | postcss-nested@6.2.0(postcss@8.5.3): 2819 | dependencies: 2820 | postcss: 8.5.3 2821 | postcss-selector-parser: 6.1.2 2822 | 2823 | postcss-safe-parser@6.0.0(postcss@8.5.3): 2824 | dependencies: 2825 | postcss: 8.5.3 2826 | 2827 | postcss-scss@4.0.9(postcss@8.5.3): 2828 | dependencies: 2829 | postcss: 8.5.3 2830 | 2831 | postcss-selector-parser@6.1.2: 2832 | dependencies: 2833 | cssesc: 3.0.0 2834 | util-deprecate: 1.0.2 2835 | 2836 | postcss-value-parser@4.2.0: {} 2837 | 2838 | postcss@8.5.3: 2839 | dependencies: 2840 | nanoid: 3.3.8 2841 | picocolors: 1.1.1 2842 | source-map-js: 1.2.1 2843 | 2844 | prelude-ls@1.2.1: {} 2845 | 2846 | prettier-plugin-svelte@3.3.3(prettier@3.5.2)(svelte@5.20.2): 2847 | dependencies: 2848 | prettier: 3.5.2 2849 | svelte: 5.20.2 2850 | 2851 | prettier@3.5.2: {} 2852 | 2853 | prism-svelte@0.5.0: {} 2854 | 2855 | prismjs@1.29.0: {} 2856 | 2857 | publint@0.1.16: 2858 | dependencies: 2859 | npm-packlist: 5.1.3 2860 | picocolors: 1.1.1 2861 | sade: 1.8.1 2862 | 2863 | punycode@2.3.0: {} 2864 | 2865 | queue-microtask@1.2.3: {} 2866 | 2867 | read-cache@1.0.0: 2868 | dependencies: 2869 | pify: 2.3.0 2870 | 2871 | readdirp@3.6.0: 2872 | dependencies: 2873 | picomatch: 2.3.1 2874 | 2875 | readdirp@4.1.2: {} 2876 | 2877 | resolve-from@4.0.0: {} 2878 | 2879 | resolve@1.22.10: 2880 | dependencies: 2881 | is-core-module: 2.16.1 2882 | path-parse: 1.0.7 2883 | supports-preserve-symlinks-flag: 1.0.0 2884 | 2885 | reusify@1.0.4: {} 2886 | 2887 | rollup@4.34.8: 2888 | dependencies: 2889 | '@types/estree': 1.0.6 2890 | optionalDependencies: 2891 | '@rollup/rollup-android-arm-eabi': 4.34.8 2892 | '@rollup/rollup-android-arm64': 4.34.8 2893 | '@rollup/rollup-darwin-arm64': 4.34.8 2894 | '@rollup/rollup-darwin-x64': 4.34.8 2895 | '@rollup/rollup-freebsd-arm64': 4.34.8 2896 | '@rollup/rollup-freebsd-x64': 4.34.8 2897 | '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 2898 | '@rollup/rollup-linux-arm-musleabihf': 4.34.8 2899 | '@rollup/rollup-linux-arm64-gnu': 4.34.8 2900 | '@rollup/rollup-linux-arm64-musl': 4.34.8 2901 | '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 2902 | '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 2903 | '@rollup/rollup-linux-riscv64-gnu': 4.34.8 2904 | '@rollup/rollup-linux-s390x-gnu': 4.34.8 2905 | '@rollup/rollup-linux-x64-gnu': 4.34.8 2906 | '@rollup/rollup-linux-x64-musl': 4.34.8 2907 | '@rollup/rollup-win32-arm64-msvc': 4.34.8 2908 | '@rollup/rollup-win32-ia32-msvc': 4.34.8 2909 | '@rollup/rollup-win32-x64-msvc': 4.34.8 2910 | fsevents: 2.3.3 2911 | 2912 | run-parallel@1.2.0: 2913 | dependencies: 2914 | queue-microtask: 1.2.3 2915 | 2916 | sade@1.8.1: 2917 | dependencies: 2918 | mri: 1.2.0 2919 | 2920 | semver@7.7.1: {} 2921 | 2922 | set-cookie-parser@2.6.0: {} 2923 | 2924 | shebang-command@2.0.0: 2925 | dependencies: 2926 | shebang-regex: 3.0.0 2927 | 2928 | shebang-regex@3.0.0: {} 2929 | 2930 | siginfo@2.0.0: {} 2931 | 2932 | signal-exit@4.1.0: {} 2933 | 2934 | sirv@3.0.1: 2935 | dependencies: 2936 | '@polka/url': 1.0.0-next.28 2937 | mrmime: 2.0.1 2938 | totalist: 3.0.0 2939 | 2940 | source-map-js@1.2.1: {} 2941 | 2942 | stackback@0.0.2: {} 2943 | 2944 | std-env@3.8.0: {} 2945 | 2946 | string-width@4.2.3: 2947 | dependencies: 2948 | emoji-regex: 8.0.0 2949 | is-fullwidth-code-point: 3.0.0 2950 | strip-ansi: 6.0.1 2951 | 2952 | string-width@5.1.2: 2953 | dependencies: 2954 | eastasianwidth: 0.2.0 2955 | emoji-regex: 9.2.2 2956 | strip-ansi: 7.1.0 2957 | 2958 | strip-ansi@6.0.1: 2959 | dependencies: 2960 | ansi-regex: 5.0.1 2961 | 2962 | strip-ansi@7.1.0: 2963 | dependencies: 2964 | ansi-regex: 6.1.0 2965 | 2966 | strip-json-comments@3.1.1: {} 2967 | 2968 | sucrase@3.35.0: 2969 | dependencies: 2970 | '@jridgewell/gen-mapping': 0.3.8 2971 | commander: 4.1.1 2972 | glob: 10.4.5 2973 | lines-and-columns: 1.2.4 2974 | mz: 2.7.0 2975 | pirates: 4.0.6 2976 | ts-interface-checker: 0.1.13 2977 | 2978 | supports-color@7.2.0: 2979 | dependencies: 2980 | has-flag: 4.0.0 2981 | 2982 | supports-preserve-symlinks-flag@1.0.0: {} 2983 | 2984 | svelte-check@4.1.4(svelte@5.20.2)(typescript@5.7.3): 2985 | dependencies: 2986 | '@jridgewell/trace-mapping': 0.3.25 2987 | chokidar: 4.0.3 2988 | fdir: 6.4.3 2989 | picocolors: 1.1.1 2990 | sade: 1.8.1 2991 | svelte: 5.20.2 2992 | typescript: 5.7.3 2993 | transitivePeerDependencies: 2994 | - picomatch 2995 | 2996 | svelte-eslint-parser@0.43.0(svelte@5.20.2): 2997 | dependencies: 2998 | eslint-scope: 7.2.2 2999 | eslint-visitor-keys: 3.4.3 3000 | espree: 9.6.1 3001 | postcss: 8.5.3 3002 | postcss-scss: 4.0.9(postcss@8.5.3) 3003 | optionalDependencies: 3004 | svelte: 5.20.2 3005 | 3006 | svelte-writable-derived@3.1.1(svelte@5.20.2): 3007 | dependencies: 3008 | svelte: 5.20.2 3009 | 3010 | svelte2tsx@0.7.34(svelte@5.20.2)(typescript@5.7.3): 3011 | dependencies: 3012 | dedent-js: 1.0.1 3013 | pascal-case: 3.1.2 3014 | svelte: 5.20.2 3015 | typescript: 5.7.3 3016 | 3017 | svelte@5.20.2: 3018 | dependencies: 3019 | '@ampproject/remapping': 2.3.0 3020 | '@jridgewell/sourcemap-codec': 1.5.0 3021 | '@types/estree': 1.0.6 3022 | acorn: 8.14.0 3023 | acorn-typescript: 1.4.13(acorn@8.14.0) 3024 | aria-query: 5.3.2 3025 | axobject-query: 4.1.0 3026 | clsx: 2.1.1 3027 | esm-env: 1.2.2 3028 | esrap: 1.4.5 3029 | is-reference: 3.0.3 3030 | locate-character: 3.0.0 3031 | magic-string: 0.30.11 3032 | zimmerframe: 1.1.2 3033 | 3034 | tailwindcss@3.4.17: 3035 | dependencies: 3036 | '@alloc/quick-lru': 5.2.0 3037 | arg: 5.0.2 3038 | chokidar: 3.6.0 3039 | didyoumean: 1.2.2 3040 | dlv: 1.1.3 3041 | fast-glob: 3.3.3 3042 | glob-parent: 6.0.2 3043 | is-glob: 4.0.3 3044 | jiti: 1.21.7 3045 | lilconfig: 3.1.3 3046 | micromatch: 4.0.8 3047 | normalize-path: 3.0.0 3048 | object-hash: 3.0.0 3049 | picocolors: 1.1.1 3050 | postcss: 8.5.3 3051 | postcss-import: 15.1.0(postcss@8.5.3) 3052 | postcss-js: 4.0.1(postcss@8.5.3) 3053 | postcss-load-config: 4.0.2(postcss@8.5.3) 3054 | postcss-nested: 6.2.0(postcss@8.5.3) 3055 | postcss-selector-parser: 6.1.2 3056 | resolve: 1.22.10 3057 | sucrase: 3.35.0 3058 | transitivePeerDependencies: 3059 | - ts-node 3060 | 3061 | thenify-all@1.6.0: 3062 | dependencies: 3063 | thenify: 3.3.1 3064 | 3065 | thenify@3.3.1: 3066 | dependencies: 3067 | any-promise: 1.3.0 3068 | 3069 | tinybench@2.9.0: {} 3070 | 3071 | tinyexec@0.3.2: {} 3072 | 3073 | tinypool@1.0.2: {} 3074 | 3075 | tinyrainbow@2.0.0: {} 3076 | 3077 | tinyspy@3.0.2: {} 3078 | 3079 | to-regex-range@5.0.1: 3080 | dependencies: 3081 | is-number: 7.0.0 3082 | 3083 | totalist@3.0.0: {} 3084 | 3085 | ts-api-utils@2.0.1(typescript@5.7.3): 3086 | dependencies: 3087 | typescript: 5.7.3 3088 | 3089 | ts-interface-checker@0.1.13: {} 3090 | 3091 | tslib@2.8.1: {} 3092 | 3093 | type-check@0.4.0: 3094 | dependencies: 3095 | prelude-ls: 1.2.1 3096 | 3097 | typescript-eslint@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3): 3098 | dependencies: 3099 | '@typescript-eslint/eslint-plugin': 8.24.1(@typescript-eslint/parser@8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3))(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 3100 | '@typescript-eslint/parser': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 3101 | '@typescript-eslint/utils': 8.24.1(eslint@9.21.0(jiti@1.21.7))(typescript@5.7.3) 3102 | eslint: 9.21.0(jiti@1.21.7) 3103 | typescript: 5.7.3 3104 | transitivePeerDependencies: 3105 | - supports-color 3106 | 3107 | typescript@5.7.3: {} 3108 | 3109 | update-browserslist-db@1.1.2(browserslist@4.24.4): 3110 | dependencies: 3111 | browserslist: 4.24.4 3112 | escalade: 3.2.0 3113 | picocolors: 1.1.1 3114 | 3115 | uri-js@4.4.1: 3116 | dependencies: 3117 | punycode: 2.3.0 3118 | 3119 | util-deprecate@1.0.2: {} 3120 | 3121 | vite-node@3.0.6(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0): 3122 | dependencies: 3123 | cac: 6.7.14 3124 | debug: 4.4.0 3125 | es-module-lexer: 1.6.0 3126 | pathe: 2.0.3 3127 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 3128 | transitivePeerDependencies: 3129 | - '@types/node' 3130 | - jiti 3131 | - less 3132 | - lightningcss 3133 | - sass 3134 | - sass-embedded 3135 | - stylus 3136 | - sugarss 3137 | - supports-color 3138 | - terser 3139 | - tsx 3140 | - yaml 3141 | 3142 | vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0): 3143 | dependencies: 3144 | esbuild: 0.24.2 3145 | postcss: 8.5.3 3146 | rollup: 4.34.8 3147 | optionalDependencies: 3148 | '@types/node': 18.15.3 3149 | fsevents: 2.3.3 3150 | jiti: 1.21.7 3151 | yaml: 2.7.0 3152 | 3153 | vitefu@1.0.5(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)): 3154 | optionalDependencies: 3155 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 3156 | 3157 | vitest@3.0.6(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0): 3158 | dependencies: 3159 | '@vitest/expect': 3.0.6 3160 | '@vitest/mocker': 3.0.6(vite@6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0)) 3161 | '@vitest/pretty-format': 3.0.6 3162 | '@vitest/runner': 3.0.6 3163 | '@vitest/snapshot': 3.0.6 3164 | '@vitest/spy': 3.0.6 3165 | '@vitest/utils': 3.0.6 3166 | chai: 5.2.0 3167 | debug: 4.4.0 3168 | expect-type: 1.1.0 3169 | magic-string: 0.30.17 3170 | pathe: 2.0.3 3171 | std-env: 3.8.0 3172 | tinybench: 2.9.0 3173 | tinyexec: 0.3.2 3174 | tinypool: 1.0.2 3175 | tinyrainbow: 2.0.0 3176 | vite: 6.1.1(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 3177 | vite-node: 3.0.6(@types/node@18.15.3)(jiti@1.21.7)(yaml@2.7.0) 3178 | why-is-node-running: 2.3.0 3179 | optionalDependencies: 3180 | '@types/node': 18.15.3 3181 | transitivePeerDependencies: 3182 | - jiti 3183 | - less 3184 | - lightningcss 3185 | - msw 3186 | - sass 3187 | - sass-embedded 3188 | - stylus 3189 | - sugarss 3190 | - supports-color 3191 | - terser 3192 | - tsx 3193 | - yaml 3194 | 3195 | which@2.0.2: 3196 | dependencies: 3197 | isexe: 2.0.0 3198 | 3199 | why-is-node-running@2.3.0: 3200 | dependencies: 3201 | siginfo: 2.0.0 3202 | stackback: 0.0.2 3203 | 3204 | word-wrap@1.2.5: {} 3205 | 3206 | wrap-ansi@7.0.0: 3207 | dependencies: 3208 | ansi-styles: 4.3.0 3209 | string-width: 4.2.3 3210 | strip-ansi: 6.0.1 3211 | 3212 | wrap-ansi@8.1.0: 3213 | dependencies: 3214 | ansi-styles: 6.2.1 3215 | string-width: 5.1.2 3216 | strip-ansi: 7.1.0 3217 | 3218 | wrappy@1.0.2: {} 3219 | 3220 | yaml@1.10.2: {} 3221 | 3222 | yaml@2.7.0: {} 3223 | 3224 | yocto-queue@0.1.0: {} 3225 | 3226 | zimmerframe@1.1.2: {} 3227 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | @font-face { 7 | font-family: 'HK Grotesk'; 8 | src: 9 | url('/fonts/HKGrotesk-Bold.woff2') format('woff2'), 10 | url('/fonts/HKGrotesk-Bold.woff') format('woff'); 11 | font-weight: bold; 12 | font-style: normal; 13 | font-display: swap; 14 | } 15 | 16 | @font-face { 17 | font-family: 'HK Grotesk'; 18 | src: 19 | url('/fonts/HKGrotesk-BoldItalic.woff2') format('woff2'), 20 | url('/fonts/HKGrotesk-BoldItalic.woff') format('woff'); 21 | font-weight: bold; 22 | font-style: italic; 23 | font-display: swap; 24 | } 25 | 26 | @font-face { 27 | font-family: 'HK Grotesk'; 28 | src: 29 | url('/fonts/HKGrotesk-Black.woff2') format('woff2'), 30 | url('/fonts/HKGrotesk-Black.woff') format('woff'); 31 | font-weight: 900; 32 | font-style: normal; 33 | font-display: swap; 34 | } 35 | 36 | @font-face { 37 | font-family: 'HK Grotesk'; 38 | src: 39 | url('/fonts/HKGrotesk-BlackItalic.woff2') format('woff2'), 40 | url('/fonts/HKGrotesk-BlackItalic.woff') format('woff'); 41 | font-weight: 900; 42 | font-style: italic; 43 | font-display: swap; 44 | } 45 | 46 | @font-face { 47 | font-family: 'HK Grotesk'; 48 | src: 49 | url('/fonts/HKGrotesk-ExtraBold.woff2') format('woff2'), 50 | url('/fonts/HKGrotesk-ExtraBold.woff') format('woff'); 51 | font-weight: 800; 52 | font-style: normal; 53 | font-display: swap; 54 | } 55 | 56 | @font-face { 57 | font-family: 'HK Grotesk'; 58 | src: 59 | url('/fonts/HKGrotesk-ExtraBoldItalic.woff2') format('woff2'), 60 | url('/fonts/HKGrotesk-ExtraBoldItalic.woff') format('woff'); 61 | font-weight: 800; 62 | font-style: italic; 63 | font-display: swap; 64 | } 65 | 66 | @font-face { 67 | font-family: 'HK Grotesk'; 68 | src: 69 | url('/fonts/HKGrotesk-SemiBold.woff2') format('woff2'), 70 | url('/fonts/HKGrotesk-SemiBold.woff') format('woff'); 71 | font-weight: 600; 72 | font-style: normal; 73 | font-display: swap; 74 | } 75 | 76 | @font-face { 77 | font-family: 'HK Grotesk'; 78 | src: 79 | url('/fonts/HKGrotesk-SemiBoldItalic.woff2') format('woff2'), 80 | url('/fonts/HKGrotesk-SemiBoldItalic.woff') format('woff'); 81 | font-weight: 600; 82 | font-style: italic; 83 | font-display: swap; 84 | } 85 | 86 | @font-face { 87 | font-family: 'HK Grotesk'; 88 | src: 89 | url('/fonts/HKGrotesk-Regular.woff2') format('woff2'), 90 | url('/fonts/HKGrotesk-Regular.woff') format('woff'); 91 | font-weight: normal; 92 | font-style: normal; 93 | font-display: swap; 94 | } 95 | 96 | @font-face { 97 | font-family: 'HK Grotesk'; 98 | src: 99 | url('/fonts/HKGrotesk-Italic.woff2') format('woff2'), 100 | url('/fonts/HKGrotesk-Italic.woff') format('woff'); 101 | font-weight: normal; 102 | font-style: italic; 103 | font-display: swap; 104 | } 105 | 106 | @font-face { 107 | font-family: 'HK Grotesk'; 108 | src: 109 | url('/fonts/HKGrotesk-Medium.woff2') format('woff2'), 110 | url('/fonts/HKGrotesk-Medium.woff') format('woff'); 111 | font-weight: 500; 112 | font-style: normal; 113 | font-display: swap; 114 | } 115 | 116 | @font-face { 117 | font-family: 'HK Grotesk'; 118 | src: 119 | url('/fonts/HKGrotesk-MediumItalic.woff2') format('woff2'), 120 | url('/fonts/HKGrotesk-MediumItalic.woff') format('woff'); 121 | font-weight: 500; 122 | font-style: italic; 123 | font-display: swap; 124 | } 125 | } 126 | 127 | @layer components { 128 | .container { 129 | @apply px-3; 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | declare module 'prism-svelte'; 13 | 14 | export {}; 15 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sveltekit.head% 9 | 10 | 11 |
%sveltekit.body%
12 | 13 | 14 | -------------------------------------------------------------------------------- /src/index.test.ts: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/components/CheckmarkIcon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 |
14 | 15 | 72 | -------------------------------------------------------------------------------- /src/lib/components/ErrorIcon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 |
14 | 15 | 82 | -------------------------------------------------------------------------------- /src/lib/components/LoaderIcon.svelte: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 |
14 | 15 | 36 | -------------------------------------------------------------------------------- /src/lib/components/ToastBar.svelte: -------------------------------------------------------------------------------- 1 | 35 | 36 |
41 | {#if Component} 42 | 43 | {#snippet icon()} 44 | 45 | {/snippet} 46 | {#snippet message()} 47 | 48 | {/snippet} 49 | 50 | {:else if children}{@render children({ ToastIcon, ToastMessage, toast })}{:else} 51 | 52 | 53 | {/if} 54 |
55 | 56 | 133 | -------------------------------------------------------------------------------- /src/lib/components/ToastIcon.svelte: -------------------------------------------------------------------------------- 1 | 14 | 15 | {#if typeof icon === 'string'} 16 |
{icon}
17 | {:else if typeof icon !== 'undefined'} 18 | {@const IconComponent = icon} 19 | 20 | {:else if type !== 'blank'} 21 |
22 | 23 | {#if type !== 'loading'} 24 |
25 | {#if type === 'error'} 26 | 27 | {:else} 28 | 29 | {/if} 30 |
31 | {/if} 32 |
33 | {/if} 34 | 35 | 68 | -------------------------------------------------------------------------------- /src/lib/components/ToastMessage.svelte: -------------------------------------------------------------------------------- 1 | 10 | 11 |
12 | {#if typeof toast.message === 'string'} 13 | {toast.message} 14 | {:else} 15 | {@const Message = toast.message} 16 | 17 | {/if} 18 |
19 | 20 | 30 | -------------------------------------------------------------------------------- /src/lib/components/ToastWrapper.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 |
45 | {#if toast.type === 'custom'} 46 | 47 | {:else if children}{@render children({ toast })}{:else} 48 | 49 | {/if} 50 |
51 | 52 | 73 | -------------------------------------------------------------------------------- /src/lib/components/Toaster.svelte: -------------------------------------------------------------------------------- 1 | 38 | 39 | 50 | 51 | 64 | -------------------------------------------------------------------------------- /src/lib/core/store.ts: -------------------------------------------------------------------------------- 1 | import { get, writable, type Writable } from 'svelte/store'; 2 | import type { DefaultToastOptions, Toast, ToastType } from './types'; 3 | import writableDerived from 'svelte-writable-derived'; 4 | 5 | const TOAST_LIMIT = 20; 6 | 7 | interface State { 8 | toasts: Writable; 9 | pausedAt: Writable; 10 | } 11 | 12 | export const toasts: State['toasts'] = writable([]); 13 | export const pausedAt: State['pausedAt'] = writable(null); 14 | 15 | const toastTimeouts = new Map>(); 16 | 17 | const addToRemoveQueue = (toastId: string) => { 18 | if (toastTimeouts.has(toastId)) { 19 | return; 20 | } 21 | 22 | const timeout = setTimeout(() => { 23 | toastTimeouts.delete(toastId); 24 | remove(toastId); 25 | }, 1000); 26 | 27 | toastTimeouts.set(toastId, timeout); 28 | }; 29 | 30 | const clearFromRemoveQueue = (toastId: string) => { 31 | const timeout = toastTimeouts.get(toastId); 32 | if (timeout) { 33 | clearTimeout(timeout); 34 | } 35 | }; 36 | 37 | export function update(toast: Partial, clearTimeout = true) { 38 | if (clearTimeout && toast.id) { 39 | clearFromRemoveQueue(toast.id); 40 | } 41 | toasts.update(($toasts) => $toasts.map((t) => (t.id === toast.id ? { ...t, ...toast } : t))); 42 | } 43 | 44 | export function add(toast: Toast) { 45 | toasts.update(($toasts) => [toast, ...$toasts].slice(0, TOAST_LIMIT)); 46 | } 47 | 48 | export function upsert(toast: Toast) { 49 | if (get(toasts).find((t) => t.id === toast.id)) { 50 | update(toast); 51 | } else { 52 | add(toast); 53 | } 54 | } 55 | 56 | export function dismiss(toastId?: Toast['id']) { 57 | toasts.update(($toasts) => { 58 | if (toastId) { 59 | addToRemoveQueue(toastId); 60 | } else { 61 | $toasts.forEach((toast) => { 62 | addToRemoveQueue(toast.id); 63 | }); 64 | } 65 | 66 | return $toasts.map((t) => 67 | t.id === toastId || toastId === undefined ? { ...t, visible: false } : t 68 | ); 69 | }); 70 | } 71 | 72 | export function remove(toastId?: Toast['id']) { 73 | toasts.update(($toasts) => { 74 | if (toastId === undefined) { 75 | return []; 76 | } 77 | return $toasts.filter((t) => t.id !== toastId); 78 | }); 79 | } 80 | 81 | export function startPause(time: number) { 82 | pausedAt.set(time); 83 | } 84 | 85 | export function endPause(time: number) { 86 | let diff: number; 87 | 88 | pausedAt.update(($pausedAt) => { 89 | diff = time - ($pausedAt || 0); 90 | return null; 91 | }); 92 | 93 | toasts.update(($toasts) => 94 | $toasts.map((t) => ({ 95 | ...t, 96 | pauseDuration: t.pauseDuration + diff 97 | })) 98 | ); 99 | } 100 | 101 | const defaultTimeouts: { 102 | [key in ToastType]: number; 103 | } = { 104 | blank: 4000, 105 | error: 4000, 106 | success: 2000, 107 | loading: Infinity, 108 | custom: 4000 109 | }; 110 | 111 | export function useToasterStore(toastOptions: DefaultToastOptions = {}): State { 112 | const mergedToasts = writableDerived( 113 | toasts, 114 | ($toasts) => 115 | $toasts.map((t) => ({ 116 | ...toastOptions, 117 | ...toastOptions[t.type], 118 | ...t, 119 | duration: 120 | t.duration || 121 | toastOptions[t.type]?.duration || 122 | toastOptions?.duration || 123 | defaultTimeouts[t.type], 124 | style: [toastOptions.style, toastOptions[t.type]?.style, t.style].join(';') 125 | })), 126 | ($toasts) => $toasts 127 | ); 128 | return { 129 | toasts: mergedToasts, 130 | pausedAt 131 | }; 132 | } 133 | -------------------------------------------------------------------------------- /src/lib/core/toast.ts: -------------------------------------------------------------------------------- 1 | import { dismiss, remove, upsert } from './store'; 2 | import { 3 | type Toast, 4 | type Renderable, 5 | type DefaultToastOptions, 6 | type ToastOptions, 7 | type ToastType, 8 | type ValueOrFunction, 9 | resolveValue 10 | } from './types'; 11 | import { genId } from './utils'; 12 | 13 | type Message = Record> = Renderable; 14 | 15 | type ToastHandler = = Record>( 16 | message: Message, 17 | options?: ToastOptions 18 | ) => string; 19 | 20 | const createToast = = Record>( 21 | message: Message, 22 | type: ToastType = 'blank', 23 | opts?: ToastOptions 24 | ): Toast => ({ 25 | createdAt: Date.now(), 26 | visible: true, 27 | type, 28 | ariaProps: { 29 | role: 'status', 30 | 'aria-live': 'polite' 31 | }, 32 | message, 33 | pauseDuration: 0, 34 | icon: opts?.icon, 35 | duration: opts?.duration, 36 | iconTheme: opts?.iconTheme, 37 | position: opts?.position, 38 | props: opts?.props, 39 | id: opts?.id || genId() 40 | }); 41 | 42 | const createHandler = 43 | (type?: ToastType): ToastHandler => 44 | (message, options) => { 45 | const toast = createToast(message, type, options); 46 | upsert(toast); 47 | return toast.id; 48 | }; 49 | 50 | const toast = = Record>( 51 | message: Message, 52 | opts?: ToastOptions 53 | ) => createHandler('blank')(message, opts); 54 | 55 | toast.error = createHandler('error'); 56 | toast.success = createHandler('success'); 57 | toast.loading = createHandler('loading'); 58 | toast.custom = createHandler('custom'); 59 | 60 | toast.dismiss = (toastId?: string) => { 61 | dismiss(toastId); 62 | }; 63 | 64 | toast.remove = (toastId?: string) => remove(toastId); 65 | 66 | toast.promise = ( 67 | promise: Promise, 68 | msgs: { 69 | loading: Renderable; 70 | success: ValueOrFunction; 71 | // eslint-disable-next-line @typescript-eslint/no-explicit-any 72 | error: ValueOrFunction; 73 | }, 74 | opts?: DefaultToastOptions 75 | ) => { 76 | const id = toast.loading(msgs.loading, { ...opts, ...opts?.loading }); 77 | 78 | promise 79 | .then((p) => { 80 | toast.success(resolveValue(msgs.success, p), { 81 | id, 82 | ...opts, 83 | ...opts?.success 84 | }); 85 | return p; 86 | }) 87 | .catch((e) => { 88 | toast.error(resolveValue(msgs.error, e), { 89 | id, 90 | ...opts, 91 | ...opts?.error 92 | }); 93 | }); 94 | 95 | return promise; 96 | }; 97 | 98 | export default toast; 99 | -------------------------------------------------------------------------------- /src/lib/core/types.ts: -------------------------------------------------------------------------------- 1 | import type { SvelteComponent } from 'svelte'; 2 | 3 | export type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom'; 4 | /** Specifies the toast's position on the screen 5 | * 6 | * Logical positions (`start`, `end`) are recommended over absolute positions 7 | * (`left`, `right`), as they automatically adjust based on the text direction 8 | * of the locale (LTR or RTL). Examples: 9 | * - Use `top-start` instead of `top-left`. 10 | * - Use `top-end` instead of `top-right`. */ 11 | export type ToastPosition = 12 | | 'top-left' 13 | | 'top-center' 14 | | 'top-right' 15 | | 'bottom-left' 16 | | 'bottom-center' 17 | | 'bottom-right' 18 | | 'top-start' 19 | | 'top-end' 20 | | 'bottom-start' 21 | | 'bottom-end'; 22 | 23 | export type Renderable = Record> = 24 | | typeof SvelteComponent 25 | | string 26 | | null; 27 | 28 | export interface IconTheme { 29 | primary: string; 30 | secondary: string; 31 | } 32 | 33 | export type ValueFunction = (arg: TArg) => TValue; 34 | export type ValueOrFunction = TValue | ValueFunction; 35 | 36 | const isFunction = ( 37 | valOrFunction: ValueOrFunction 38 | ): valOrFunction is ValueFunction => typeof valOrFunction === 'function'; 39 | 40 | export const resolveValue = ( 41 | valOrFunction: ValueOrFunction, 42 | arg: TArg 43 | ): TValue => (isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction); 44 | 45 | export interface Toast = Record> { 46 | type: ToastType; 47 | id: string; 48 | message: Renderable; 49 | icon?: Renderable; 50 | duration?: number; 51 | pauseDuration: number; 52 | position?: ToastPosition; 53 | 54 | // We use `Omit` here in the case that the Component has `export let toast: Toast`. 55 | // We are already passing the toast to the component, and it should not be included in props. 56 | props?: Omit; 57 | 58 | ariaProps: { 59 | role: 'status' | 'alert'; 60 | 'aria-live': 'assertive' | 'off' | 'polite'; 61 | }; 62 | 63 | style?: string; 64 | className?: string; 65 | iconTheme?: IconTheme; 66 | 67 | createdAt: number; 68 | visible: boolean; 69 | height?: number; 70 | } 71 | 72 | export type DOMToast = Record> = Toast & { 73 | offset: number; 74 | }; 75 | 76 | export type ToastOptions = Record> = Partial< 77 | Pick< 78 | Toast, 79 | | 'id' 80 | | 'icon' 81 | | 'duration' 82 | | 'ariaProps' 83 | | 'className' 84 | | 'style' 85 | | 'position' 86 | | 'iconTheme' 87 | | 'props' 88 | > 89 | >; 90 | 91 | export type DefaultToastOptions = ToastOptions & { 92 | [key in ToastType]?: ToastOptions; 93 | }; 94 | 95 | export interface ToasterProps { 96 | position?: ToastPosition; 97 | toastOptions?: DefaultToastOptions; 98 | reverseOrder?: boolean; 99 | gutter?: number; 100 | containerStyle?: string; 101 | containerClassName?: string; 102 | } 103 | -------------------------------------------------------------------------------- /src/lib/core/use-toaster.ts: -------------------------------------------------------------------------------- 1 | import toast from './toast'; 2 | import { endPause as _endPause, startPause as _startPause, update, useToasterStore } from './store'; 3 | import type { Toast, ToastOptions, ToastPosition } from './types'; 4 | import { onDestroy } from 'svelte'; 5 | 6 | function calculateOffset( 7 | toast: Toast, 8 | $toasts: Toast[], 9 | opts?: { 10 | reverseOrder?: boolean; 11 | gutter?: number; 12 | defaultPosition?: ToastPosition; 13 | } 14 | ) { 15 | const { reverseOrder, gutter = 8, defaultPosition } = opts || {}; 16 | 17 | const relevantToasts = $toasts.filter( 18 | (t) => (t.position || defaultPosition) === (toast.position || defaultPosition) && t.height 19 | ); 20 | const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id); 21 | const toastsBefore = relevantToasts.filter((toast, i) => i < toastIndex && toast.visible).length; 22 | 23 | const offset = relevantToasts 24 | .filter((t) => t.visible) 25 | .slice(...(reverseOrder ? [toastsBefore + 1] : [0, toastsBefore])) 26 | .reduce((acc, t) => acc + (t.height || 0) + gutter, 0); 27 | 28 | return offset; 29 | } 30 | 31 | const handlers = { 32 | startPause() { 33 | _startPause(Date.now()); 34 | }, 35 | endPause() { 36 | _endPause(Date.now()); 37 | }, 38 | updateHeight: (toastId: string, height: number) => { 39 | update({ id: toastId, height }, false); 40 | }, 41 | calculateOffset 42 | }; 43 | 44 | export default function useToaster(toastOptions?: ToastOptions) { 45 | const { toasts, pausedAt } = useToasterStore(toastOptions); 46 | const timeouts = new Map>(); 47 | let _pausedAt: number | null; 48 | 49 | const unsubscribes = [ 50 | pausedAt.subscribe(($pausedAt) => { 51 | if ($pausedAt) { 52 | for (const [, timeoutId] of timeouts) { 53 | clearTimeout(timeoutId); 54 | } 55 | timeouts.clear(); 56 | } 57 | _pausedAt = $pausedAt; 58 | }), 59 | toasts.subscribe(($toasts) => { 60 | if (_pausedAt) { 61 | return; 62 | } 63 | 64 | const now = Date.now(); 65 | for (const t of $toasts) { 66 | if (timeouts.has(t.id)) { 67 | continue; 68 | } 69 | if (t.duration === Infinity) { 70 | continue; 71 | } 72 | 73 | const durationLeft = (t.duration || 0) + t.pauseDuration - (now - t.createdAt); 74 | 75 | if (durationLeft < 0) { 76 | if (t.visible) { 77 | // FIXME: This causes a recursive cycle of updates. 78 | toast.dismiss(t.id); 79 | } 80 | return null; 81 | } 82 | timeouts.set( 83 | t.id, 84 | setTimeout(() => toast.dismiss(t.id), durationLeft) 85 | ); 86 | } 87 | }) 88 | ]; 89 | onDestroy(() => { 90 | for (const unsubscribe of unsubscribes) { 91 | unsubscribe(); 92 | } 93 | }); 94 | 95 | return { toasts, handlers }; 96 | } 97 | -------------------------------------------------------------------------------- /src/lib/core/utils.ts: -------------------------------------------------------------------------------- 1 | export const genId = (() => { 2 | let count = 0; 3 | 4 | return () => { 5 | count += 1; 6 | return count.toString(); 7 | }; 8 | })(); 9 | 10 | export const prefersReducedMotion = (() => { 11 | // Cache result 12 | let shouldReduceMotion: boolean | undefined; 13 | 14 | return () => { 15 | if (shouldReduceMotion === undefined && typeof window !== 'undefined') { 16 | const mediaQuery = matchMedia('(prefers-reduced-motion: reduce)'); 17 | shouldReduceMotion = !mediaQuery || mediaQuery.matches; 18 | } 19 | return shouldReduceMotion; 20 | }; 21 | })(); 22 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import toast from './core/toast'; 2 | export type { 3 | ToastOptions, 4 | ToastPosition, 5 | Toast, 6 | Renderable, 7 | ValueOrFunction, 8 | ToasterProps, 9 | DefaultToastOptions, 10 | IconTheme, 11 | ToastType, 12 | ValueFunction 13 | } from './core/types'; 14 | 15 | export { default as useToaster } from './core/use-toaster'; 16 | export { useToasterStore } from './core/store'; 17 | export { default as ToastBar } from './components/ToastBar.svelte'; 18 | export { default as ToastIcon } from './components/ToastIcon.svelte'; 19 | export { default as Toaster } from './components/Toaster.svelte'; 20 | export { default as CheckmarkIcon } from './components/CheckmarkIcon.svelte'; 21 | export { default as ErrorIcon } from './components/ErrorIcon.svelte'; 22 | export { default as LoaderIcon } from './components/LoaderIcon.svelte'; 23 | export { resolveValue } from './core/types'; 24 | 25 | export { toast }; 26 | export default toast; 27 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | Svelte French Toast 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 36 | 37 | 38 | {@render children?.()} 39 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 27 | 28 | 29 | 30 |
31 |
32 | 33 |
36 |
39 | Svelte 40 |
41 |
44 | French 45 |
46 |
49 | Toast 50 |
51 |
52 |

Buttery smooth toast notifications.

53 |

54 | Lightweight, customizable, and beautiful by default.
Inspired by 55 | React Hot Toast. 60 |

61 |
62 | 80 | 84 | GitHub 90 | Source 91 | 92 |
93 |

94 | Version {pkg.version} 95 |

96 |
97 | {#each ['Emoji Support', 'Customizable', 'Promise API', 'Pause on hover', 'Accessible', 'Headless use'] as feature} 98 |
99 | 110 |

{feature}

111 |
112 | {/each} 113 |
114 |
115 |
116 |
117 |
118 |
119 |

1. Install

120 |
121 | {#each installers as i} 122 | 132 | {/each} 133 |
134 |
135 | {#each installers as i} 136 |
137 | 138 | {i.cmd} 139 | 140 | 141 |
142 | {/each} 143 |
144 |
145 |

2. Mount and use

146 |
{demoCode}
147 | 148 |
149 |
150 |

Examples

151 | 152 |

153 | GitHub 154 |

155 |

156 | © 2022 svelte-french-toast · Built by Kabir Goel 159 |

160 |
161 | 162 | 179 | -------------------------------------------------------------------------------- /src/www/Copy.svelte: -------------------------------------------------------------------------------- 1 | 15 | 16 | 27 | -------------------------------------------------------------------------------- /src/www/Examples.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 | {#each examples as example (example.title)} 10 | 28 | {/each} 29 |
30 | {#each examples as example} 31 |
32 |
33 |
{example.snippet}
36 |
37 | 38 |
39 | {/each} 40 | 41 | 49 | -------------------------------------------------------------------------------- /src/www/RichContent.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 | 13 | Custom and bold with props like {someProp}! 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/www/demo-code.ts: -------------------------------------------------------------------------------- 1 | export default ` 9 | 10 | `; 11 | -------------------------------------------------------------------------------- /src/www/examples.ts: -------------------------------------------------------------------------------- 1 | import toast from '../lib'; 2 | import RichContent from './RichContent.svelte'; 3 | 4 | export interface Example { 5 | title: string; 6 | action: () => void; 7 | emoji: string; 8 | snippet: string; 9 | html?: boolean; 10 | } 11 | 12 | const examples: Example[] = [ 13 | { 14 | title: 'Success', 15 | emoji: '✅', 16 | snippet: "toast.success('Successfully toasted!')", 17 | action: () => { 18 | toast.success('Successfully toasted!'); 19 | } 20 | }, 21 | { 22 | title: 'Error', 23 | emoji: '❌', 24 | snippet: `toast.error("This didn't work.")`, 25 | 26 | action: () => { 27 | toast.error("This didn't work."); 28 | } 29 | }, 30 | { 31 | title: 'Promise', 32 | emoji: '⏳', 33 | snippet: `toast.promise( 34 | saveSettings(settings), 35 | { 36 | loading: 'Saving...', 37 | success: 'Settings saved!', 38 | error: 'Could not save.', 39 | } 40 | );`, 41 | action: () => { 42 | const promise = new Promise((resolve, reject) => { 43 | setTimeout(Math.random() < 0.8 ? resolve : reject, 1000); 44 | }); 45 | 46 | toast.promise(promise, { 47 | loading: 'Saving...', 48 | success: `Settings saved!`, 49 | error: `Could not save.` 50 | }); 51 | } 52 | }, 53 | { 54 | title: 'Multiline', 55 | emoji: '↩️', 56 | snippet: `toast( 57 | "This toast is super big. I don't think anyone could eat it in one bite.\\n\\nIt's larger than you expected. You eat it but it does not seem to get smaller.", 58 | { 59 | duration: 6000, 60 | } 61 | );`, 62 | action: () => { 63 | toast( 64 | "This toast is super big. I don't think anyone could eat it in one bite.\n\n It's larger than you expected. You eat it but it does not seem to get smaller.", 65 | { 66 | duration: 6000 67 | } 68 | ); 69 | } 70 | }, 71 | { 72 | title: 'Emoji', 73 | emoji: '👏', 74 | snippet: `toast('Good Job!', { 75 | icon: '👏', 76 | });`, 77 | action: () => { 78 | toast('Good Job!', { 79 | icon: '👏' 80 | }); 81 | } 82 | }, 83 | { 84 | title: 'Dark mode', 85 | emoji: '🌚', 86 | snippet: `toast('Hello Darkness!', { 87 | icon: '👏', 88 | style: 'border-radius: 200px; background: #333; color: #fff;' 89 | });`, 90 | action: () => { 91 | toast('Hello Darkness!', { 92 | icon: '👏', 93 | style: 'border-radius: 200px; background: #333; color: #fff;' 94 | }); 95 | } 96 | }, 97 | { 98 | title: 'Rich content', 99 | emoji: '🔩', 100 | snippet: ` 108 | 109 | 112 | 113 | Custom and bold with props like {someProp}! 114 | 115 | `, 116 | html: true, 117 | action: () => { 118 | toast(RichContent, { props: { someProp: '⭐' } }); 119 | } 120 | }, 121 | { 122 | title: 'Themed', 123 | emoji: '🎨', 124 | snippet: `toast.success('Look at me!', { 125 | style: 'border: 1px solid #713200; padding: 16px; color: #713200;', 126 | iconTheme: { 127 | primary: '#713200', 128 | secondary: '#FFFAEE' 129 | } 130 | });`, 131 | 132 | action: () => { 133 | toast.success('Look at me!', { 134 | style: 'border: 1px solid #713200; padding: 16px; color: #713200;', 135 | iconTheme: { 136 | primary: '#713200', 137 | secondary: '#FFFAEE' 138 | } 139 | }); 140 | } 141 | }, 142 | { 143 | title: 'Positioning', 144 | emoji: '⬆️', 145 | snippet: `toast.success('Always at the bottom.', { 146 | position: "bottom-center" 147 | })`, 148 | action: () => { 149 | toast.success('Always at the bottom.', { 150 | position: 'bottom-center', 151 | duration: 10000 152 | }); 153 | } 154 | } 155 | ]; 156 | 157 | export default examples; 158 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/favicon.png -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Black.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Black.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-BlackItalic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-BlackItalic.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Bold.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Bold.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-BoldItalic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-BoldItalic.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-ExtraBold.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-ExtraBold.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Italic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Italic.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Medium.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Medium.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-MediumItalic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-MediumItalic.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Regular.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-Regular.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-SemiBold.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-SemiBold.woff2 -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-SemiBoldItalic.woff -------------------------------------------------------------------------------- /static/fonts/HKGrotesk-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/fonts/HKGrotesk-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /static/og-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kbrgl/svelte-french-toast/8cec351605967f7eeb9a488464172b8a2e60e681/static/og-image.png -------------------------------------------------------------------------------- /static/prism-theme.css: -------------------------------------------------------------------------------- 1 | /* 2 | Name: Duotone Space 3 | Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 4 | 5 | Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-space-dark.css) 6 | Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 7 | */ 8 | 9 | code[class*='language-'], 10 | pre[class*='language-'] { 11 | font-family: 12 | ui-monospace, SFMono-Regular, Consolas, Menlo, Monaco, 'Andale Mono WT', 'Andale Mono', 13 | 'Lucida Console', 'Lucida Sans Typewriter', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 14 | 'Liberation Mono', 'Nimbus Mono L', 'Courier New', Courier, monospace; 15 | font-size: 16px; 16 | line-height: 1.375; 17 | direction: ltr; 18 | text-align: left; 19 | white-space: pre; 20 | word-spacing: normal; 21 | word-break: normal; 22 | 23 | -moz-tab-size: 4; 24 | -o-tab-size: 4; 25 | tab-size: 4; 26 | 27 | -webkit-hyphens: none; 28 | -moz-hyphens: none; 29 | -ms-hyphens: none; 30 | hyphens: none; 31 | background: #24242e; 32 | color: #ddddf0; 33 | } 34 | 35 | pre > code[class*='language-'] { 36 | font-size: 1em; 37 | } 38 | 39 | pre[class*='language-']::-moz-selection, 40 | pre[class*='language-'] ::-moz-selection, 41 | code[class*='language-']::-moz-selection, 42 | code[class*='language-'] ::-moz-selection { 43 | text-shadow: none; 44 | background: #5151e6; 45 | } 46 | 47 | pre[class*='language-']::selection, 48 | pre[class*='language-'] ::selection, 49 | code[class*='language-']::selection, 50 | code[class*='language-'] ::selection { 51 | text-shadow: none; 52 | background: #5151e6; 53 | } 54 | 55 | /* Code blocks */ 56 | pre[class*='language-'] { 57 | border-radius: 8px; 58 | padding: 1em; 59 | margin: 0.5em 0; 60 | overflow: auto; 61 | } 62 | 63 | /* Inline code */ 64 | :not(pre) > code[class*='language-'] { 65 | padding: 2em; 66 | border-radius: 8px; 67 | } 68 | 69 | .token.comment, 70 | .token.prolog, 71 | .token.doctype, 72 | .token.cdata { 73 | color: #5b5b76; 74 | } 75 | 76 | .token.punctuation { 77 | color: #5b5b76; 78 | } 79 | 80 | .token.namespace { 81 | opacity: 0.7; 82 | } 83 | 84 | .token.tag, 85 | .token.operator, 86 | .token.number { 87 | color: #dd672c; 88 | } 89 | 90 | .token.property, 91 | .token.function { 92 | color: #767693; 93 | } 94 | 95 | .token.tag-id, 96 | .token.selector, 97 | .token.atrule-id { 98 | color: #ebebff; 99 | } 100 | 101 | code.language-javascript, 102 | .token.attr-name { 103 | color: #aaaaca; 104 | } 105 | 106 | code.language-css, 107 | code.language-scss, 108 | .token.boolean, 109 | .token.entity, 110 | .token.url, 111 | .language-css .token.string, 112 | .language-scss .token.string, 113 | .style .token.string, 114 | .token.attr-value, 115 | .token.keyword, 116 | .token.control, 117 | .token.directive, 118 | .token.unit, 119 | .token.statement, 120 | .token.regex, 121 | .token.atrule { 122 | color: #fe8c52; 123 | } 124 | 125 | .token.string { 126 | color: #fed352; 127 | } 128 | 129 | .token.placeholder, 130 | .token.variable { 131 | color: #fe8c52; 132 | } 133 | 134 | .token.deleted { 135 | text-decoration: line-through; 136 | } 137 | 138 | .token.inserted { 139 | border-bottom: 1px dotted #ebebff; 140 | text-decoration: none; 141 | } 142 | 143 | .token.italic { 144 | font-style: italic; 145 | } 146 | 147 | .token.important, 148 | .token.bold { 149 | font-weight: bold; 150 | } 151 | 152 | .token.important { 153 | color: #aaaaca; 154 | } 155 | 156 | .token.entity { 157 | cursor: help; 158 | } 159 | 160 | pre > code.highlight { 161 | outline: 0.4em solid #7676f4; 162 | outline-offset: 0.4em; 163 | } 164 | 165 | /* overrides color-values for the Line Numbers plugin 166 | * http://prismjs.com/plugins/line-numbers/ 167 | */ 168 | .line-numbers.line-numbers .line-numbers-rows { 169 | border-right-color: #262631; 170 | } 171 | 172 | .line-numbers .line-numbers-rows > span:before { 173 | color: #393949; 174 | } 175 | 176 | /* overrides color-values for the Line Highlight plugin 177 | * http://prismjs.com/plugins/line-highlight/ 178 | */ 179 | .line-highlight.line-highlight { 180 | background: rgba(221, 103, 44, 0.2); 181 | background: -webkit-linear-gradient(left, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0)); 182 | background: linear-gradient(to right, rgba(221, 103, 44, 0.2) 70%, rgba(221, 103, 44, 0)); 183 | } 184 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ['./src/**/*.{html,js,svelte,ts}'], 3 | theme: { 4 | fontFamily: { 5 | sans: 'HK Grotesk, -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif', 6 | serif: 7 | 'Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol', 8 | mono: 'Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace' 9 | }, 10 | extend: {} 11 | }, 12 | plugins: [] 13 | }; 14 | -------------------------------------------------------------------------------- /tests/test.ts: -------------------------------------------------------------------------------- 1 | import { expect, test } from '@playwright/test'; 2 | 3 | test('index page has expected h1', async ({ page }) => { 4 | await page.goto('/'); 5 | await expect(page.getByRole('heading', { name: 'Welcome to SvelteKit' })).toBeVisible(); 6 | }); 7 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vitest/config'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | test: { 7 | include: ['src/**/*.{test,spec}.{js,ts}'] 8 | }, 9 | server: { 10 | fs: { 11 | strict: false 12 | } 13 | } 14 | }); 15 | --------------------------------------------------------------------------------