├── .eslintignore ├── .eslintrc.cjs ├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── README.md ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── src ├── app.d.ts ├── app.html ├── app.pcss ├── hooks.server.ts ├── lib │ ├── components │ │ ├── Navbar.svelte │ │ └── PasswordInput.svelte │ ├── icons │ │ ├── AnimatedClock.svelte │ │ ├── AnimatedWifi.svelte │ │ ├── ArrowLeft.svelte │ │ ├── BarsRotateIcon.svelte │ │ ├── BurgerIcon.svelte │ │ ├── CartIcon.svelte │ │ ├── CloseIcon.svelte │ │ ├── EyeClosedIcon.svelte │ │ ├── EyeIcon.svelte │ │ ├── GridViewIcon.svelte │ │ ├── ListViewIcon.svelte │ │ ├── MagnifyingGlassIcon.svelte │ │ ├── TrashIcon.svelte │ │ └── UserIcon.svelte │ └── index.ts └── routes │ ├── (auth) │ ├── auth-code-error │ │ └── +page.svelte │ ├── email-confirm │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── login │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── logout │ │ └── +server.ts │ ├── reset-password │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── signup │ │ ├── +page.server.ts │ │ └── +page.svelte │ └── update-password │ │ ├── +page.server.ts │ │ └── +page.svelte │ ├── +layout.server.ts │ ├── +layout.svelte │ ├── +layout.ts │ ├── +page.server.ts │ ├── +page.svelte │ ├── api │ └── auth │ │ └── callback │ │ └── +server.ts │ ├── profile │ ├── +page.server.ts │ └── +page.svelte │ ├── protected-routes │ ├── +page.server.ts │ └── +page.svelte │ └── welcome │ └── +page.svelte ├── static ├── favicon.ico └── favicon.png ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json └── vite.config.ts /.eslintignore: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | /** @type { import("eslint").Linter.Config } */ 2 | module.exports = { 3 | root: true, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:svelte/recommended', 8 | 'prettier' 9 | ], 10 | parser: '@typescript-eslint/parser', 11 | plugins: ['@typescript-eslint'], 12 | parserOptions: { 13 | sourceType: 'module', 14 | ecmaVersion: 2020, 15 | extraFileExtensions: ['.svelte'] 16 | }, 17 | env: { 18 | browser: true, 19 | es2017: true, 20 | node: true 21 | }, 22 | overrides: [ 23 | { 24 | files: ['*.svelte'], 25 | parser: 'svelte-eslint-parser', 26 | parserOptions: { 27 | parser: '@typescript-eslint/parser' 28 | } 29 | } 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Ignore files for PNPM, NPM and YARN 2 | pnpm-lock.yaml 3 | package-lock.json 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"], 7 | "overrides": [ 8 | { 9 | "files": "*.svelte", 10 | "options": { 11 | "parser": "svelte" 12 | } 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Supabase Auth / SvelteKit 4 Starter ( Typescript ) 2 | 3 | Email Auth with PKCE flow for SSR 4 | Email authentication in your server-side rendering (SSR) application using the new @supabase/ssr package. 5 | API endpoint for verifying the token_hash along with the type to exchange token_hash for the user's session, which is set as a cookie for future requests made to Supabase. 6 | 7 | ### Check the docs... 8 | 9 | ```bash 10 | https://supabase.com/docs/guides/auth/server-side/email-based-auth-with-pkce-flow-for-ssr?framework=sveltekit 11 | https://supabase.com/docs/guides/auth/auth-helpers/sveltekit 12 | ``` 13 | 14 | You can also check this article: 15 | [Securing Your SvelteKit App with Supabase Authentication](https://www.patrick-segarel.com/blog/securing-your-sveltekit-app-with-supabase-authentication). 16 | 17 | But I worked on this starter because I found many things to be unclear or even wrong, the logic remains though. 18 | Make sure to check how to set up a project with an .env file: 19 | 20 | ```bash 21 | # Values to be found on your Supabase project dashboard 22 | #https://supabase.com/dashboard/project/[YOUR_PROJECT_ID]/settings/api 23 | PUBLIC_SUPABASE_URL= 24 | PUBLIC_SUPABASE_ANON_KEY= 25 | ``` 26 | 27 | 28 | 29 | ### Update email templates with URL for API endpoint 30 | 31 | #### Confirm sign up 32 | 33 | ```bash 34 |

Confirm your signup!

35 | 36 |

Follow this link to confirm your user:

37 |

38 | Confirm your email 41 |

42 | ``` 43 | Here the api endpoint is /api/auth/callback, but this is up to you. 44 | 45 | #### Reset Password 46 | 47 | ```bash 48 |

Reset Password

49 | 50 |

Follow this link to reset the password for your user:

51 |

52 | Reset Password 56 |

57 | ``` 58 | Check the other email templates, depending on your application needs 59 | 60 | ### TailwindCSS & Daisy UI 61 | A personal choice... -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "supabase-auth", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev --open --port 5174", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 11 | "lint": "prettier --check . && eslint .", 12 | "format": "prettier --write ." 13 | }, 14 | "devDependencies": { 15 | "@sveltejs/adapter-auto": "^3.0.0", 16 | "@sveltejs/kit": "^2.0.0", 17 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 18 | "@types/eslint": "8.56.0", 19 | "@typescript-eslint/eslint-plugin": "^6.0.0", 20 | "@typescript-eslint/parser": "^6.0.0", 21 | "autoprefixer": "^10.4.16", 22 | "eslint": "^8.56.0", 23 | "eslint-config-prettier": "^9.1.0", 24 | "eslint-plugin-svelte": "^2.35.1", 25 | "postcss": "^8.4.32", 26 | "postcss-load-config": "^5.0.2", 27 | "prettier": "^3.1.1", 28 | "prettier-plugin-svelte": "^3.1.2", 29 | "prettier-plugin-tailwindcss": "^0.5.9", 30 | "svelte": "^4.2.7", 31 | "svelte-check": "^3.6.0", 32 | "tailwindcss": "^3.3.6", 33 | "tslib": "^2.4.1", 34 | "typescript": "^5.0.0", 35 | "vite": "^5.0.3" 36 | }, 37 | "type": "module", 38 | "dependencies": { 39 | "@supabase/ssr": "^0.1.0", 40 | "@supabase/supabase-js": "^2.39.3", 41 | "daisyui": "^4.6.0" 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@supabase/ssr': 9 | specifier: ^0.1.0 10 | version: 0.1.0(@supabase/supabase-js@2.39.6) 11 | '@supabase/supabase-js': 12 | specifier: ^2.39.3 13 | version: 2.39.6 14 | daisyui: 15 | specifier: ^4.6.0 16 | version: 4.7.2(postcss@8.4.35) 17 | 18 | devDependencies: 19 | '@sveltejs/adapter-auto': 20 | specifier: ^3.0.0 21 | version: 3.1.1(@sveltejs/kit@2.5.0) 22 | '@sveltejs/kit': 23 | specifier: ^2.0.0 24 | version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.2) 25 | '@sveltejs/vite-plugin-svelte': 26 | specifier: ^3.0.0 27 | version: 3.0.2(svelte@4.2.10)(vite@5.1.2) 28 | '@types/eslint': 29 | specifier: 8.56.0 30 | version: 8.56.0 31 | '@typescript-eslint/eslint-plugin': 32 | specifier: ^6.0.0 33 | version: 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3) 34 | '@typescript-eslint/parser': 35 | specifier: ^6.0.0 36 | version: 6.21.0(eslint@8.56.0)(typescript@5.3.3) 37 | autoprefixer: 38 | specifier: ^10.4.16 39 | version: 10.4.17(postcss@8.4.35) 40 | eslint: 41 | specifier: ^8.56.0 42 | version: 8.56.0 43 | eslint-config-prettier: 44 | specifier: ^9.1.0 45 | version: 9.1.0(eslint@8.56.0) 46 | eslint-plugin-svelte: 47 | specifier: ^2.35.1 48 | version: 2.35.1(eslint@8.56.0)(svelte@4.2.10) 49 | postcss: 50 | specifier: ^8.4.32 51 | version: 8.4.35 52 | postcss-load-config: 53 | specifier: ^5.0.2 54 | version: 5.0.3(postcss@8.4.35) 55 | prettier: 56 | specifier: ^3.1.1 57 | version: 3.2.5 58 | prettier-plugin-svelte: 59 | specifier: ^3.1.2 60 | version: 3.2.1(prettier@3.2.5)(svelte@4.2.10) 61 | prettier-plugin-tailwindcss: 62 | specifier: ^0.5.9 63 | version: 0.5.11(prettier-plugin-svelte@3.2.1)(prettier@3.2.5) 64 | svelte: 65 | specifier: ^4.2.7 66 | version: 4.2.10 67 | svelte-check: 68 | specifier: ^3.6.0 69 | version: 3.6.4(postcss-load-config@5.0.3)(postcss@8.4.35)(svelte@4.2.10) 70 | tailwindcss: 71 | specifier: ^3.3.6 72 | version: 3.4.1 73 | tslib: 74 | specifier: ^2.4.1 75 | version: 2.6.2 76 | typescript: 77 | specifier: ^5.0.0 78 | version: 5.3.3 79 | vite: 80 | specifier: ^5.0.3 81 | version: 5.1.2 82 | 83 | packages: 84 | 85 | /@aashutoshrathi/word-wrap@1.2.6: 86 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 87 | engines: {node: '>=0.10.0'} 88 | dev: true 89 | 90 | /@alloc/quick-lru@5.2.0: 91 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 92 | engines: {node: '>=10'} 93 | dev: true 94 | 95 | /@ampproject/remapping@2.2.1: 96 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 97 | engines: {node: '>=6.0.0'} 98 | dependencies: 99 | '@jridgewell/gen-mapping': 0.3.3 100 | '@jridgewell/trace-mapping': 0.3.22 101 | dev: true 102 | 103 | /@esbuild/aix-ppc64@0.19.12: 104 | resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 105 | engines: {node: '>=12'} 106 | cpu: [ppc64] 107 | os: [aix] 108 | requiresBuild: true 109 | dev: true 110 | optional: true 111 | 112 | /@esbuild/android-arm64@0.19.12: 113 | resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 114 | engines: {node: '>=12'} 115 | cpu: [arm64] 116 | os: [android] 117 | requiresBuild: true 118 | dev: true 119 | optional: true 120 | 121 | /@esbuild/android-arm@0.19.12: 122 | resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 123 | engines: {node: '>=12'} 124 | cpu: [arm] 125 | os: [android] 126 | requiresBuild: true 127 | dev: true 128 | optional: true 129 | 130 | /@esbuild/android-x64@0.19.12: 131 | resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 132 | engines: {node: '>=12'} 133 | cpu: [x64] 134 | os: [android] 135 | requiresBuild: true 136 | dev: true 137 | optional: true 138 | 139 | /@esbuild/darwin-arm64@0.19.12: 140 | resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 141 | engines: {node: '>=12'} 142 | cpu: [arm64] 143 | os: [darwin] 144 | requiresBuild: true 145 | dev: true 146 | optional: true 147 | 148 | /@esbuild/darwin-x64@0.19.12: 149 | resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 150 | engines: {node: '>=12'} 151 | cpu: [x64] 152 | os: [darwin] 153 | requiresBuild: true 154 | dev: true 155 | optional: true 156 | 157 | /@esbuild/freebsd-arm64@0.19.12: 158 | resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 159 | engines: {node: '>=12'} 160 | cpu: [arm64] 161 | os: [freebsd] 162 | requiresBuild: true 163 | dev: true 164 | optional: true 165 | 166 | /@esbuild/freebsd-x64@0.19.12: 167 | resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 168 | engines: {node: '>=12'} 169 | cpu: [x64] 170 | os: [freebsd] 171 | requiresBuild: true 172 | dev: true 173 | optional: true 174 | 175 | /@esbuild/linux-arm64@0.19.12: 176 | resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 177 | engines: {node: '>=12'} 178 | cpu: [arm64] 179 | os: [linux] 180 | requiresBuild: true 181 | dev: true 182 | optional: true 183 | 184 | /@esbuild/linux-arm@0.19.12: 185 | resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 186 | engines: {node: '>=12'} 187 | cpu: [arm] 188 | os: [linux] 189 | requiresBuild: true 190 | dev: true 191 | optional: true 192 | 193 | /@esbuild/linux-ia32@0.19.12: 194 | resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 195 | engines: {node: '>=12'} 196 | cpu: [ia32] 197 | os: [linux] 198 | requiresBuild: true 199 | dev: true 200 | optional: true 201 | 202 | /@esbuild/linux-loong64@0.19.12: 203 | resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 204 | engines: {node: '>=12'} 205 | cpu: [loong64] 206 | os: [linux] 207 | requiresBuild: true 208 | dev: true 209 | optional: true 210 | 211 | /@esbuild/linux-mips64el@0.19.12: 212 | resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 213 | engines: {node: '>=12'} 214 | cpu: [mips64el] 215 | os: [linux] 216 | requiresBuild: true 217 | dev: true 218 | optional: true 219 | 220 | /@esbuild/linux-ppc64@0.19.12: 221 | resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 222 | engines: {node: '>=12'} 223 | cpu: [ppc64] 224 | os: [linux] 225 | requiresBuild: true 226 | dev: true 227 | optional: true 228 | 229 | /@esbuild/linux-riscv64@0.19.12: 230 | resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 231 | engines: {node: '>=12'} 232 | cpu: [riscv64] 233 | os: [linux] 234 | requiresBuild: true 235 | dev: true 236 | optional: true 237 | 238 | /@esbuild/linux-s390x@0.19.12: 239 | resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 240 | engines: {node: '>=12'} 241 | cpu: [s390x] 242 | os: [linux] 243 | requiresBuild: true 244 | dev: true 245 | optional: true 246 | 247 | /@esbuild/linux-x64@0.19.12: 248 | resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 249 | engines: {node: '>=12'} 250 | cpu: [x64] 251 | os: [linux] 252 | requiresBuild: true 253 | dev: true 254 | optional: true 255 | 256 | /@esbuild/netbsd-x64@0.19.12: 257 | resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 258 | engines: {node: '>=12'} 259 | cpu: [x64] 260 | os: [netbsd] 261 | requiresBuild: true 262 | dev: true 263 | optional: true 264 | 265 | /@esbuild/openbsd-x64@0.19.12: 266 | resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 267 | engines: {node: '>=12'} 268 | cpu: [x64] 269 | os: [openbsd] 270 | requiresBuild: true 271 | dev: true 272 | optional: true 273 | 274 | /@esbuild/sunos-x64@0.19.12: 275 | resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 276 | engines: {node: '>=12'} 277 | cpu: [x64] 278 | os: [sunos] 279 | requiresBuild: true 280 | dev: true 281 | optional: true 282 | 283 | /@esbuild/win32-arm64@0.19.12: 284 | resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 285 | engines: {node: '>=12'} 286 | cpu: [arm64] 287 | os: [win32] 288 | requiresBuild: true 289 | dev: true 290 | optional: true 291 | 292 | /@esbuild/win32-ia32@0.19.12: 293 | resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 294 | engines: {node: '>=12'} 295 | cpu: [ia32] 296 | os: [win32] 297 | requiresBuild: true 298 | dev: true 299 | optional: true 300 | 301 | /@esbuild/win32-x64@0.19.12: 302 | resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 303 | engines: {node: '>=12'} 304 | cpu: [x64] 305 | os: [win32] 306 | requiresBuild: true 307 | dev: true 308 | optional: true 309 | 310 | /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): 311 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 312 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 313 | peerDependencies: 314 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 315 | dependencies: 316 | eslint: 8.56.0 317 | eslint-visitor-keys: 3.4.3 318 | dev: true 319 | 320 | /@eslint-community/regexpp@4.10.0: 321 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 322 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 323 | dev: true 324 | 325 | /@eslint/eslintrc@2.1.4: 326 | resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} 327 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 328 | dependencies: 329 | ajv: 6.12.6 330 | debug: 4.3.4 331 | espree: 9.6.1 332 | globals: 13.24.0 333 | ignore: 5.3.1 334 | import-fresh: 3.3.0 335 | js-yaml: 4.1.0 336 | minimatch: 3.1.2 337 | strip-json-comments: 3.1.1 338 | transitivePeerDependencies: 339 | - supports-color 340 | dev: true 341 | 342 | /@eslint/js@8.56.0: 343 | resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} 344 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 345 | dev: true 346 | 347 | /@humanwhocodes/config-array@0.11.14: 348 | resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} 349 | engines: {node: '>=10.10.0'} 350 | dependencies: 351 | '@humanwhocodes/object-schema': 2.0.2 352 | debug: 4.3.4 353 | minimatch: 3.1.2 354 | transitivePeerDependencies: 355 | - supports-color 356 | dev: true 357 | 358 | /@humanwhocodes/module-importer@1.0.1: 359 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 360 | engines: {node: '>=12.22'} 361 | dev: true 362 | 363 | /@humanwhocodes/object-schema@2.0.2: 364 | resolution: {integrity: sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==} 365 | dev: true 366 | 367 | /@isaacs/cliui@8.0.2: 368 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 369 | engines: {node: '>=12'} 370 | dependencies: 371 | string-width: 5.1.2 372 | string-width-cjs: /string-width@4.2.3 373 | strip-ansi: 7.1.0 374 | strip-ansi-cjs: /strip-ansi@6.0.1 375 | wrap-ansi: 8.1.0 376 | wrap-ansi-cjs: /wrap-ansi@7.0.0 377 | dev: true 378 | 379 | /@jridgewell/gen-mapping@0.3.3: 380 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 381 | engines: {node: '>=6.0.0'} 382 | dependencies: 383 | '@jridgewell/set-array': 1.1.2 384 | '@jridgewell/sourcemap-codec': 1.4.15 385 | '@jridgewell/trace-mapping': 0.3.22 386 | dev: true 387 | 388 | /@jridgewell/resolve-uri@3.1.2: 389 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 390 | engines: {node: '>=6.0.0'} 391 | dev: true 392 | 393 | /@jridgewell/set-array@1.1.2: 394 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 395 | engines: {node: '>=6.0.0'} 396 | dev: true 397 | 398 | /@jridgewell/sourcemap-codec@1.4.15: 399 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 400 | dev: true 401 | 402 | /@jridgewell/trace-mapping@0.3.22: 403 | resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==} 404 | dependencies: 405 | '@jridgewell/resolve-uri': 3.1.2 406 | '@jridgewell/sourcemap-codec': 1.4.15 407 | dev: true 408 | 409 | /@nodelib/fs.scandir@2.1.5: 410 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 411 | engines: {node: '>= 8'} 412 | dependencies: 413 | '@nodelib/fs.stat': 2.0.5 414 | run-parallel: 1.2.0 415 | dev: true 416 | 417 | /@nodelib/fs.stat@2.0.5: 418 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 419 | engines: {node: '>= 8'} 420 | dev: true 421 | 422 | /@nodelib/fs.walk@1.2.8: 423 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 424 | engines: {node: '>= 8'} 425 | dependencies: 426 | '@nodelib/fs.scandir': 2.1.5 427 | fastq: 1.17.1 428 | dev: true 429 | 430 | /@pkgjs/parseargs@0.11.0: 431 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 432 | engines: {node: '>=14'} 433 | requiresBuild: true 434 | dev: true 435 | optional: true 436 | 437 | /@polka/url@1.0.0-next.24: 438 | resolution: {integrity: sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==} 439 | dev: true 440 | 441 | /@rollup/rollup-android-arm-eabi@4.10.0: 442 | resolution: {integrity: sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==} 443 | cpu: [arm] 444 | os: [android] 445 | requiresBuild: true 446 | dev: true 447 | optional: true 448 | 449 | /@rollup/rollup-android-arm64@4.10.0: 450 | resolution: {integrity: sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==} 451 | cpu: [arm64] 452 | os: [android] 453 | requiresBuild: true 454 | dev: true 455 | optional: true 456 | 457 | /@rollup/rollup-darwin-arm64@4.10.0: 458 | resolution: {integrity: sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==} 459 | cpu: [arm64] 460 | os: [darwin] 461 | requiresBuild: true 462 | dev: true 463 | optional: true 464 | 465 | /@rollup/rollup-darwin-x64@4.10.0: 466 | resolution: {integrity: sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==} 467 | cpu: [x64] 468 | os: [darwin] 469 | requiresBuild: true 470 | dev: true 471 | optional: true 472 | 473 | /@rollup/rollup-linux-arm-gnueabihf@4.10.0: 474 | resolution: {integrity: sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==} 475 | cpu: [arm] 476 | os: [linux] 477 | requiresBuild: true 478 | dev: true 479 | optional: true 480 | 481 | /@rollup/rollup-linux-arm64-gnu@4.10.0: 482 | resolution: {integrity: sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==} 483 | cpu: [arm64] 484 | os: [linux] 485 | requiresBuild: true 486 | dev: true 487 | optional: true 488 | 489 | /@rollup/rollup-linux-arm64-musl@4.10.0: 490 | resolution: {integrity: sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==} 491 | cpu: [arm64] 492 | os: [linux] 493 | requiresBuild: true 494 | dev: true 495 | optional: true 496 | 497 | /@rollup/rollup-linux-riscv64-gnu@4.10.0: 498 | resolution: {integrity: sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==} 499 | cpu: [riscv64] 500 | os: [linux] 501 | requiresBuild: true 502 | dev: true 503 | optional: true 504 | 505 | /@rollup/rollup-linux-x64-gnu@4.10.0: 506 | resolution: {integrity: sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==} 507 | cpu: [x64] 508 | os: [linux] 509 | requiresBuild: true 510 | dev: true 511 | optional: true 512 | 513 | /@rollup/rollup-linux-x64-musl@4.10.0: 514 | resolution: {integrity: sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==} 515 | cpu: [x64] 516 | os: [linux] 517 | requiresBuild: true 518 | dev: true 519 | optional: true 520 | 521 | /@rollup/rollup-win32-arm64-msvc@4.10.0: 522 | resolution: {integrity: sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==} 523 | cpu: [arm64] 524 | os: [win32] 525 | requiresBuild: true 526 | dev: true 527 | optional: true 528 | 529 | /@rollup/rollup-win32-ia32-msvc@4.10.0: 530 | resolution: {integrity: sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==} 531 | cpu: [ia32] 532 | os: [win32] 533 | requiresBuild: true 534 | dev: true 535 | optional: true 536 | 537 | /@rollup/rollup-win32-x64-msvc@4.10.0: 538 | resolution: {integrity: sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==} 539 | cpu: [x64] 540 | os: [win32] 541 | requiresBuild: true 542 | dev: true 543 | optional: true 544 | 545 | /@supabase/functions-js@2.1.5: 546 | resolution: {integrity: sha512-BNzC5XhCzzCaggJ8s53DP+WeHHGT/NfTsx2wUSSGKR2/ikLFQTBCDzMvGz/PxYMqRko/LwncQtKXGOYp1PkPaw==} 547 | dependencies: 548 | '@supabase/node-fetch': 2.6.15 549 | dev: false 550 | 551 | /@supabase/gotrue-js@2.62.2: 552 | resolution: {integrity: sha512-AP6e6W9rQXFTEJ7sTTNYQrNf0LCcnt1hUW+RIgUK+Uh3jbWvcIST7wAlYyNZiMlS9+PYyymWQ+Ykz/rOYSO0+A==} 553 | dependencies: 554 | '@supabase/node-fetch': 2.6.15 555 | dev: false 556 | 557 | /@supabase/node-fetch@2.6.15: 558 | resolution: {integrity: sha512-1ibVeYUacxWYi9i0cf5efil6adJ9WRyZBLivgjs+AUpewx1F3xPi7gLgaASI2SmIQxPoCEjAsLAzKPgMJVgOUQ==} 559 | engines: {node: 4.x || >=6.0.0} 560 | dependencies: 561 | whatwg-url: 5.0.0 562 | dev: false 563 | 564 | /@supabase/postgrest-js@1.9.2: 565 | resolution: {integrity: sha512-I6yHo8CC9cxhOo6DouDMy9uOfW7hjdsnCxZiaJuIVZm1dBGTFiQPgfMa9zXCamEWzNyWRjZvupAUuX+tqcl5Sw==} 566 | dependencies: 567 | '@supabase/node-fetch': 2.6.15 568 | dev: false 569 | 570 | /@supabase/realtime-js@2.9.3: 571 | resolution: {integrity: sha512-lAp50s2n3FhGJFq+wTSXLNIDPw5Y0Wxrgt44eM5nLSA3jZNUUP3Oq2Ccd1CbZdVntPCWLZvJaU//pAd2NE+QnQ==} 572 | dependencies: 573 | '@supabase/node-fetch': 2.6.15 574 | '@types/phoenix': 1.6.4 575 | '@types/ws': 8.5.10 576 | ws: 8.16.0 577 | transitivePeerDependencies: 578 | - bufferutil 579 | - utf-8-validate 580 | dev: false 581 | 582 | /@supabase/ssr@0.1.0(@supabase/supabase-js@2.39.6): 583 | resolution: {integrity: sha512-bIVrkqjAK5G3KjkIMKYKtAOlCgRRplEWjrlyRyXSOYtgDieiOhk2ZyNAPsEOa1By9OZVxuX5eAW1fitdnuxayw==} 584 | peerDependencies: 585 | '@supabase/supabase-js': ^2.33.1 586 | dependencies: 587 | '@supabase/supabase-js': 2.39.6 588 | cookie: 0.5.0 589 | ramda: 0.29.1 590 | dev: false 591 | 592 | /@supabase/storage-js@2.5.5: 593 | resolution: {integrity: sha512-OpLoDRjFwClwc2cjTJZG8XviTiQH4Ik8sCiMK5v7et0MDu2QlXjCAW3ljxJB5+z/KazdMOTnySi+hysxWUPu3w==} 594 | dependencies: 595 | '@supabase/node-fetch': 2.6.15 596 | dev: false 597 | 598 | /@supabase/supabase-js@2.39.6: 599 | resolution: {integrity: sha512-HlflDzem0+l3KYYTqHV0UsqkDooV9my5UcBCV2zvvTrl77UtW97uKTZWn9lSWMuiy+ZvRLsiuG+WTiBuKMQl0Q==} 600 | dependencies: 601 | '@supabase/functions-js': 2.1.5 602 | '@supabase/gotrue-js': 2.62.2 603 | '@supabase/node-fetch': 2.6.15 604 | '@supabase/postgrest-js': 1.9.2 605 | '@supabase/realtime-js': 2.9.3 606 | '@supabase/storage-js': 2.5.5 607 | transitivePeerDependencies: 608 | - bufferutil 609 | - utf-8-validate 610 | dev: false 611 | 612 | /@sveltejs/adapter-auto@3.1.1(@sveltejs/kit@2.5.0): 613 | resolution: {integrity: sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==} 614 | peerDependencies: 615 | '@sveltejs/kit': ^2.0.0 616 | dependencies: 617 | '@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.2) 618 | import-meta-resolve: 4.0.0 619 | dev: true 620 | 621 | /@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.2): 622 | resolution: {integrity: sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==} 623 | engines: {node: '>=18.13'} 624 | hasBin: true 625 | requiresBuild: true 626 | peerDependencies: 627 | '@sveltejs/vite-plugin-svelte': ^3.0.0 628 | svelte: ^4.0.0 || ^5.0.0-next.0 629 | vite: ^5.0.3 630 | dependencies: 631 | '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.2) 632 | '@types/cookie': 0.6.0 633 | cookie: 0.6.0 634 | devalue: 4.3.2 635 | esm-env: 1.0.0 636 | import-meta-resolve: 4.0.0 637 | kleur: 4.1.5 638 | magic-string: 0.30.7 639 | mrmime: 2.0.0 640 | sade: 1.8.1 641 | set-cookie-parser: 2.6.0 642 | sirv: 2.0.4 643 | svelte: 4.2.10 644 | tiny-glob: 0.2.9 645 | vite: 5.1.2 646 | dev: true 647 | 648 | /@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.2): 649 | resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==} 650 | engines: {node: ^18.0.0 || >=20} 651 | peerDependencies: 652 | '@sveltejs/vite-plugin-svelte': ^3.0.0 653 | svelte: ^4.0.0 || ^5.0.0-next.0 654 | vite: ^5.0.0 655 | dependencies: 656 | '@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.10)(vite@5.1.2) 657 | debug: 4.3.4 658 | svelte: 4.2.10 659 | vite: 5.1.2 660 | transitivePeerDependencies: 661 | - supports-color 662 | dev: true 663 | 664 | /@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.10)(vite@5.1.2): 665 | resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==} 666 | engines: {node: ^18.0.0 || >=20} 667 | peerDependencies: 668 | svelte: ^4.0.0 || ^5.0.0-next.0 669 | vite: ^5.0.0 670 | dependencies: 671 | '@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.10)(vite@5.1.2) 672 | debug: 4.3.4 673 | deepmerge: 4.3.1 674 | kleur: 4.1.5 675 | magic-string: 0.30.7 676 | svelte: 4.2.10 677 | svelte-hmr: 0.15.3(svelte@4.2.10) 678 | vite: 5.1.2 679 | vitefu: 0.2.5(vite@5.1.2) 680 | transitivePeerDependencies: 681 | - supports-color 682 | dev: true 683 | 684 | /@types/cookie@0.6.0: 685 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 686 | dev: true 687 | 688 | /@types/eslint@8.56.0: 689 | resolution: {integrity: sha512-FlsN0p4FhuYRjIxpbdXovvHQhtlG05O1GG/RNWvdAxTboR438IOTwmrY/vLA+Xfgg06BTkP045M3vpFwTMv1dg==} 690 | dependencies: 691 | '@types/estree': 1.0.5 692 | '@types/json-schema': 7.0.15 693 | dev: true 694 | 695 | /@types/estree@1.0.5: 696 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 697 | dev: true 698 | 699 | /@types/json-schema@7.0.15: 700 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 701 | dev: true 702 | 703 | /@types/node@20.11.17: 704 | resolution: {integrity: sha512-QmgQZGWu1Yw9TDyAP9ZzpFJKynYNeOvwMJmaxABfieQoVoiVOS6MN1WSpqpRcbeA5+RW82kraAVxCCJg+780Qw==} 705 | dependencies: 706 | undici-types: 5.26.5 707 | dev: false 708 | 709 | /@types/phoenix@1.6.4: 710 | resolution: {integrity: sha512-B34A7uot1Cv0XtaHRYDATltAdKx0BvVKNgYNqE4WjtPUa4VQJM7kxeXcVKaH+KS+kCmZ+6w+QaUdcljiheiBJA==} 711 | dev: false 712 | 713 | /@types/pug@2.0.10: 714 | resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} 715 | dev: true 716 | 717 | /@types/semver@7.5.7: 718 | resolution: {integrity: sha512-/wdoPq1QqkSj9/QOeKkFquEuPzQbHTWAMPH/PaUMB+JuR31lXhlWXRZ52IpfDYVlDOUBvX09uBrPwxGT1hjNBg==} 719 | dev: true 720 | 721 | /@types/ws@8.5.10: 722 | resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} 723 | dependencies: 724 | '@types/node': 20.11.17 725 | dev: false 726 | 727 | /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.56.0)(typescript@5.3.3): 728 | resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} 729 | engines: {node: ^16.0.0 || >=18.0.0} 730 | peerDependencies: 731 | '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha 732 | eslint: ^7.0.0 || ^8.0.0 733 | typescript: '*' 734 | peerDependenciesMeta: 735 | typescript: 736 | optional: true 737 | dependencies: 738 | '@eslint-community/regexpp': 4.10.0 739 | '@typescript-eslint/parser': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 740 | '@typescript-eslint/scope-manager': 6.21.0 741 | '@typescript-eslint/type-utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 742 | '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 743 | '@typescript-eslint/visitor-keys': 6.21.0 744 | debug: 4.3.4 745 | eslint: 8.56.0 746 | graphemer: 1.4.0 747 | ignore: 5.3.1 748 | natural-compare: 1.4.0 749 | semver: 7.6.0 750 | ts-api-utils: 1.2.1(typescript@5.3.3) 751 | typescript: 5.3.3 752 | transitivePeerDependencies: 753 | - supports-color 754 | dev: true 755 | 756 | /@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.3.3): 757 | resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} 758 | engines: {node: ^16.0.0 || >=18.0.0} 759 | peerDependencies: 760 | eslint: ^7.0.0 || ^8.0.0 761 | typescript: '*' 762 | peerDependenciesMeta: 763 | typescript: 764 | optional: true 765 | dependencies: 766 | '@typescript-eslint/scope-manager': 6.21.0 767 | '@typescript-eslint/types': 6.21.0 768 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) 769 | '@typescript-eslint/visitor-keys': 6.21.0 770 | debug: 4.3.4 771 | eslint: 8.56.0 772 | typescript: 5.3.3 773 | transitivePeerDependencies: 774 | - supports-color 775 | dev: true 776 | 777 | /@typescript-eslint/scope-manager@6.21.0: 778 | resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} 779 | engines: {node: ^16.0.0 || >=18.0.0} 780 | dependencies: 781 | '@typescript-eslint/types': 6.21.0 782 | '@typescript-eslint/visitor-keys': 6.21.0 783 | dev: true 784 | 785 | /@typescript-eslint/type-utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): 786 | resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} 787 | engines: {node: ^16.0.0 || >=18.0.0} 788 | peerDependencies: 789 | eslint: ^7.0.0 || ^8.0.0 790 | typescript: '*' 791 | peerDependenciesMeta: 792 | typescript: 793 | optional: true 794 | dependencies: 795 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) 796 | '@typescript-eslint/utils': 6.21.0(eslint@8.56.0)(typescript@5.3.3) 797 | debug: 4.3.4 798 | eslint: 8.56.0 799 | ts-api-utils: 1.2.1(typescript@5.3.3) 800 | typescript: 5.3.3 801 | transitivePeerDependencies: 802 | - supports-color 803 | dev: true 804 | 805 | /@typescript-eslint/types@6.21.0: 806 | resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} 807 | engines: {node: ^16.0.0 || >=18.0.0} 808 | dev: true 809 | 810 | /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.3): 811 | resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==} 812 | engines: {node: ^16.0.0 || >=18.0.0} 813 | peerDependencies: 814 | typescript: '*' 815 | peerDependenciesMeta: 816 | typescript: 817 | optional: true 818 | dependencies: 819 | '@typescript-eslint/types': 6.21.0 820 | '@typescript-eslint/visitor-keys': 6.21.0 821 | debug: 4.3.4 822 | globby: 11.1.0 823 | is-glob: 4.0.3 824 | minimatch: 9.0.3 825 | semver: 7.6.0 826 | ts-api-utils: 1.2.1(typescript@5.3.3) 827 | typescript: 5.3.3 828 | transitivePeerDependencies: 829 | - supports-color 830 | dev: true 831 | 832 | /@typescript-eslint/utils@6.21.0(eslint@8.56.0)(typescript@5.3.3): 833 | resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} 834 | engines: {node: ^16.0.0 || >=18.0.0} 835 | peerDependencies: 836 | eslint: ^7.0.0 || ^8.0.0 837 | dependencies: 838 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 839 | '@types/json-schema': 7.0.15 840 | '@types/semver': 7.5.7 841 | '@typescript-eslint/scope-manager': 6.21.0 842 | '@typescript-eslint/types': 6.21.0 843 | '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.3) 844 | eslint: 8.56.0 845 | semver: 7.6.0 846 | transitivePeerDependencies: 847 | - supports-color 848 | - typescript 849 | dev: true 850 | 851 | /@typescript-eslint/visitor-keys@6.21.0: 852 | resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} 853 | engines: {node: ^16.0.0 || >=18.0.0} 854 | dependencies: 855 | '@typescript-eslint/types': 6.21.0 856 | eslint-visitor-keys: 3.4.3 857 | dev: true 858 | 859 | /@ungap/structured-clone@1.2.0: 860 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 861 | dev: true 862 | 863 | /acorn-jsx@5.3.2(acorn@8.11.3): 864 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 865 | peerDependencies: 866 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 867 | dependencies: 868 | acorn: 8.11.3 869 | dev: true 870 | 871 | /acorn@8.11.3: 872 | resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} 873 | engines: {node: '>=0.4.0'} 874 | hasBin: true 875 | dev: true 876 | 877 | /ajv@6.12.6: 878 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 879 | dependencies: 880 | fast-deep-equal: 3.1.3 881 | fast-json-stable-stringify: 2.1.0 882 | json-schema-traverse: 0.4.1 883 | uri-js: 4.4.1 884 | dev: true 885 | 886 | /ansi-regex@5.0.1: 887 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 888 | engines: {node: '>=8'} 889 | dev: true 890 | 891 | /ansi-regex@6.0.1: 892 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 893 | engines: {node: '>=12'} 894 | dev: true 895 | 896 | /ansi-styles@4.3.0: 897 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 898 | engines: {node: '>=8'} 899 | dependencies: 900 | color-convert: 2.0.1 901 | dev: true 902 | 903 | /ansi-styles@6.2.1: 904 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 905 | engines: {node: '>=12'} 906 | dev: true 907 | 908 | /any-promise@1.3.0: 909 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 910 | dev: true 911 | 912 | /anymatch@3.1.3: 913 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 914 | engines: {node: '>= 8'} 915 | dependencies: 916 | normalize-path: 3.0.0 917 | picomatch: 2.3.1 918 | dev: true 919 | 920 | /arg@5.0.2: 921 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 922 | dev: true 923 | 924 | /argparse@2.0.1: 925 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 926 | dev: true 927 | 928 | /aria-query@5.3.0: 929 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 930 | dependencies: 931 | dequal: 2.0.3 932 | dev: true 933 | 934 | /array-union@2.1.0: 935 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 936 | engines: {node: '>=8'} 937 | dev: true 938 | 939 | /autoprefixer@10.4.17(postcss@8.4.35): 940 | resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} 941 | engines: {node: ^10 || ^12 || >=14} 942 | hasBin: true 943 | peerDependencies: 944 | postcss: ^8.1.0 945 | dependencies: 946 | browserslist: 4.23.0 947 | caniuse-lite: 1.0.30001587 948 | fraction.js: 4.3.7 949 | normalize-range: 0.1.2 950 | picocolors: 1.0.0 951 | postcss: 8.4.35 952 | postcss-value-parser: 4.2.0 953 | dev: true 954 | 955 | /axobject-query@4.0.0: 956 | resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==} 957 | dependencies: 958 | dequal: 2.0.3 959 | dev: true 960 | 961 | /balanced-match@1.0.2: 962 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 963 | dev: true 964 | 965 | /binary-extensions@2.2.0: 966 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 967 | engines: {node: '>=8'} 968 | dev: true 969 | 970 | /brace-expansion@1.1.11: 971 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 972 | dependencies: 973 | balanced-match: 1.0.2 974 | concat-map: 0.0.1 975 | dev: true 976 | 977 | /brace-expansion@2.0.1: 978 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 979 | dependencies: 980 | balanced-match: 1.0.2 981 | dev: true 982 | 983 | /braces@3.0.2: 984 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 985 | engines: {node: '>=8'} 986 | dependencies: 987 | fill-range: 7.0.1 988 | dev: true 989 | 990 | /browserslist@4.23.0: 991 | resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==} 992 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 993 | hasBin: true 994 | dependencies: 995 | caniuse-lite: 1.0.30001587 996 | electron-to-chromium: 1.4.669 997 | node-releases: 2.0.14 998 | update-browserslist-db: 1.0.13(browserslist@4.23.0) 999 | dev: true 1000 | 1001 | /buffer-crc32@0.2.13: 1002 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 1003 | dev: true 1004 | 1005 | /callsites@3.1.0: 1006 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 1007 | engines: {node: '>=6'} 1008 | dev: true 1009 | 1010 | /camelcase-css@2.0.1: 1011 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 1012 | engines: {node: '>= 6'} 1013 | 1014 | /caniuse-lite@1.0.30001587: 1015 | resolution: {integrity: sha512-HMFNotUmLXn71BQxg8cijvqxnIAofforZOwGsxyXJ0qugTdspUF4sPSJ2vhgprHCB996tIDzEq1ubumPDV8ULA==} 1016 | dev: true 1017 | 1018 | /chalk@4.1.2: 1019 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 1020 | engines: {node: '>=10'} 1021 | dependencies: 1022 | ansi-styles: 4.3.0 1023 | supports-color: 7.2.0 1024 | dev: true 1025 | 1026 | /chokidar@3.6.0: 1027 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 1028 | engines: {node: '>= 8.10.0'} 1029 | dependencies: 1030 | anymatch: 3.1.3 1031 | braces: 3.0.2 1032 | glob-parent: 5.1.2 1033 | is-binary-path: 2.1.0 1034 | is-glob: 4.0.3 1035 | normalize-path: 3.0.0 1036 | readdirp: 3.6.0 1037 | optionalDependencies: 1038 | fsevents: 2.3.3 1039 | dev: true 1040 | 1041 | /code-red@1.0.4: 1042 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 1043 | dependencies: 1044 | '@jridgewell/sourcemap-codec': 1.4.15 1045 | '@types/estree': 1.0.5 1046 | acorn: 8.11.3 1047 | estree-walker: 3.0.3 1048 | periscopic: 3.1.0 1049 | dev: true 1050 | 1051 | /color-convert@2.0.1: 1052 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1053 | engines: {node: '>=7.0.0'} 1054 | dependencies: 1055 | color-name: 1.1.4 1056 | dev: true 1057 | 1058 | /color-name@1.1.4: 1059 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1060 | dev: true 1061 | 1062 | /commander@4.1.1: 1063 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1064 | engines: {node: '>= 6'} 1065 | dev: true 1066 | 1067 | /concat-map@0.0.1: 1068 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1069 | dev: true 1070 | 1071 | /cookie@0.5.0: 1072 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 1073 | engines: {node: '>= 0.6'} 1074 | dev: false 1075 | 1076 | /cookie@0.6.0: 1077 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 1078 | engines: {node: '>= 0.6'} 1079 | dev: true 1080 | 1081 | /cross-spawn@7.0.3: 1082 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1083 | engines: {node: '>= 8'} 1084 | dependencies: 1085 | path-key: 3.1.1 1086 | shebang-command: 2.0.0 1087 | which: 2.0.2 1088 | dev: true 1089 | 1090 | /css-selector-tokenizer@0.8.0: 1091 | resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==} 1092 | dependencies: 1093 | cssesc: 3.0.0 1094 | fastparse: 1.1.2 1095 | dev: false 1096 | 1097 | /css-tree@2.3.1: 1098 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 1099 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1100 | dependencies: 1101 | mdn-data: 2.0.30 1102 | source-map-js: 1.0.2 1103 | dev: true 1104 | 1105 | /cssesc@3.0.0: 1106 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1107 | engines: {node: '>=4'} 1108 | hasBin: true 1109 | 1110 | /culori@3.3.0: 1111 | resolution: {integrity: sha512-pHJg+jbuFsCjz9iclQBqyL3B2HLCBF71BwVNujUYEvCeQMvV97R59MNK3R2+jgJ3a1fcZgI9B3vYgz8lzr/BFQ==} 1112 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1113 | dev: false 1114 | 1115 | /daisyui@4.7.2(postcss@8.4.35): 1116 | resolution: {integrity: sha512-9UCss12Zmyk/22u+JbkVrHHxOzFOyY17HuqP5LeswI4hclbj6qbjJTovdj2zRy8cCH6/n6Wh0lTLjriGnyGh0g==} 1117 | engines: {node: '>=16.9.0'} 1118 | dependencies: 1119 | css-selector-tokenizer: 0.8.0 1120 | culori: 3.3.0 1121 | picocolors: 1.0.0 1122 | postcss-js: 4.0.1(postcss@8.4.35) 1123 | transitivePeerDependencies: 1124 | - postcss 1125 | dev: false 1126 | 1127 | /debug@4.3.4: 1128 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1129 | engines: {node: '>=6.0'} 1130 | peerDependencies: 1131 | supports-color: '*' 1132 | peerDependenciesMeta: 1133 | supports-color: 1134 | optional: true 1135 | dependencies: 1136 | ms: 2.1.2 1137 | dev: true 1138 | 1139 | /deep-is@0.1.4: 1140 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1141 | dev: true 1142 | 1143 | /deepmerge@4.3.1: 1144 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1145 | engines: {node: '>=0.10.0'} 1146 | dev: true 1147 | 1148 | /dequal@2.0.3: 1149 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1150 | engines: {node: '>=6'} 1151 | dev: true 1152 | 1153 | /detect-indent@6.1.0: 1154 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 1155 | engines: {node: '>=8'} 1156 | dev: true 1157 | 1158 | /devalue@4.3.2: 1159 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 1160 | dev: true 1161 | 1162 | /didyoumean@1.2.2: 1163 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1164 | dev: true 1165 | 1166 | /dir-glob@3.0.1: 1167 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1168 | engines: {node: '>=8'} 1169 | dependencies: 1170 | path-type: 4.0.0 1171 | dev: true 1172 | 1173 | /dlv@1.1.3: 1174 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1175 | dev: true 1176 | 1177 | /doctrine@3.0.0: 1178 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1179 | engines: {node: '>=6.0.0'} 1180 | dependencies: 1181 | esutils: 2.0.3 1182 | dev: true 1183 | 1184 | /eastasianwidth@0.2.0: 1185 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 1186 | dev: true 1187 | 1188 | /electron-to-chromium@1.4.669: 1189 | resolution: {integrity: sha512-E2SmpffFPrZhBSgf8ibqanRS2mpuk3FIRDzLDwt7WFpfgJMKDHJs0hmacyP0PS1cWsq0dVkwIIzlscNaterkPg==} 1190 | dev: true 1191 | 1192 | /emoji-regex@8.0.0: 1193 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1194 | dev: true 1195 | 1196 | /emoji-regex@9.2.2: 1197 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1198 | dev: true 1199 | 1200 | /es6-promise@3.3.1: 1201 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 1202 | dev: true 1203 | 1204 | /esbuild@0.19.12: 1205 | resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 1206 | engines: {node: '>=12'} 1207 | hasBin: true 1208 | requiresBuild: true 1209 | optionalDependencies: 1210 | '@esbuild/aix-ppc64': 0.19.12 1211 | '@esbuild/android-arm': 0.19.12 1212 | '@esbuild/android-arm64': 0.19.12 1213 | '@esbuild/android-x64': 0.19.12 1214 | '@esbuild/darwin-arm64': 0.19.12 1215 | '@esbuild/darwin-x64': 0.19.12 1216 | '@esbuild/freebsd-arm64': 0.19.12 1217 | '@esbuild/freebsd-x64': 0.19.12 1218 | '@esbuild/linux-arm': 0.19.12 1219 | '@esbuild/linux-arm64': 0.19.12 1220 | '@esbuild/linux-ia32': 0.19.12 1221 | '@esbuild/linux-loong64': 0.19.12 1222 | '@esbuild/linux-mips64el': 0.19.12 1223 | '@esbuild/linux-ppc64': 0.19.12 1224 | '@esbuild/linux-riscv64': 0.19.12 1225 | '@esbuild/linux-s390x': 0.19.12 1226 | '@esbuild/linux-x64': 0.19.12 1227 | '@esbuild/netbsd-x64': 0.19.12 1228 | '@esbuild/openbsd-x64': 0.19.12 1229 | '@esbuild/sunos-x64': 0.19.12 1230 | '@esbuild/win32-arm64': 0.19.12 1231 | '@esbuild/win32-ia32': 0.19.12 1232 | '@esbuild/win32-x64': 0.19.12 1233 | dev: true 1234 | 1235 | /escalade@3.1.2: 1236 | resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} 1237 | engines: {node: '>=6'} 1238 | dev: true 1239 | 1240 | /escape-string-regexp@4.0.0: 1241 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1242 | engines: {node: '>=10'} 1243 | dev: true 1244 | 1245 | /eslint-compat-utils@0.1.2(eslint@8.56.0): 1246 | resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} 1247 | engines: {node: '>=12'} 1248 | peerDependencies: 1249 | eslint: '>=6.0.0' 1250 | dependencies: 1251 | eslint: 8.56.0 1252 | dev: true 1253 | 1254 | /eslint-config-prettier@9.1.0(eslint@8.56.0): 1255 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 1256 | hasBin: true 1257 | peerDependencies: 1258 | eslint: '>=7.0.0' 1259 | dependencies: 1260 | eslint: 8.56.0 1261 | dev: true 1262 | 1263 | /eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.10): 1264 | resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==} 1265 | engines: {node: ^14.17.0 || >=16.0.0} 1266 | peerDependencies: 1267 | eslint: ^7.0.0 || ^8.0.0-0 1268 | svelte: ^3.37.0 || ^4.0.0 1269 | peerDependenciesMeta: 1270 | svelte: 1271 | optional: true 1272 | dependencies: 1273 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1274 | '@jridgewell/sourcemap-codec': 1.4.15 1275 | debug: 4.3.4 1276 | eslint: 8.56.0 1277 | eslint-compat-utils: 0.1.2(eslint@8.56.0) 1278 | esutils: 2.0.3 1279 | known-css-properties: 0.29.0 1280 | postcss: 8.4.35 1281 | postcss-load-config: 3.1.4(postcss@8.4.35) 1282 | postcss-safe-parser: 6.0.0(postcss@8.4.35) 1283 | postcss-selector-parser: 6.0.15 1284 | semver: 7.6.0 1285 | svelte: 4.2.10 1286 | svelte-eslint-parser: 0.33.1(svelte@4.2.10) 1287 | transitivePeerDependencies: 1288 | - supports-color 1289 | - ts-node 1290 | dev: true 1291 | 1292 | /eslint-scope@7.2.2: 1293 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1294 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1295 | dependencies: 1296 | esrecurse: 4.3.0 1297 | estraverse: 5.3.0 1298 | dev: true 1299 | 1300 | /eslint-visitor-keys@3.4.3: 1301 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1302 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1303 | dev: true 1304 | 1305 | /eslint@8.56.0: 1306 | resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} 1307 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1308 | hasBin: true 1309 | dependencies: 1310 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) 1311 | '@eslint-community/regexpp': 4.10.0 1312 | '@eslint/eslintrc': 2.1.4 1313 | '@eslint/js': 8.56.0 1314 | '@humanwhocodes/config-array': 0.11.14 1315 | '@humanwhocodes/module-importer': 1.0.1 1316 | '@nodelib/fs.walk': 1.2.8 1317 | '@ungap/structured-clone': 1.2.0 1318 | ajv: 6.12.6 1319 | chalk: 4.1.2 1320 | cross-spawn: 7.0.3 1321 | debug: 4.3.4 1322 | doctrine: 3.0.0 1323 | escape-string-regexp: 4.0.0 1324 | eslint-scope: 7.2.2 1325 | eslint-visitor-keys: 3.4.3 1326 | espree: 9.6.1 1327 | esquery: 1.5.0 1328 | esutils: 2.0.3 1329 | fast-deep-equal: 3.1.3 1330 | file-entry-cache: 6.0.1 1331 | find-up: 5.0.0 1332 | glob-parent: 6.0.2 1333 | globals: 13.24.0 1334 | graphemer: 1.4.0 1335 | ignore: 5.3.1 1336 | imurmurhash: 0.1.4 1337 | is-glob: 4.0.3 1338 | is-path-inside: 3.0.3 1339 | js-yaml: 4.1.0 1340 | json-stable-stringify-without-jsonify: 1.0.1 1341 | levn: 0.4.1 1342 | lodash.merge: 4.6.2 1343 | minimatch: 3.1.2 1344 | natural-compare: 1.4.0 1345 | optionator: 0.9.3 1346 | strip-ansi: 6.0.1 1347 | text-table: 0.2.0 1348 | transitivePeerDependencies: 1349 | - supports-color 1350 | dev: true 1351 | 1352 | /esm-env@1.0.0: 1353 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 1354 | dev: true 1355 | 1356 | /espree@9.6.1: 1357 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1358 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1359 | dependencies: 1360 | acorn: 8.11.3 1361 | acorn-jsx: 5.3.2(acorn@8.11.3) 1362 | eslint-visitor-keys: 3.4.3 1363 | dev: true 1364 | 1365 | /esquery@1.5.0: 1366 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1367 | engines: {node: '>=0.10'} 1368 | dependencies: 1369 | estraverse: 5.3.0 1370 | dev: true 1371 | 1372 | /esrecurse@4.3.0: 1373 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1374 | engines: {node: '>=4.0'} 1375 | dependencies: 1376 | estraverse: 5.3.0 1377 | dev: true 1378 | 1379 | /estraverse@5.3.0: 1380 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1381 | engines: {node: '>=4.0'} 1382 | dev: true 1383 | 1384 | /estree-walker@3.0.3: 1385 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1386 | dependencies: 1387 | '@types/estree': 1.0.5 1388 | dev: true 1389 | 1390 | /esutils@2.0.3: 1391 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1392 | engines: {node: '>=0.10.0'} 1393 | dev: true 1394 | 1395 | /fast-deep-equal@3.1.3: 1396 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1397 | dev: true 1398 | 1399 | /fast-glob@3.3.2: 1400 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1401 | engines: {node: '>=8.6.0'} 1402 | dependencies: 1403 | '@nodelib/fs.stat': 2.0.5 1404 | '@nodelib/fs.walk': 1.2.8 1405 | glob-parent: 5.1.2 1406 | merge2: 1.4.1 1407 | micromatch: 4.0.5 1408 | dev: true 1409 | 1410 | /fast-json-stable-stringify@2.1.0: 1411 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1412 | dev: true 1413 | 1414 | /fast-levenshtein@2.0.6: 1415 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1416 | dev: true 1417 | 1418 | /fastparse@1.1.2: 1419 | resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==} 1420 | dev: false 1421 | 1422 | /fastq@1.17.1: 1423 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 1424 | dependencies: 1425 | reusify: 1.0.4 1426 | dev: true 1427 | 1428 | /file-entry-cache@6.0.1: 1429 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1430 | engines: {node: ^10.12.0 || >=12.0.0} 1431 | dependencies: 1432 | flat-cache: 3.2.0 1433 | dev: true 1434 | 1435 | /fill-range@7.0.1: 1436 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1437 | engines: {node: '>=8'} 1438 | dependencies: 1439 | to-regex-range: 5.0.1 1440 | dev: true 1441 | 1442 | /find-up@5.0.0: 1443 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1444 | engines: {node: '>=10'} 1445 | dependencies: 1446 | locate-path: 6.0.0 1447 | path-exists: 4.0.0 1448 | dev: true 1449 | 1450 | /flat-cache@3.2.0: 1451 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1452 | engines: {node: ^10.12.0 || >=12.0.0} 1453 | dependencies: 1454 | flatted: 3.2.9 1455 | keyv: 4.5.4 1456 | rimraf: 3.0.2 1457 | dev: true 1458 | 1459 | /flatted@3.2.9: 1460 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1461 | dev: true 1462 | 1463 | /foreground-child@3.1.1: 1464 | resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} 1465 | engines: {node: '>=14'} 1466 | dependencies: 1467 | cross-spawn: 7.0.3 1468 | signal-exit: 4.1.0 1469 | dev: true 1470 | 1471 | /fraction.js@4.3.7: 1472 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1473 | dev: true 1474 | 1475 | /fs.realpath@1.0.0: 1476 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1477 | dev: true 1478 | 1479 | /fsevents@2.3.3: 1480 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1481 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1482 | os: [darwin] 1483 | requiresBuild: true 1484 | dev: true 1485 | optional: true 1486 | 1487 | /function-bind@1.1.2: 1488 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1489 | dev: true 1490 | 1491 | /glob-parent@5.1.2: 1492 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1493 | engines: {node: '>= 6'} 1494 | dependencies: 1495 | is-glob: 4.0.3 1496 | dev: true 1497 | 1498 | /glob-parent@6.0.2: 1499 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1500 | engines: {node: '>=10.13.0'} 1501 | dependencies: 1502 | is-glob: 4.0.3 1503 | dev: true 1504 | 1505 | /glob@10.3.10: 1506 | resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} 1507 | engines: {node: '>=16 || 14 >=14.17'} 1508 | hasBin: true 1509 | dependencies: 1510 | foreground-child: 3.1.1 1511 | jackspeak: 2.3.6 1512 | minimatch: 9.0.3 1513 | minipass: 7.0.4 1514 | path-scurry: 1.10.1 1515 | dev: true 1516 | 1517 | /glob@7.2.3: 1518 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1519 | dependencies: 1520 | fs.realpath: 1.0.0 1521 | inflight: 1.0.6 1522 | inherits: 2.0.4 1523 | minimatch: 3.1.2 1524 | once: 1.4.0 1525 | path-is-absolute: 1.0.1 1526 | dev: true 1527 | 1528 | /globals@13.24.0: 1529 | resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} 1530 | engines: {node: '>=8'} 1531 | dependencies: 1532 | type-fest: 0.20.2 1533 | dev: true 1534 | 1535 | /globalyzer@0.1.0: 1536 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 1537 | dev: true 1538 | 1539 | /globby@11.1.0: 1540 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1541 | engines: {node: '>=10'} 1542 | dependencies: 1543 | array-union: 2.1.0 1544 | dir-glob: 3.0.1 1545 | fast-glob: 3.3.2 1546 | ignore: 5.3.1 1547 | merge2: 1.4.1 1548 | slash: 3.0.0 1549 | dev: true 1550 | 1551 | /globrex@0.1.2: 1552 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 1553 | dev: true 1554 | 1555 | /graceful-fs@4.2.11: 1556 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1557 | dev: true 1558 | 1559 | /graphemer@1.4.0: 1560 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1561 | dev: true 1562 | 1563 | /has-flag@4.0.0: 1564 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1565 | engines: {node: '>=8'} 1566 | dev: true 1567 | 1568 | /hasown@2.0.1: 1569 | resolution: {integrity: sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==} 1570 | engines: {node: '>= 0.4'} 1571 | dependencies: 1572 | function-bind: 1.1.2 1573 | dev: true 1574 | 1575 | /ignore@5.3.1: 1576 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 1577 | engines: {node: '>= 4'} 1578 | dev: true 1579 | 1580 | /import-fresh@3.3.0: 1581 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1582 | engines: {node: '>=6'} 1583 | dependencies: 1584 | parent-module: 1.0.1 1585 | resolve-from: 4.0.0 1586 | dev: true 1587 | 1588 | /import-meta-resolve@4.0.0: 1589 | resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} 1590 | dev: true 1591 | 1592 | /imurmurhash@0.1.4: 1593 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1594 | engines: {node: '>=0.8.19'} 1595 | dev: true 1596 | 1597 | /inflight@1.0.6: 1598 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1599 | dependencies: 1600 | once: 1.4.0 1601 | wrappy: 1.0.2 1602 | dev: true 1603 | 1604 | /inherits@2.0.4: 1605 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1606 | dev: true 1607 | 1608 | /is-binary-path@2.1.0: 1609 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1610 | engines: {node: '>=8'} 1611 | dependencies: 1612 | binary-extensions: 2.2.0 1613 | dev: true 1614 | 1615 | /is-core-module@2.13.1: 1616 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 1617 | dependencies: 1618 | hasown: 2.0.1 1619 | dev: true 1620 | 1621 | /is-extglob@2.1.1: 1622 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1623 | engines: {node: '>=0.10.0'} 1624 | dev: true 1625 | 1626 | /is-fullwidth-code-point@3.0.0: 1627 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1628 | engines: {node: '>=8'} 1629 | dev: true 1630 | 1631 | /is-glob@4.0.3: 1632 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1633 | engines: {node: '>=0.10.0'} 1634 | dependencies: 1635 | is-extglob: 2.1.1 1636 | dev: true 1637 | 1638 | /is-number@7.0.0: 1639 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1640 | engines: {node: '>=0.12.0'} 1641 | dev: true 1642 | 1643 | /is-path-inside@3.0.3: 1644 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 1645 | engines: {node: '>=8'} 1646 | dev: true 1647 | 1648 | /is-reference@3.0.2: 1649 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 1650 | dependencies: 1651 | '@types/estree': 1.0.5 1652 | dev: true 1653 | 1654 | /isexe@2.0.0: 1655 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1656 | dev: true 1657 | 1658 | /jackspeak@2.3.6: 1659 | resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} 1660 | engines: {node: '>=14'} 1661 | dependencies: 1662 | '@isaacs/cliui': 8.0.2 1663 | optionalDependencies: 1664 | '@pkgjs/parseargs': 0.11.0 1665 | dev: true 1666 | 1667 | /jiti@1.21.0: 1668 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 1669 | hasBin: true 1670 | dev: true 1671 | 1672 | /js-yaml@4.1.0: 1673 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 1674 | hasBin: true 1675 | dependencies: 1676 | argparse: 2.0.1 1677 | dev: true 1678 | 1679 | /json-buffer@3.0.1: 1680 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 1681 | dev: true 1682 | 1683 | /json-schema-traverse@0.4.1: 1684 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 1685 | dev: true 1686 | 1687 | /json-stable-stringify-without-jsonify@1.0.1: 1688 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 1689 | dev: true 1690 | 1691 | /keyv@4.5.4: 1692 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 1693 | dependencies: 1694 | json-buffer: 3.0.1 1695 | dev: true 1696 | 1697 | /kleur@4.1.5: 1698 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1699 | engines: {node: '>=6'} 1700 | dev: true 1701 | 1702 | /known-css-properties@0.29.0: 1703 | resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} 1704 | dev: true 1705 | 1706 | /levn@0.4.1: 1707 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 1708 | engines: {node: '>= 0.8.0'} 1709 | dependencies: 1710 | prelude-ls: 1.2.1 1711 | type-check: 0.4.0 1712 | dev: true 1713 | 1714 | /lilconfig@2.1.0: 1715 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1716 | engines: {node: '>=10'} 1717 | dev: true 1718 | 1719 | /lilconfig@3.1.0: 1720 | resolution: {integrity: sha512-p3cz0JV5vw/XeouBU3Ldnp+ZkBjE+n8ydJ4mcwBrOiXXPqNlrzGBqWs9X4MWF7f+iKUBu794Y8Hh8yawiJbCjw==} 1721 | engines: {node: '>=14'} 1722 | dev: true 1723 | 1724 | /lines-and-columns@1.2.4: 1725 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1726 | dev: true 1727 | 1728 | /locate-character@3.0.0: 1729 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1730 | dev: true 1731 | 1732 | /locate-path@6.0.0: 1733 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 1734 | engines: {node: '>=10'} 1735 | dependencies: 1736 | p-locate: 5.0.0 1737 | dev: true 1738 | 1739 | /lodash.merge@4.6.2: 1740 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 1741 | dev: true 1742 | 1743 | /lru-cache@10.2.0: 1744 | resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} 1745 | engines: {node: 14 || >=16.14} 1746 | dev: true 1747 | 1748 | /lru-cache@6.0.0: 1749 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1750 | engines: {node: '>=10'} 1751 | dependencies: 1752 | yallist: 4.0.0 1753 | dev: true 1754 | 1755 | /magic-string@0.30.7: 1756 | resolution: {integrity: sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==} 1757 | engines: {node: '>=12'} 1758 | dependencies: 1759 | '@jridgewell/sourcemap-codec': 1.4.15 1760 | dev: true 1761 | 1762 | /mdn-data@2.0.30: 1763 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 1764 | dev: true 1765 | 1766 | /merge2@1.4.1: 1767 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1768 | engines: {node: '>= 8'} 1769 | dev: true 1770 | 1771 | /micromatch@4.0.5: 1772 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1773 | engines: {node: '>=8.6'} 1774 | dependencies: 1775 | braces: 3.0.2 1776 | picomatch: 2.3.1 1777 | dev: true 1778 | 1779 | /min-indent@1.0.1: 1780 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1781 | engines: {node: '>=4'} 1782 | dev: true 1783 | 1784 | /minimatch@3.1.2: 1785 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1786 | dependencies: 1787 | brace-expansion: 1.1.11 1788 | dev: true 1789 | 1790 | /minimatch@9.0.3: 1791 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} 1792 | engines: {node: '>=16 || 14 >=14.17'} 1793 | dependencies: 1794 | brace-expansion: 2.0.1 1795 | dev: true 1796 | 1797 | /minimist@1.2.8: 1798 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1799 | dev: true 1800 | 1801 | /minipass@7.0.4: 1802 | resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} 1803 | engines: {node: '>=16 || 14 >=14.17'} 1804 | dev: true 1805 | 1806 | /mkdirp@0.5.6: 1807 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1808 | hasBin: true 1809 | dependencies: 1810 | minimist: 1.2.8 1811 | dev: true 1812 | 1813 | /mri@1.2.0: 1814 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1815 | engines: {node: '>=4'} 1816 | dev: true 1817 | 1818 | /mrmime@2.0.0: 1819 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 1820 | engines: {node: '>=10'} 1821 | dev: true 1822 | 1823 | /ms@2.1.2: 1824 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1825 | dev: true 1826 | 1827 | /mz@2.7.0: 1828 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1829 | dependencies: 1830 | any-promise: 1.3.0 1831 | object-assign: 4.1.1 1832 | thenify-all: 1.6.0 1833 | dev: true 1834 | 1835 | /nanoid@3.3.7: 1836 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1837 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1838 | hasBin: true 1839 | 1840 | /natural-compare@1.4.0: 1841 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1842 | dev: true 1843 | 1844 | /node-releases@2.0.14: 1845 | resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} 1846 | dev: true 1847 | 1848 | /normalize-path@3.0.0: 1849 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1850 | engines: {node: '>=0.10.0'} 1851 | dev: true 1852 | 1853 | /normalize-range@0.1.2: 1854 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1855 | engines: {node: '>=0.10.0'} 1856 | dev: true 1857 | 1858 | /object-assign@4.1.1: 1859 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1860 | engines: {node: '>=0.10.0'} 1861 | dev: true 1862 | 1863 | /object-hash@3.0.0: 1864 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1865 | engines: {node: '>= 6'} 1866 | dev: true 1867 | 1868 | /once@1.4.0: 1869 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1870 | dependencies: 1871 | wrappy: 1.0.2 1872 | dev: true 1873 | 1874 | /optionator@0.9.3: 1875 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 1876 | engines: {node: '>= 0.8.0'} 1877 | dependencies: 1878 | '@aashutoshrathi/word-wrap': 1.2.6 1879 | deep-is: 0.1.4 1880 | fast-levenshtein: 2.0.6 1881 | levn: 0.4.1 1882 | prelude-ls: 1.2.1 1883 | type-check: 0.4.0 1884 | dev: true 1885 | 1886 | /p-limit@3.1.0: 1887 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1888 | engines: {node: '>=10'} 1889 | dependencies: 1890 | yocto-queue: 0.1.0 1891 | dev: true 1892 | 1893 | /p-locate@5.0.0: 1894 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 1895 | engines: {node: '>=10'} 1896 | dependencies: 1897 | p-limit: 3.1.0 1898 | dev: true 1899 | 1900 | /parent-module@1.0.1: 1901 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1902 | engines: {node: '>=6'} 1903 | dependencies: 1904 | callsites: 3.1.0 1905 | dev: true 1906 | 1907 | /path-exists@4.0.0: 1908 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1909 | engines: {node: '>=8'} 1910 | dev: true 1911 | 1912 | /path-is-absolute@1.0.1: 1913 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1914 | engines: {node: '>=0.10.0'} 1915 | dev: true 1916 | 1917 | /path-key@3.1.1: 1918 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1919 | engines: {node: '>=8'} 1920 | dev: true 1921 | 1922 | /path-parse@1.0.7: 1923 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1924 | dev: true 1925 | 1926 | /path-scurry@1.10.1: 1927 | resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} 1928 | engines: {node: '>=16 || 14 >=14.17'} 1929 | dependencies: 1930 | lru-cache: 10.2.0 1931 | minipass: 7.0.4 1932 | dev: true 1933 | 1934 | /path-type@4.0.0: 1935 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1936 | engines: {node: '>=8'} 1937 | dev: true 1938 | 1939 | /periscopic@3.1.0: 1940 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 1941 | dependencies: 1942 | '@types/estree': 1.0.5 1943 | estree-walker: 3.0.3 1944 | is-reference: 3.0.2 1945 | dev: true 1946 | 1947 | /picocolors@1.0.0: 1948 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1949 | 1950 | /picomatch@2.3.1: 1951 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1952 | engines: {node: '>=8.6'} 1953 | dev: true 1954 | 1955 | /pify@2.3.0: 1956 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1957 | engines: {node: '>=0.10.0'} 1958 | dev: true 1959 | 1960 | /pirates@4.0.6: 1961 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1962 | engines: {node: '>= 6'} 1963 | dev: true 1964 | 1965 | /postcss-import@15.1.0(postcss@8.4.35): 1966 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1967 | engines: {node: '>=14.0.0'} 1968 | peerDependencies: 1969 | postcss: ^8.0.0 1970 | dependencies: 1971 | postcss: 8.4.35 1972 | postcss-value-parser: 4.2.0 1973 | read-cache: 1.0.0 1974 | resolve: 1.22.8 1975 | dev: true 1976 | 1977 | /postcss-js@4.0.1(postcss@8.4.35): 1978 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1979 | engines: {node: ^12 || ^14 || >= 16} 1980 | peerDependencies: 1981 | postcss: ^8.4.21 1982 | dependencies: 1983 | camelcase-css: 2.0.1 1984 | postcss: 8.4.35 1985 | 1986 | /postcss-load-config@3.1.4(postcss@8.4.35): 1987 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1988 | engines: {node: '>= 10'} 1989 | peerDependencies: 1990 | postcss: '>=8.0.9' 1991 | ts-node: '>=9.0.0' 1992 | peerDependenciesMeta: 1993 | postcss: 1994 | optional: true 1995 | ts-node: 1996 | optional: true 1997 | dependencies: 1998 | lilconfig: 2.1.0 1999 | postcss: 8.4.35 2000 | yaml: 1.10.2 2001 | dev: true 2002 | 2003 | /postcss-load-config@4.0.2(postcss@8.4.35): 2004 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 2005 | engines: {node: '>= 14'} 2006 | peerDependencies: 2007 | postcss: '>=8.0.9' 2008 | ts-node: '>=9.0.0' 2009 | peerDependenciesMeta: 2010 | postcss: 2011 | optional: true 2012 | ts-node: 2013 | optional: true 2014 | dependencies: 2015 | lilconfig: 3.1.0 2016 | postcss: 8.4.35 2017 | yaml: 2.3.4 2018 | dev: true 2019 | 2020 | /postcss-load-config@5.0.3(postcss@8.4.35): 2021 | resolution: {integrity: sha512-90pBBI5apUVruIEdCxZic93Wm+i9fTrp7TXbgdUCH+/L+2WnfpITSpq5dFU/IPvbv7aNiMlQISpUkAm3fEcvgQ==} 2022 | engines: {node: '>= 18'} 2023 | peerDependencies: 2024 | jiti: '>=1.21.0' 2025 | postcss: '>=8.0.9' 2026 | peerDependenciesMeta: 2027 | jiti: 2028 | optional: true 2029 | postcss: 2030 | optional: true 2031 | dependencies: 2032 | lilconfig: 3.1.0 2033 | postcss: 8.4.35 2034 | yaml: 2.3.4 2035 | dev: true 2036 | 2037 | /postcss-nested@6.0.1(postcss@8.4.35): 2038 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 2039 | engines: {node: '>=12.0'} 2040 | peerDependencies: 2041 | postcss: ^8.2.14 2042 | dependencies: 2043 | postcss: 8.4.35 2044 | postcss-selector-parser: 6.0.15 2045 | dev: true 2046 | 2047 | /postcss-safe-parser@6.0.0(postcss@8.4.35): 2048 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} 2049 | engines: {node: '>=12.0'} 2050 | peerDependencies: 2051 | postcss: ^8.3.3 2052 | dependencies: 2053 | postcss: 8.4.35 2054 | dev: true 2055 | 2056 | /postcss-scss@4.0.9(postcss@8.4.35): 2057 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 2058 | engines: {node: '>=12.0'} 2059 | peerDependencies: 2060 | postcss: ^8.4.29 2061 | dependencies: 2062 | postcss: 8.4.35 2063 | dev: true 2064 | 2065 | /postcss-selector-parser@6.0.15: 2066 | resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} 2067 | engines: {node: '>=4'} 2068 | dependencies: 2069 | cssesc: 3.0.0 2070 | util-deprecate: 1.0.2 2071 | dev: true 2072 | 2073 | /postcss-value-parser@4.2.0: 2074 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 2075 | dev: true 2076 | 2077 | /postcss@8.4.35: 2078 | resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} 2079 | engines: {node: ^10 || ^12 || >=14} 2080 | dependencies: 2081 | nanoid: 3.3.7 2082 | picocolors: 1.0.0 2083 | source-map-js: 1.0.2 2084 | 2085 | /prelude-ls@1.2.1: 2086 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 2087 | engines: {node: '>= 0.8.0'} 2088 | dev: true 2089 | 2090 | /prettier-plugin-svelte@3.2.1(prettier@3.2.5)(svelte@4.2.10): 2091 | resolution: {integrity: sha512-ENAPbIxASf2R79IZwgkG5sBdeNA9kLRlXVvKKmTXh79zWTy0KKoT86XO2pHrTitUPINd+iXWy12MRmgzKGVckA==} 2092 | peerDependencies: 2093 | prettier: ^3.0.0 2094 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 2095 | dependencies: 2096 | prettier: 3.2.5 2097 | svelte: 4.2.10 2098 | dev: true 2099 | 2100 | /prettier-plugin-tailwindcss@0.5.11(prettier-plugin-svelte@3.2.1)(prettier@3.2.5): 2101 | resolution: {integrity: sha512-AvI/DNyMctyyxGOjyePgi/gqj5hJYClZ1avtQvLlqMT3uDZkRbi4HhGUpok3DRzv9z7Lti85Kdj3s3/1CeNI0w==} 2102 | engines: {node: '>=14.21.3'} 2103 | peerDependencies: 2104 | '@ianvs/prettier-plugin-sort-imports': '*' 2105 | '@prettier/plugin-pug': '*' 2106 | '@shopify/prettier-plugin-liquid': '*' 2107 | '@trivago/prettier-plugin-sort-imports': '*' 2108 | prettier: ^3.0 2109 | prettier-plugin-astro: '*' 2110 | prettier-plugin-css-order: '*' 2111 | prettier-plugin-import-sort: '*' 2112 | prettier-plugin-jsdoc: '*' 2113 | prettier-plugin-marko: '*' 2114 | prettier-plugin-organize-attributes: '*' 2115 | prettier-plugin-organize-imports: '*' 2116 | prettier-plugin-style-order: '*' 2117 | prettier-plugin-svelte: '*' 2118 | prettier-plugin-twig-melody: '*' 2119 | peerDependenciesMeta: 2120 | '@ianvs/prettier-plugin-sort-imports': 2121 | optional: true 2122 | '@prettier/plugin-pug': 2123 | optional: true 2124 | '@shopify/prettier-plugin-liquid': 2125 | optional: true 2126 | '@trivago/prettier-plugin-sort-imports': 2127 | optional: true 2128 | prettier-plugin-astro: 2129 | optional: true 2130 | prettier-plugin-css-order: 2131 | optional: true 2132 | prettier-plugin-import-sort: 2133 | optional: true 2134 | prettier-plugin-jsdoc: 2135 | optional: true 2136 | prettier-plugin-marko: 2137 | optional: true 2138 | prettier-plugin-organize-attributes: 2139 | optional: true 2140 | prettier-plugin-organize-imports: 2141 | optional: true 2142 | prettier-plugin-style-order: 2143 | optional: true 2144 | prettier-plugin-svelte: 2145 | optional: true 2146 | prettier-plugin-twig-melody: 2147 | optional: true 2148 | dependencies: 2149 | prettier: 3.2.5 2150 | prettier-plugin-svelte: 3.2.1(prettier@3.2.5)(svelte@4.2.10) 2151 | dev: true 2152 | 2153 | /prettier@3.2.5: 2154 | resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} 2155 | engines: {node: '>=14'} 2156 | hasBin: true 2157 | dev: true 2158 | 2159 | /punycode@2.3.1: 2160 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 2161 | engines: {node: '>=6'} 2162 | dev: true 2163 | 2164 | /queue-microtask@1.2.3: 2165 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 2166 | dev: true 2167 | 2168 | /ramda@0.29.1: 2169 | resolution: {integrity: sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==} 2170 | dev: false 2171 | 2172 | /read-cache@1.0.0: 2173 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 2174 | dependencies: 2175 | pify: 2.3.0 2176 | dev: true 2177 | 2178 | /readdirp@3.6.0: 2179 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 2180 | engines: {node: '>=8.10.0'} 2181 | dependencies: 2182 | picomatch: 2.3.1 2183 | dev: true 2184 | 2185 | /resolve-from@4.0.0: 2186 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 2187 | engines: {node: '>=4'} 2188 | dev: true 2189 | 2190 | /resolve@1.22.8: 2191 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 2192 | hasBin: true 2193 | dependencies: 2194 | is-core-module: 2.13.1 2195 | path-parse: 1.0.7 2196 | supports-preserve-symlinks-flag: 1.0.0 2197 | dev: true 2198 | 2199 | /reusify@1.0.4: 2200 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 2201 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 2202 | dev: true 2203 | 2204 | /rimraf@2.7.1: 2205 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 2206 | hasBin: true 2207 | dependencies: 2208 | glob: 7.2.3 2209 | dev: true 2210 | 2211 | /rimraf@3.0.2: 2212 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 2213 | hasBin: true 2214 | dependencies: 2215 | glob: 7.2.3 2216 | dev: true 2217 | 2218 | /rollup@4.10.0: 2219 | resolution: {integrity: sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==} 2220 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 2221 | hasBin: true 2222 | dependencies: 2223 | '@types/estree': 1.0.5 2224 | optionalDependencies: 2225 | '@rollup/rollup-android-arm-eabi': 4.10.0 2226 | '@rollup/rollup-android-arm64': 4.10.0 2227 | '@rollup/rollup-darwin-arm64': 4.10.0 2228 | '@rollup/rollup-darwin-x64': 4.10.0 2229 | '@rollup/rollup-linux-arm-gnueabihf': 4.10.0 2230 | '@rollup/rollup-linux-arm64-gnu': 4.10.0 2231 | '@rollup/rollup-linux-arm64-musl': 4.10.0 2232 | '@rollup/rollup-linux-riscv64-gnu': 4.10.0 2233 | '@rollup/rollup-linux-x64-gnu': 4.10.0 2234 | '@rollup/rollup-linux-x64-musl': 4.10.0 2235 | '@rollup/rollup-win32-arm64-msvc': 4.10.0 2236 | '@rollup/rollup-win32-ia32-msvc': 4.10.0 2237 | '@rollup/rollup-win32-x64-msvc': 4.10.0 2238 | fsevents: 2.3.3 2239 | dev: true 2240 | 2241 | /run-parallel@1.2.0: 2242 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 2243 | dependencies: 2244 | queue-microtask: 1.2.3 2245 | dev: true 2246 | 2247 | /sade@1.8.1: 2248 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 2249 | engines: {node: '>=6'} 2250 | dependencies: 2251 | mri: 1.2.0 2252 | dev: true 2253 | 2254 | /sander@0.5.1: 2255 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 2256 | dependencies: 2257 | es6-promise: 3.3.1 2258 | graceful-fs: 4.2.11 2259 | mkdirp: 0.5.6 2260 | rimraf: 2.7.1 2261 | dev: true 2262 | 2263 | /semver@7.6.0: 2264 | resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} 2265 | engines: {node: '>=10'} 2266 | hasBin: true 2267 | dependencies: 2268 | lru-cache: 6.0.0 2269 | dev: true 2270 | 2271 | /set-cookie-parser@2.6.0: 2272 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 2273 | dev: true 2274 | 2275 | /shebang-command@2.0.0: 2276 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 2277 | engines: {node: '>=8'} 2278 | dependencies: 2279 | shebang-regex: 3.0.0 2280 | dev: true 2281 | 2282 | /shebang-regex@3.0.0: 2283 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2284 | engines: {node: '>=8'} 2285 | dev: true 2286 | 2287 | /signal-exit@4.1.0: 2288 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 2289 | engines: {node: '>=14'} 2290 | dev: true 2291 | 2292 | /sirv@2.0.4: 2293 | resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} 2294 | engines: {node: '>= 10'} 2295 | dependencies: 2296 | '@polka/url': 1.0.0-next.24 2297 | mrmime: 2.0.0 2298 | totalist: 3.0.1 2299 | dev: true 2300 | 2301 | /slash@3.0.0: 2302 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2303 | engines: {node: '>=8'} 2304 | dev: true 2305 | 2306 | /sorcery@0.11.0: 2307 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 2308 | hasBin: true 2309 | dependencies: 2310 | '@jridgewell/sourcemap-codec': 1.4.15 2311 | buffer-crc32: 0.2.13 2312 | minimist: 1.2.8 2313 | sander: 0.5.1 2314 | dev: true 2315 | 2316 | /source-map-js@1.0.2: 2317 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 2318 | engines: {node: '>=0.10.0'} 2319 | 2320 | /string-width@4.2.3: 2321 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2322 | engines: {node: '>=8'} 2323 | dependencies: 2324 | emoji-regex: 8.0.0 2325 | is-fullwidth-code-point: 3.0.0 2326 | strip-ansi: 6.0.1 2327 | dev: true 2328 | 2329 | /string-width@5.1.2: 2330 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 2331 | engines: {node: '>=12'} 2332 | dependencies: 2333 | eastasianwidth: 0.2.0 2334 | emoji-regex: 9.2.2 2335 | strip-ansi: 7.1.0 2336 | dev: true 2337 | 2338 | /strip-ansi@6.0.1: 2339 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2340 | engines: {node: '>=8'} 2341 | dependencies: 2342 | ansi-regex: 5.0.1 2343 | dev: true 2344 | 2345 | /strip-ansi@7.1.0: 2346 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 2347 | engines: {node: '>=12'} 2348 | dependencies: 2349 | ansi-regex: 6.0.1 2350 | dev: true 2351 | 2352 | /strip-indent@3.0.0: 2353 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 2354 | engines: {node: '>=8'} 2355 | dependencies: 2356 | min-indent: 1.0.1 2357 | dev: true 2358 | 2359 | /strip-json-comments@3.1.1: 2360 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2361 | engines: {node: '>=8'} 2362 | dev: true 2363 | 2364 | /sucrase@3.35.0: 2365 | resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 2366 | engines: {node: '>=16 || 14 >=14.17'} 2367 | hasBin: true 2368 | dependencies: 2369 | '@jridgewell/gen-mapping': 0.3.3 2370 | commander: 4.1.1 2371 | glob: 10.3.10 2372 | lines-and-columns: 1.2.4 2373 | mz: 2.7.0 2374 | pirates: 4.0.6 2375 | ts-interface-checker: 0.1.13 2376 | dev: true 2377 | 2378 | /supports-color@7.2.0: 2379 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2380 | engines: {node: '>=8'} 2381 | dependencies: 2382 | has-flag: 4.0.0 2383 | dev: true 2384 | 2385 | /supports-preserve-symlinks-flag@1.0.0: 2386 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2387 | engines: {node: '>= 0.4'} 2388 | dev: true 2389 | 2390 | /svelte-check@3.6.4(postcss-load-config@5.0.3)(postcss@8.4.35)(svelte@4.2.10): 2391 | resolution: {integrity: sha512-mY/dqucqm46p72M8yZmn81WPZx9mN6uuw8UVfR3ZKQeLxQg5HDGO3HHm5AZuWZPYNMLJ+TRMn+TeN53HfQ/vsw==} 2392 | hasBin: true 2393 | peerDependencies: 2394 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 2395 | dependencies: 2396 | '@jridgewell/trace-mapping': 0.3.22 2397 | chokidar: 3.6.0 2398 | fast-glob: 3.3.2 2399 | import-fresh: 3.3.0 2400 | picocolors: 1.0.0 2401 | sade: 1.8.1 2402 | svelte: 4.2.10 2403 | svelte-preprocess: 5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3) 2404 | typescript: 5.3.3 2405 | transitivePeerDependencies: 2406 | - '@babel/core' 2407 | - coffeescript 2408 | - less 2409 | - postcss 2410 | - postcss-load-config 2411 | - pug 2412 | - sass 2413 | - stylus 2414 | - sugarss 2415 | dev: true 2416 | 2417 | /svelte-eslint-parser@0.33.1(svelte@4.2.10): 2418 | resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==} 2419 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2420 | peerDependencies: 2421 | svelte: ^3.37.0 || ^4.0.0 2422 | peerDependenciesMeta: 2423 | svelte: 2424 | optional: true 2425 | dependencies: 2426 | eslint-scope: 7.2.2 2427 | eslint-visitor-keys: 3.4.3 2428 | espree: 9.6.1 2429 | postcss: 8.4.35 2430 | postcss-scss: 4.0.9(postcss@8.4.35) 2431 | svelte: 4.2.10 2432 | dev: true 2433 | 2434 | /svelte-hmr@0.15.3(svelte@4.2.10): 2435 | resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} 2436 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 2437 | peerDependencies: 2438 | svelte: ^3.19.0 || ^4.0.0 2439 | dependencies: 2440 | svelte: 4.2.10 2441 | dev: true 2442 | 2443 | /svelte-preprocess@5.1.3(postcss-load-config@5.0.3)(postcss@8.4.35)(svelte@4.2.10)(typescript@5.3.3): 2444 | resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==} 2445 | engines: {node: '>= 16.0.0', pnpm: ^8.0.0} 2446 | requiresBuild: true 2447 | peerDependencies: 2448 | '@babel/core': ^7.10.2 2449 | coffeescript: ^2.5.1 2450 | less: ^3.11.3 || ^4.0.0 2451 | postcss: ^7 || ^8 2452 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 2453 | pug: ^3.0.0 2454 | sass: ^1.26.8 2455 | stylus: ^0.55.0 2456 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 2457 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 2458 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 2459 | peerDependenciesMeta: 2460 | '@babel/core': 2461 | optional: true 2462 | coffeescript: 2463 | optional: true 2464 | less: 2465 | optional: true 2466 | postcss: 2467 | optional: true 2468 | postcss-load-config: 2469 | optional: true 2470 | pug: 2471 | optional: true 2472 | sass: 2473 | optional: true 2474 | stylus: 2475 | optional: true 2476 | sugarss: 2477 | optional: true 2478 | typescript: 2479 | optional: true 2480 | dependencies: 2481 | '@types/pug': 2.0.10 2482 | detect-indent: 6.1.0 2483 | magic-string: 0.30.7 2484 | postcss: 8.4.35 2485 | postcss-load-config: 5.0.3(postcss@8.4.35) 2486 | sorcery: 0.11.0 2487 | strip-indent: 3.0.0 2488 | svelte: 4.2.10 2489 | typescript: 5.3.3 2490 | dev: true 2491 | 2492 | /svelte@4.2.10: 2493 | resolution: {integrity: sha512-Ep06yCaCdgG1Mafb/Rx8sJ1QS3RW2I2BxGp2Ui9LBHSZ2/tO/aGLc5WqPjgiAP6KAnLJGaIr/zzwQlOo1b8MxA==} 2494 | engines: {node: '>=16'} 2495 | dependencies: 2496 | '@ampproject/remapping': 2.2.1 2497 | '@jridgewell/sourcemap-codec': 1.4.15 2498 | '@jridgewell/trace-mapping': 0.3.22 2499 | '@types/estree': 1.0.5 2500 | acorn: 8.11.3 2501 | aria-query: 5.3.0 2502 | axobject-query: 4.0.0 2503 | code-red: 1.0.4 2504 | css-tree: 2.3.1 2505 | estree-walker: 3.0.3 2506 | is-reference: 3.0.2 2507 | locate-character: 3.0.0 2508 | magic-string: 0.30.7 2509 | periscopic: 3.1.0 2510 | dev: true 2511 | 2512 | /tailwindcss@3.4.1: 2513 | resolution: {integrity: sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==} 2514 | engines: {node: '>=14.0.0'} 2515 | hasBin: true 2516 | dependencies: 2517 | '@alloc/quick-lru': 5.2.0 2518 | arg: 5.0.2 2519 | chokidar: 3.6.0 2520 | didyoumean: 1.2.2 2521 | dlv: 1.1.3 2522 | fast-glob: 3.3.2 2523 | glob-parent: 6.0.2 2524 | is-glob: 4.0.3 2525 | jiti: 1.21.0 2526 | lilconfig: 2.1.0 2527 | micromatch: 4.0.5 2528 | normalize-path: 3.0.0 2529 | object-hash: 3.0.0 2530 | picocolors: 1.0.0 2531 | postcss: 8.4.35 2532 | postcss-import: 15.1.0(postcss@8.4.35) 2533 | postcss-js: 4.0.1(postcss@8.4.35) 2534 | postcss-load-config: 4.0.2(postcss@8.4.35) 2535 | postcss-nested: 6.0.1(postcss@8.4.35) 2536 | postcss-selector-parser: 6.0.15 2537 | resolve: 1.22.8 2538 | sucrase: 3.35.0 2539 | transitivePeerDependencies: 2540 | - ts-node 2541 | dev: true 2542 | 2543 | /text-table@0.2.0: 2544 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 2545 | dev: true 2546 | 2547 | /thenify-all@1.6.0: 2548 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 2549 | engines: {node: '>=0.8'} 2550 | dependencies: 2551 | thenify: 3.3.1 2552 | dev: true 2553 | 2554 | /thenify@3.3.1: 2555 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 2556 | dependencies: 2557 | any-promise: 1.3.0 2558 | dev: true 2559 | 2560 | /tiny-glob@0.2.9: 2561 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 2562 | dependencies: 2563 | globalyzer: 0.1.0 2564 | globrex: 0.1.2 2565 | dev: true 2566 | 2567 | /to-regex-range@5.0.1: 2568 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2569 | engines: {node: '>=8.0'} 2570 | dependencies: 2571 | is-number: 7.0.0 2572 | dev: true 2573 | 2574 | /totalist@3.0.1: 2575 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 2576 | engines: {node: '>=6'} 2577 | dev: true 2578 | 2579 | /tr46@0.0.3: 2580 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 2581 | dev: false 2582 | 2583 | /ts-api-utils@1.2.1(typescript@5.3.3): 2584 | resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==} 2585 | engines: {node: '>=16'} 2586 | peerDependencies: 2587 | typescript: '>=4.2.0' 2588 | dependencies: 2589 | typescript: 5.3.3 2590 | dev: true 2591 | 2592 | /ts-interface-checker@0.1.13: 2593 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 2594 | dev: true 2595 | 2596 | /tslib@2.6.2: 2597 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 2598 | dev: true 2599 | 2600 | /type-check@0.4.0: 2601 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 2602 | engines: {node: '>= 0.8.0'} 2603 | dependencies: 2604 | prelude-ls: 1.2.1 2605 | dev: true 2606 | 2607 | /type-fest@0.20.2: 2608 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 2609 | engines: {node: '>=10'} 2610 | dev: true 2611 | 2612 | /typescript@5.3.3: 2613 | resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} 2614 | engines: {node: '>=14.17'} 2615 | hasBin: true 2616 | dev: true 2617 | 2618 | /undici-types@5.26.5: 2619 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 2620 | dev: false 2621 | 2622 | /update-browserslist-db@1.0.13(browserslist@4.23.0): 2623 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 2624 | hasBin: true 2625 | peerDependencies: 2626 | browserslist: '>= 4.21.0' 2627 | dependencies: 2628 | browserslist: 4.23.0 2629 | escalade: 3.1.2 2630 | picocolors: 1.0.0 2631 | dev: true 2632 | 2633 | /uri-js@4.4.1: 2634 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 2635 | dependencies: 2636 | punycode: 2.3.1 2637 | dev: true 2638 | 2639 | /util-deprecate@1.0.2: 2640 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 2641 | dev: true 2642 | 2643 | /vite@5.1.2: 2644 | resolution: {integrity: sha512-uwiFebQbTWRIGbCaTEBVAfKqgqKNKMJ2uPXsXeLIZxM8MVMjoS3j0cG8NrPxdDIadaWnPSjrkLWffLSC+uiP3Q==} 2645 | engines: {node: ^18.0.0 || >=20.0.0} 2646 | hasBin: true 2647 | peerDependencies: 2648 | '@types/node': ^18.0.0 || >=20.0.0 2649 | less: '*' 2650 | lightningcss: ^1.21.0 2651 | sass: '*' 2652 | stylus: '*' 2653 | sugarss: '*' 2654 | terser: ^5.4.0 2655 | peerDependenciesMeta: 2656 | '@types/node': 2657 | optional: true 2658 | less: 2659 | optional: true 2660 | lightningcss: 2661 | optional: true 2662 | sass: 2663 | optional: true 2664 | stylus: 2665 | optional: true 2666 | sugarss: 2667 | optional: true 2668 | terser: 2669 | optional: true 2670 | dependencies: 2671 | esbuild: 0.19.12 2672 | postcss: 8.4.35 2673 | rollup: 4.10.0 2674 | optionalDependencies: 2675 | fsevents: 2.3.3 2676 | dev: true 2677 | 2678 | /vitefu@0.2.5(vite@5.1.2): 2679 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} 2680 | peerDependencies: 2681 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 2682 | peerDependenciesMeta: 2683 | vite: 2684 | optional: true 2685 | dependencies: 2686 | vite: 5.1.2 2687 | dev: true 2688 | 2689 | /webidl-conversions@3.0.1: 2690 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 2691 | dev: false 2692 | 2693 | /whatwg-url@5.0.0: 2694 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 2695 | dependencies: 2696 | tr46: 0.0.3 2697 | webidl-conversions: 3.0.1 2698 | dev: false 2699 | 2700 | /which@2.0.2: 2701 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2702 | engines: {node: '>= 8'} 2703 | hasBin: true 2704 | dependencies: 2705 | isexe: 2.0.0 2706 | dev: true 2707 | 2708 | /wrap-ansi@7.0.0: 2709 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2710 | engines: {node: '>=10'} 2711 | dependencies: 2712 | ansi-styles: 4.3.0 2713 | string-width: 4.2.3 2714 | strip-ansi: 6.0.1 2715 | dev: true 2716 | 2717 | /wrap-ansi@8.1.0: 2718 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 2719 | engines: {node: '>=12'} 2720 | dependencies: 2721 | ansi-styles: 6.2.1 2722 | string-width: 5.1.2 2723 | strip-ansi: 7.1.0 2724 | dev: true 2725 | 2726 | /wrappy@1.0.2: 2727 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2728 | dev: true 2729 | 2730 | /ws@8.16.0: 2731 | resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} 2732 | engines: {node: '>=10.0.0'} 2733 | peerDependencies: 2734 | bufferutil: ^4.0.1 2735 | utf-8-validate: '>=5.0.2' 2736 | peerDependenciesMeta: 2737 | bufferutil: 2738 | optional: true 2739 | utf-8-validate: 2740 | optional: true 2741 | dev: false 2742 | 2743 | /yallist@4.0.0: 2744 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2745 | dev: true 2746 | 2747 | /yaml@1.10.2: 2748 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 2749 | engines: {node: '>= 6'} 2750 | dev: true 2751 | 2752 | /yaml@2.3.4: 2753 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 2754 | engines: {node: '>= 14'} 2755 | dev: true 2756 | 2757 | /yocto-queue@0.1.0: 2758 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2759 | engines: {node: '>=10'} 2760 | dev: true 2761 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const tailwindcss = require('tailwindcss'); 2 | const autoprefixer = require('autoprefixer'); 3 | 4 | const config = { 5 | plugins: [ 6 | //Some plugins, like tailwindcss/nesting, need to run before Tailwind, 7 | tailwindcss(), 8 | //But others, like autoprefixer, need to run after, 9 | autoprefixer 10 | ] 11 | }; 12 | 13 | module.exports = config; 14 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | import { SupabaseClient, Session } from '@supabase/supabase-js'; 4 | import type { Database } from './DatabaseDefinitions'; 5 | declare global { 6 | namespace App { 7 | // interface Error {} 8 | interface Locals { 9 | supabase: SupabaseClient; 10 | getSession(): Promise; 11 | } 12 | interface PageData { 13 | session: Session | null; 14 | } 15 | // interface PageState {} 16 | // interface Platform {} 17 | } 18 | } 19 | 20 | export { type Database }; 21 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/app.pcss: -------------------------------------------------------------------------------- 1 | /* Write your global styles here, in PostCSS syntax */ 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | -------------------------------------------------------------------------------- /src/hooks.server.ts: -------------------------------------------------------------------------------- 1 | import { PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY } from '$env/static/public'; 2 | import { createServerClient } from '@supabase/ssr'; 3 | import type { Handle } from '@sveltejs/kit'; 4 | 5 | export const handle: Handle = async ({ event, resolve }) => { 6 | event.locals.supabase = createServerClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { 7 | cookies: { 8 | get: (key) => event.cookies.get(key), 9 | /** 10 | * Note: You have to add the `path` variable to the 11 | * set and remove method due to sveltekit's cookie API 12 | * requiring this to be set, setting the path to an empty string 13 | * will replicate previous/standard behaviour (https://kit.svelte.dev/docs/types#public-types-cookies) 14 | */ 15 | set: (key, value, options) => { 16 | event.cookies.set(key, value, { ...options, path: '/' }); 17 | }, 18 | remove: (key, options) => { 19 | event.cookies.delete(key, { ...options, path: '/' }); 20 | } 21 | } 22 | }); 23 | 24 | /** 25 | * a little helper that is written for convenience so that instead 26 | * of calling `const { data: { session } } = await supabase.auth.getSession()` 27 | * you just call this `await getSession()` 28 | */ 29 | event.locals.getSession = async () => { 30 | const { 31 | data: { session } 32 | } = await event.locals.supabase.auth.getSession(); 33 | return session; 34 | }; 35 | 36 | return resolve(event, { 37 | filterSerializedResponseHeaders(name) { 38 | return name === 'content-range'; 39 | } 40 | }); 41 | }; 42 | -------------------------------------------------------------------------------- /src/lib/components/Navbar.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 | Supabase Auth 9 |
10 | {#if session && session.user} 11 |

{session.user.email}

12 | {/if} 13 | 24 |
25 |
26 | -------------------------------------------------------------------------------- /src/lib/components/PasswordInput.svelte: -------------------------------------------------------------------------------- 1 | 22 | 23 |
24 | 44 |
45 | -------------------------------------------------------------------------------- /src/lib/icons/AnimatedClock.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 27 | -------------------------------------------------------------------------------- /src/lib/icons/AnimatedWifi.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 66 | -------------------------------------------------------------------------------- /src/lib/icons/ArrowLeft.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /src/lib/icons/BarsRotateIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 64 | -------------------------------------------------------------------------------- /src/lib/icons/BurgerIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 12 | -------------------------------------------------------------------------------- /src/lib/icons/CartIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 19 | -------------------------------------------------------------------------------- /src/lib/icons/CloseIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /src/lib/icons/EyeClosedIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 17 | -------------------------------------------------------------------------------- /src/lib/icons/EyeIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | -------------------------------------------------------------------------------- /src/lib/icons/GridViewIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /src/lib/icons/ListViewIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 11 | -------------------------------------------------------------------------------- /src/lib/icons/MagnifyingGlassIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 15 | -------------------------------------------------------------------------------- /src/lib/icons/TrashIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 24 | -------------------------------------------------------------------------------- /src/lib/icons/UserIcon.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // place files you want to import through the `$lib` alias in this folder. 2 | -------------------------------------------------------------------------------- /src/routes/(auth)/auth-code-error/+page.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
Auth Code error
5 | -------------------------------------------------------------------------------- /src/routes/(auth)/email-confirm/+page.server.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/psegarel/supabase_auth-sveltekit4/8d1f308fd12552a895ba501f027aba371dad06bf/src/routes/(auth)/email-confirm/+page.server.ts -------------------------------------------------------------------------------- /src/routes/(auth)/email-confirm/+page.svelte: -------------------------------------------------------------------------------- 1 | 3 | 4 |
5 | Please check your email for a magic link to log into the website. 6 |
7 | -------------------------------------------------------------------------------- /src/routes/(auth)/login/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { fail, type ActionFailure } from '@sveltejs/kit'; 2 | import type { PageServerLoad } from './$types'; 3 | import type { Actions } from './$types'; 4 | import { AuthApiError } from '@supabase/supabase-js'; 5 | 6 | export const load = (async () => { 7 | return {}; 8 | }) satisfies PageServerLoad; 9 | 10 | export const actions = { 11 | default: async ({ request, locals: { supabase } }) => { 12 | const result = await getEmailandPassword(request); 13 | if (isTypeAuthRequestData(result)) { 14 | const { email, password } = result; 15 | try { 16 | const { data } = await supabase.auth.signInWithPassword({ email, password }); 17 | return { 18 | status: 200, 19 | data 20 | }; 21 | } catch (error) { 22 | console.log('Error', error); 23 | if (error instanceof AuthApiError && error.status === 400) { 24 | return fail(400, { 25 | signinWithPassword: { 26 | error: 'Invalid credentials.', 27 | values: { 28 | email 29 | } 30 | } 31 | }); 32 | } 33 | if (error) { 34 | return fail(500, { 35 | signinWithPassword: { 36 | error: 'Server error. Try again later.', 37 | values: { 38 | email 39 | } 40 | } 41 | }); 42 | } 43 | } 44 | } 45 | } 46 | } satisfies Actions; 47 | 48 | type AuthRequestData = { 49 | email: string; 50 | password: string; 51 | }; 52 | 53 | async function getEmailandPassword( 54 | request: Request 55 | ): Promise | AuthRequestData> { 56 | const data = await request.formData(); 57 | const email = data.get('email') as string; 58 | const password = data.get('password') as string; 59 | if (!email) { 60 | return fail(400, { 61 | error: 'Please enter your email' 62 | }); 63 | } 64 | if (!password) { 65 | return fail(400, { 66 | error: 'Please enter a password', 67 | values: { 68 | email 69 | } 70 | }); 71 | } 72 | return { email, password }; 73 | } 74 | 75 | function isTypeAuthRequestData(data: T): data is T & AuthRequestData { 76 | return ( 77 | typeof data == 'object' && 78 | data != null && 79 | 'email' in data && 80 | 'password' in data && 81 | typeof data.email == 'string' && 82 | typeof data.password == 'string' 83 | ); 84 | } 85 | -------------------------------------------------------------------------------- /src/routes/(auth)/login/+page.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 |
{ 16 | return async ({ result }) => { 17 | if (result.status == 200) { 18 | isLogin = false; 19 | goto('/', { invalidateAll: true }); 20 | } 21 | }; 22 | }} 23 | class="flex w-full flex-col gap-4 lg:w-1/4" 24 | action="" 25 | method="POST" 26 | > 27 |
28 | 36 |
37 | 38 |
39 | 46 | 58 |
59 | You don't have an account? Signup 64 |
65 | 66 |
67 | -------------------------------------------------------------------------------- /src/routes/(auth)/logout/+server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { RequestHandler } from './$types'; 3 | 4 | export const GET: RequestHandler = async ({ locals: { supabase } }) => { 5 | const { error } = await supabase.auth.signOut(); 6 | redirect(303, '/'); 7 | }; 8 | -------------------------------------------------------------------------------- /src/routes/(auth)/reset-password/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { Actions } from './$types'; 3 | 4 | export const actions = { 5 | default: async ({ locals: { supabase }, request, url }) => { 6 | const requestData = await request.formData(); 7 | const email = String(requestData.get('email')); 8 | 9 | await supabase.auth.resetPasswordForEmail(email, { 10 | redirectTo: `${url.origin}/update-password` 11 | }); 12 | 13 | redirect(303, '/email-confirm'); 14 | } 15 | } satisfies Actions; 16 | -------------------------------------------------------------------------------- /src/routes/(auth)/reset-password/+page.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 |
14 |
{ 16 | return async ({ result }) => { 17 | if (result.status == 303 && result.type == 'redirect') { 18 | isSubmitting = false; 19 | goto('/email-confirm', { invalidateAll: true }); 20 | } 21 | }; 22 | }} 23 | class="flex w-full flex-col gap-4 lg:w-1/4" 24 | method="POST" 25 | > 26 |
27 | 35 |
36 | 48 |
49 |
50 | -------------------------------------------------------------------------------- /src/routes/(auth)/signup/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { fail, redirect, type ActionFailure } from '@sveltejs/kit'; 2 | import type { PageServerLoad } from './$types'; 3 | import type { Actions } from './$types'; 4 | 5 | export const load = (async () => { 6 | return {}; 7 | }) satisfies PageServerLoad; 8 | 9 | export const actions = { 10 | default: async ({ url, request, locals: { supabase } }) => { 11 | const result = await getEmailandPassword(request); 12 | 13 | if (isTypeAuthRequestData(result)) { 14 | // 15 | const { email, password } = result; 16 | const { error } = await supabase.auth.signUp({ 17 | email, 18 | password, 19 | options: { emailRedirectTo: `${url.origin}/api/auth/callback` } 20 | }); 21 | 22 | if (error) { 23 | return fail(500, { message: 'Server error. Try again later.', success: false, email }); 24 | } 25 | 26 | redirect(303, '/email-confirm'); 27 | } 28 | } 29 | } satisfies Actions; 30 | 31 | type AuthRequestData = { 32 | email: string; 33 | password: string; 34 | }; 35 | 36 | async function getEmailandPassword( 37 | request: Request 38 | ): Promise | AuthRequestData> { 39 | const data = await request.formData(); 40 | const email = data.get('email') as string; 41 | const password = data.get('password') as string; 42 | if (!email) { 43 | return fail(400, { 44 | error: 'Please enter your email' 45 | }); 46 | } 47 | if (!password) { 48 | return fail(400, { 49 | error: 'Please enter a password', 50 | values: { 51 | email 52 | } 53 | }); 54 | } 55 | return { email, password }; 56 | } 57 | 58 | function isTypeAuthRequestData(data: T): data is T & AuthRequestData { 59 | return ( 60 | typeof data == 'object' && 61 | data != null && 62 | 'email' in data && 63 | 'password' in data && 64 | typeof data.email == 'string' && 65 | typeof data.password == 'string' 66 | ); 67 | } 68 | -------------------------------------------------------------------------------- /src/routes/(auth)/signup/+page.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 |
{ 17 | return async ({ result }) => { 18 | if (result.status == 303 && result.type == 'redirect') { 19 | goto('/email-confirm'); 20 | isSigningUp = false; 21 | } 22 | }; 23 | }} 24 | class="flex w-full flex-col gap-4 lg:w-1/4" 25 | method="POST" 26 | > 27 |
28 | 36 |
37 | 38 |
39 | 51 | Already a user? Login 54 | 55 |
56 | -------------------------------------------------------------------------------- /src/routes/(auth)/update-password/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { Actions } from './$types'; 3 | 4 | export const actions = { 5 | default: async ({ locals: { supabase }, request }) => { 6 | const requestData = await request.formData(); 7 | 8 | const password = String(requestData.get('password')); 9 | const confirm = requestData.get('confirm-password'); 10 | 11 | if (password && confirm && password == confirm) { 12 | await supabase.auth.updateUser({ password }); 13 | redirect(303, '/'); 14 | } 15 | } 16 | } satisfies Actions; 17 | -------------------------------------------------------------------------------- /src/routes/(auth)/update-password/+page.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 |
{ 17 | return async ({ result }) => { 18 | if (result.status == 303) { 19 | isSubmitting = false; 20 | goto('/', { invalidateAll: true }); 21 | } 22 | }; 23 | }} 24 | class="flex w-full flex-col gap-4 lg:w-1/4" 25 | method="POST" 26 | > 27 | 28 | 29 |
30 | 37 | 49 | 50 |
51 | -------------------------------------------------------------------------------- /src/routes/+layout.server.ts: -------------------------------------------------------------------------------- 1 | // src/routes/+layout.server.ts 2 | import type { LayoutServerLoad } from './$types'; 3 | 4 | export const load: LayoutServerLoad = async ({ locals: { getSession } }) => { 5 | return { 6 | session: await getSession() 7 | }; 8 | }; 9 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 2 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | // src/routes/+layout.ts 2 | import { PUBLIC_SUPABASE_ANON_KEY, PUBLIC_SUPABASE_URL } from '$env/static/public'; 3 | 4 | import type { SupabaseClient } from '@supabase/supabase-js'; 5 | import { browser } from '$app/environment'; 6 | import { createBrowserClient, isBrowser, parse } from '@supabase/ssr'; 7 | import type { LayoutLoad } from './$types'; 8 | 9 | export const load: LayoutLoad = async ({ fetch, depends, data }) => { 10 | depends('supabase:auth'); 11 | let supabase: SupabaseClient; 12 | 13 | if (browser) { 14 | supabase = createBrowserClient(PUBLIC_SUPABASE_URL, PUBLIC_SUPABASE_ANON_KEY, { 15 | global: { 16 | fetch 17 | }, 18 | cookies: { 19 | get(key) { 20 | if (!isBrowser()) { 21 | return JSON.stringify(data.session); 22 | } 23 | 24 | const cookie = parse(document.cookie); 25 | return cookie[key]; 26 | } 27 | } 28 | }); 29 | 30 | const { 31 | data: { session } 32 | } = await supabase.auth.getSession(); 33 | 34 | return { supabase, session }; 35 | } 36 | return { supabase: null, session: null }; 37 | }; 38 | -------------------------------------------------------------------------------- /src/routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | import type { PageServerLoad } from './$types'; 2 | 3 | export const load = (async ({ locals: { getSession } }) => { 4 | return {}; 5 | }) satisfies PageServerLoad; 6 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |

Welcome to SvelteKit

9 |

Visit kit.svelte.dev to read the documentation

10 |
11 | -------------------------------------------------------------------------------- /src/routes/api/auth/callback/+server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { EmailOtpType } from '@supabase/supabase-js'; 3 | 4 | export const GET = async ({ url, locals: { supabase } }) => { 5 | const token_hash = url.searchParams.get('token_hash') as string; 6 | const type: EmailOtpType = url.searchParams.get('type') as EmailOtpType; 7 | const next = url.searchParams.get('next') ?? '/'; 8 | 9 | if (token_hash && type) { 10 | const { error } = await supabase.auth.verifyOtp({ token_hash, type }); 11 | if (!error) { 12 | throw redirect(303, `/${next.slice(1)}`); 13 | } 14 | } 15 | 16 | // return the user to an error page with some instructions 17 | throw redirect(303, '/auth-code-error'); 18 | }; 19 | -------------------------------------------------------------------------------- /src/routes/profile/+page.server.ts: -------------------------------------------------------------------------------- 1 | import type { PageServerLoad } from './$types'; 2 | import { redirect } from '@sveltejs/kit'; 3 | 4 | export const load = (async ({ locals: { supabase, getSession } }) => { 5 | const session = await getSession(); 6 | if (!session) { 7 | throw redirect(303, '/'); 8 | } 9 | //const { data: tableData } = await supabase.from('test').select('*'); 10 | return { 11 | user: session.user 12 | //tableData 13 | }; 14 | }) satisfies PageServerLoad; 15 | -------------------------------------------------------------------------------- /src/routes/profile/+page.svelte: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 |
22 | {#if session} 23 |

client-side data fetching with RLS

24 |
{JSON.stringify(loadedData, null, 2)}
25 | {/if} 26 |
27 | -------------------------------------------------------------------------------- /src/routes/protected-routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { redirect } from '@sveltejs/kit'; 2 | import type { PageServerLoad } from './$types'; 3 | 4 | export const load = (async ({ locals: { getSession } }) => { 5 | const session = await getSession(); 6 | if (!session) { 7 | redirect(303, '/'); 8 | } 9 | return {}; 10 | }) satisfies PageServerLoad; 11 | -------------------------------------------------------------------------------- /src/routes/protected-routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
Protected Routes
6 | -------------------------------------------------------------------------------- /src/routes/welcome/+page.svelte: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/psegarel/supabase_auth-sveltekit4/8d1f308fd12552a895ba501f027aba371dad06bf/static/favicon.ico -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/psegarel/supabase_auth-sveltekit4/8d1f308fd12552a895ba501f027aba371dad06bf/static/favicon.png -------------------------------------------------------------------------------- /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 | /** @type {import('tailwindcss').Config}*/ 2 | const config = { 3 | content: ['./src/**/*.{html,js,svelte,ts}'], 4 | 5 | theme: { 6 | extend: {} 7 | }, 8 | 9 | plugins: [require('daisyui')] 10 | }; 11 | 12 | module.exports = config; 13 | -------------------------------------------------------------------------------- /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 | "moduleResolution": "bundler" 13 | } 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------