├── .gitignore ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE ├── README.md ├── eslint.config.js ├── jsconfig.json ├── package.json ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html ├── index.test.js ├── lib │ ├── arson.js │ ├── console.ts │ ├── constants.ts │ ├── core │ │ └── utils.ts │ ├── index.ts │ ├── testfiles │ │ └── testmodule.ts │ ├── transformer.ts │ └── types.ts └── routes │ ├── +layout.svelte │ ├── +page.server.ts │ ├── +page.svelte │ └── test │ ├── +page.server.ts │ └── +page.svelte ├── static ├── favicon.png └── scr.png ├── svelte.config.ts ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # Output 4 | .output 5 | .vercel 6 | /.svelte-kit 7 | /build 8 | /dist 9 | 10 | # OS 11 | .DS_Store 12 | Thumbs.db 13 | 14 | # Env 15 | .env 16 | .env.* 17 | !.env.example 18 | !.env.test 19 | 20 | # Vite 21 | vite.config.js.timestamp-* 22 | vite.config.ts.timestamp-* 23 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | # Package Managers 2 | package-lock.json 3 | pnpm-lock.yaml 4 | yarn.lock 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Tuni-Soft 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sveltekit-plugin-console 2 | 3 | Output server logs to the browser console. 4 | 5 | ![image](https://raw.githubusercontent.com/unlocomqx/sveltekit-plugin-console/main/static/scr.png) 6 | 7 | ## Install 8 | 9 | ```shell 10 | pnpm add -D sveltekit-plugin-console 11 | ``` 12 | 13 | ## Setup 14 | 15 | ```ts 16 | // vite.config.ts 17 | import { ConsolePlugin } from 'sveltekit-plugin-console'; 18 | ... 19 | plugins: [sveltekit(), ConsolePlugin()], 20 | ``` 21 | 22 | ## Full Example 23 | 24 | ```ts 25 | import { sveltekit } from '@sveltejs/kit/vite'; 26 | import { defineConfig } from 'vitest/config'; 27 | import { ConsolePlugin } from './src/lib/index.js'; 28 | 29 | export default defineConfig({ 30 | plugins: [sveltekit(), ConsolePlugin()], 31 | test: { 32 | include: ['src/**/*.{test,spec}.{js,ts}'] 33 | } 34 | }); 35 | ``` 36 | 37 | ## Options 38 | 39 | ```ts 40 | export type PluginOptions = { 41 | /** 42 | * Whether to print logs in the server console normally or to suppress them. 43 | * Only applies to console.log statements. 44 | * 45 | * Default: true 46 | */ 47 | log_on_server?: boolean; 48 | } 49 | ``` 50 | 51 | ## Usage 52 | 53 | Use console.log normally on your server code. You don't need to change anything. 54 | 55 | ## Is this secure? 56 | 57 | This plugin only works on serve mode. It does not affect your production build. 58 | 59 | ## Todos 60 | 61 | - [ ] provide file:line-number and make it clickable if possible 62 | - [x] provide option to suppress logs on the server console (to avoid flooding) 63 | - [ ] use a better serialization method than fast-safe-stringify 64 | 65 | ## 🙏 Thanks 66 | 67 | Much of the credits go to [unplugin-turbo-console](https://github.com/unplugin/unplugin-turbo-console) for the tricky 68 | parts such as static analysis and code transformation. -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js'; 2 | import svelte from 'eslint-plugin-svelte'; 3 | import prettier from 'eslint-config-prettier'; 4 | import globals from 'globals'; 5 | 6 | /** @type {import('eslint').Linter.FlatConfig[]} */ 7 | export default [ 8 | js.configs.recommended, 9 | ...svelte.configs['flat/recommended'], 10 | prettier, 11 | ...svelte.configs['flat/prettier'], 12 | { 13 | languageOptions: { 14 | globals: { 15 | ...globals.browser, 16 | ...globals.node 17 | } 18 | } 19 | }, 20 | { 21 | ignores: ['build/', '.svelte-kit/', 'dist/'] 22 | } 23 | ]; 24 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "esModuleInterop": true, 5 | "forceConsistentCasingInFileNames": true, 6 | "resolveJsonModule": true, 7 | "skipLibCheck": true, 8 | "sourceMap": true, 9 | "module": "NodeNext", 10 | "moduleResolution": "NodeNext" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-plugin-console", 3 | "version": "0.1.11", 4 | "repository": "https://github.com/unlocomqx/sveltekit-plugin-console", 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build && npm run package", 8 | "preview": "vite preview", 9 | "package": "svelte-kit sync && svelte-package && publint", 10 | "prepublishOnly": "npm run package", 11 | "check": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json", 12 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./jsconfig.json --watch", 13 | "test": "vitest", 14 | "lint": "prettier --check . && eslint .", 15 | "format": "prettier --write ." 16 | }, 17 | "exports": { 18 | ".": { 19 | "import": { 20 | "types": "./dist/index.d.ts", 21 | "default": "./dist/index.js" 22 | } 23 | } 24 | }, 25 | "files": [ 26 | "dist", 27 | "!dist/**/*.test.*", 28 | "!dist/**/*.spec.*" 29 | ], 30 | "peerDependencies": { 31 | "svelte": "^5.0.0-next.1" 32 | }, 33 | "devDependencies": { 34 | "@babel/types": "^7.25.2", 35 | "@sveltejs/adapter-auto": "^3.2.2", 36 | "@sveltejs/kit": "^2.5.19", 37 | "@sveltejs/package": "^2.3.2", 38 | "@sveltejs/vite-plugin-svelte": "^3.1.1", 39 | "@types/eslint": "^9.6.0", 40 | "@types/node": "^22.0.2", 41 | "eslint": "^9.8.0", 42 | "eslint-config-prettier": "^9.1.0", 43 | "eslint-plugin-svelte": "^2.43.0", 44 | "globals": "^15.9.0", 45 | "prettier": "^3.3.3", 46 | "prettier-plugin-svelte": "^3.2.6", 47 | "publint": "^0.2.9", 48 | "svelte": "5.0.0-next.189", 49 | "svelte-check": "^3.8.5", 50 | "tslib": "^2.6.3", 51 | "typescript": "^5.5.4", 52 | "vite": "^5.3.5", 53 | "vitest": "^2.0.5" 54 | }, 55 | "types": "./dist/index.d.ts", 56 | "type": "module", 57 | "dependencies": { 58 | "arson": "^0.2.6", 59 | "ast-kit": "^1.0.0", 60 | "magic-string": "^0.30.11", 61 | "pathe": "^1.1.2" 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | arson: 12 | specifier: ^0.2.6 13 | version: 0.2.6 14 | ast-kit: 15 | specifier: ^1.0.0 16 | version: 1.0.0 17 | magic-string: 18 | specifier: ^0.30.11 19 | version: 0.30.11 20 | pathe: 21 | specifier: ^1.1.2 22 | version: 1.1.2 23 | devDependencies: 24 | '@babel/types': 25 | specifier: ^7.25.2 26 | version: 7.25.2 27 | '@sveltejs/adapter-auto': 28 | specifier: ^3.2.2 29 | version: 3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2))) 30 | '@sveltejs/kit': 31 | specifier: ^2.5.19 32 | version: 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 33 | '@sveltejs/package': 34 | specifier: ^2.3.2 35 | version: 2.3.2(svelte@5.0.0-next.189)(typescript@5.5.4) 36 | '@sveltejs/vite-plugin-svelte': 37 | specifier: ^3.1.1 38 | version: 3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 39 | '@types/eslint': 40 | specifier: ^9.6.0 41 | version: 9.6.0 42 | '@types/node': 43 | specifier: ^22.0.2 44 | version: 22.0.2 45 | eslint: 46 | specifier: ^9.8.0 47 | version: 9.8.0 48 | eslint-config-prettier: 49 | specifier: ^9.1.0 50 | version: 9.1.0(eslint@9.8.0) 51 | eslint-plugin-svelte: 52 | specifier: ^2.43.0 53 | version: 2.43.0(eslint@9.8.0)(svelte@5.0.0-next.189) 54 | globals: 55 | specifier: ^15.9.0 56 | version: 15.9.0 57 | prettier: 58 | specifier: ^3.3.3 59 | version: 3.3.3 60 | prettier-plugin-svelte: 61 | specifier: ^3.2.6 62 | version: 3.2.6(prettier@3.3.3)(svelte@5.0.0-next.189) 63 | publint: 64 | specifier: ^0.2.9 65 | version: 0.2.9 66 | svelte: 67 | specifier: 5.0.0-next.189 68 | version: 5.0.0-next.189 69 | svelte-check: 70 | specifier: ^3.8.5 71 | version: 3.8.5(postcss-load-config@3.1.4(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.189) 72 | tslib: 73 | specifier: ^2.6.3 74 | version: 2.6.3 75 | typescript: 76 | specifier: ^5.5.4 77 | version: 5.5.4 78 | vite: 79 | specifier: ^5.3.5 80 | version: 5.3.5(@types/node@22.0.2) 81 | vitest: 82 | specifier: ^2.0.5 83 | version: 2.0.5(@types/node@22.0.2) 84 | 85 | packages: 86 | 87 | '@ampproject/remapping@2.3.0': 88 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 89 | engines: {node: '>=6.0.0'} 90 | 91 | '@babel/helper-string-parser@7.24.8': 92 | resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} 93 | engines: {node: '>=6.9.0'} 94 | 95 | '@babel/helper-validator-identifier@7.24.7': 96 | resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} 97 | engines: {node: '>=6.9.0'} 98 | 99 | '@babel/parser@7.25.3': 100 | resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==} 101 | engines: {node: '>=6.0.0'} 102 | hasBin: true 103 | 104 | '@babel/types@7.25.2': 105 | resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} 106 | engines: {node: '>=6.9.0'} 107 | 108 | '@esbuild/aix-ppc64@0.21.5': 109 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 110 | engines: {node: '>=12'} 111 | cpu: [ppc64] 112 | os: [aix] 113 | 114 | '@esbuild/android-arm64@0.21.5': 115 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 116 | engines: {node: '>=12'} 117 | cpu: [arm64] 118 | os: [android] 119 | 120 | '@esbuild/android-arm@0.21.5': 121 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 122 | engines: {node: '>=12'} 123 | cpu: [arm] 124 | os: [android] 125 | 126 | '@esbuild/android-x64@0.21.5': 127 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 128 | engines: {node: '>=12'} 129 | cpu: [x64] 130 | os: [android] 131 | 132 | '@esbuild/darwin-arm64@0.21.5': 133 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 134 | engines: {node: '>=12'} 135 | cpu: [arm64] 136 | os: [darwin] 137 | 138 | '@esbuild/darwin-x64@0.21.5': 139 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 140 | engines: {node: '>=12'} 141 | cpu: [x64] 142 | os: [darwin] 143 | 144 | '@esbuild/freebsd-arm64@0.21.5': 145 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 146 | engines: {node: '>=12'} 147 | cpu: [arm64] 148 | os: [freebsd] 149 | 150 | '@esbuild/freebsd-x64@0.21.5': 151 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 152 | engines: {node: '>=12'} 153 | cpu: [x64] 154 | os: [freebsd] 155 | 156 | '@esbuild/linux-arm64@0.21.5': 157 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 158 | engines: {node: '>=12'} 159 | cpu: [arm64] 160 | os: [linux] 161 | 162 | '@esbuild/linux-arm@0.21.5': 163 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 164 | engines: {node: '>=12'} 165 | cpu: [arm] 166 | os: [linux] 167 | 168 | '@esbuild/linux-ia32@0.21.5': 169 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 170 | engines: {node: '>=12'} 171 | cpu: [ia32] 172 | os: [linux] 173 | 174 | '@esbuild/linux-loong64@0.21.5': 175 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 176 | engines: {node: '>=12'} 177 | cpu: [loong64] 178 | os: [linux] 179 | 180 | '@esbuild/linux-mips64el@0.21.5': 181 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 182 | engines: {node: '>=12'} 183 | cpu: [mips64el] 184 | os: [linux] 185 | 186 | '@esbuild/linux-ppc64@0.21.5': 187 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 188 | engines: {node: '>=12'} 189 | cpu: [ppc64] 190 | os: [linux] 191 | 192 | '@esbuild/linux-riscv64@0.21.5': 193 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 194 | engines: {node: '>=12'} 195 | cpu: [riscv64] 196 | os: [linux] 197 | 198 | '@esbuild/linux-s390x@0.21.5': 199 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 200 | engines: {node: '>=12'} 201 | cpu: [s390x] 202 | os: [linux] 203 | 204 | '@esbuild/linux-x64@0.21.5': 205 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 206 | engines: {node: '>=12'} 207 | cpu: [x64] 208 | os: [linux] 209 | 210 | '@esbuild/netbsd-x64@0.21.5': 211 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 212 | engines: {node: '>=12'} 213 | cpu: [x64] 214 | os: [netbsd] 215 | 216 | '@esbuild/openbsd-x64@0.21.5': 217 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 218 | engines: {node: '>=12'} 219 | cpu: [x64] 220 | os: [openbsd] 221 | 222 | '@esbuild/sunos-x64@0.21.5': 223 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 224 | engines: {node: '>=12'} 225 | cpu: [x64] 226 | os: [sunos] 227 | 228 | '@esbuild/win32-arm64@0.21.5': 229 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 230 | engines: {node: '>=12'} 231 | cpu: [arm64] 232 | os: [win32] 233 | 234 | '@esbuild/win32-ia32@0.21.5': 235 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 236 | engines: {node: '>=12'} 237 | cpu: [ia32] 238 | os: [win32] 239 | 240 | '@esbuild/win32-x64@0.21.5': 241 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 242 | engines: {node: '>=12'} 243 | cpu: [x64] 244 | os: [win32] 245 | 246 | '@eslint-community/eslint-utils@4.4.0': 247 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 248 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 249 | peerDependencies: 250 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 251 | 252 | '@eslint-community/regexpp@4.11.0': 253 | resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} 254 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 255 | 256 | '@eslint/config-array@0.17.1': 257 | resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==} 258 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 259 | 260 | '@eslint/eslintrc@3.1.0': 261 | resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} 262 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 263 | 264 | '@eslint/js@9.8.0': 265 | resolution: {integrity: sha512-MfluB7EUfxXtv3i/++oh89uzAr4PDI4nn201hsp+qaXqsjAWzinlZEHEfPgAX4doIlKvPG/i0A9dpKxOLII8yA==} 266 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 267 | 268 | '@eslint/object-schema@2.1.4': 269 | resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 270 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 271 | 272 | '@humanwhocodes/module-importer@1.0.1': 273 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 274 | engines: {node: '>=12.22'} 275 | 276 | '@humanwhocodes/retry@0.3.0': 277 | resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==} 278 | engines: {node: '>=18.18'} 279 | 280 | '@jridgewell/gen-mapping@0.3.5': 281 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 282 | engines: {node: '>=6.0.0'} 283 | 284 | '@jridgewell/resolve-uri@3.1.2': 285 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 286 | engines: {node: '>=6.0.0'} 287 | 288 | '@jridgewell/set-array@1.2.1': 289 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 290 | engines: {node: '>=6.0.0'} 291 | 292 | '@jridgewell/sourcemap-codec@1.5.0': 293 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 294 | 295 | '@jridgewell/trace-mapping@0.3.25': 296 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 297 | 298 | '@nodelib/fs.scandir@2.1.5': 299 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 300 | engines: {node: '>= 8'} 301 | 302 | '@nodelib/fs.stat@2.0.5': 303 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 304 | engines: {node: '>= 8'} 305 | 306 | '@nodelib/fs.walk@1.2.8': 307 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 308 | engines: {node: '>= 8'} 309 | 310 | '@polka/url@1.0.0-next.25': 311 | resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} 312 | 313 | '@rollup/rollup-android-arm-eabi@4.19.2': 314 | resolution: {integrity: sha512-OHflWINKtoCFSpm/WmuQaWW4jeX+3Qt3XQDepkkiFTsoxFc5BpF3Z5aDxFZgBqRjO6ATP5+b1iilp4kGIZVWlA==} 315 | cpu: [arm] 316 | os: [android] 317 | 318 | '@rollup/rollup-android-arm64@4.19.2': 319 | resolution: {integrity: sha512-k0OC/b14rNzMLDOE6QMBCjDRm3fQOHAL8Ldc9bxEWvMo4Ty9RY6rWmGetNTWhPo+/+FNd1lsQYRd0/1OSix36A==} 320 | cpu: [arm64] 321 | os: [android] 322 | 323 | '@rollup/rollup-darwin-arm64@4.19.2': 324 | resolution: {integrity: sha512-IIARRgWCNWMTeQH+kr/gFTHJccKzwEaI0YSvtqkEBPj7AshElFq89TyreKNFAGh5frLfDCbodnq+Ye3dqGKPBw==} 325 | cpu: [arm64] 326 | os: [darwin] 327 | 328 | '@rollup/rollup-darwin-x64@4.19.2': 329 | resolution: {integrity: sha512-52udDMFDv54BTAdnw+KXNF45QCvcJOcYGl3vQkp4vARyrcdI/cXH8VXTEv/8QWfd6Fru8QQuw1b2uNersXOL0g==} 330 | cpu: [x64] 331 | os: [darwin] 332 | 333 | '@rollup/rollup-linux-arm-gnueabihf@4.19.2': 334 | resolution: {integrity: sha512-r+SI2t8srMPYZeoa1w0o/AfoVt9akI1ihgazGYPQGRilVAkuzMGiTtexNZkrPkQsyFrvqq/ni8f3zOnHw4hUbA==} 335 | cpu: [arm] 336 | os: [linux] 337 | 338 | '@rollup/rollup-linux-arm-musleabihf@4.19.2': 339 | resolution: {integrity: sha512-+tYiL4QVjtI3KliKBGtUU7yhw0GMcJJuB9mLTCEauHEsqfk49gtUBXGtGP3h1LW8MbaTY6rSFIQV1XOBps1gBA==} 340 | cpu: [arm] 341 | os: [linux] 342 | 343 | '@rollup/rollup-linux-arm64-gnu@4.19.2': 344 | resolution: {integrity: sha512-OR5DcvZiYN75mXDNQQxlQPTv4D+uNCUsmSCSY2FolLf9W5I4DSoJyg7z9Ea3TjKfhPSGgMJiey1aWvlWuBzMtg==} 345 | cpu: [arm64] 346 | os: [linux] 347 | 348 | '@rollup/rollup-linux-arm64-musl@4.19.2': 349 | resolution: {integrity: sha512-Hw3jSfWdUSauEYFBSFIte6I8m6jOj+3vifLg8EU3lreWulAUpch4JBjDMtlKosrBzkr0kwKgL9iCfjA8L3geoA==} 350 | cpu: [arm64] 351 | os: [linux] 352 | 353 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.2': 354 | resolution: {integrity: sha512-rhjvoPBhBwVnJRq/+hi2Q3EMiVF538/o9dBuj9TVLclo9DuONqt5xfWSaE6MYiFKpo/lFPJ/iSI72rYWw5Hc7w==} 355 | cpu: [ppc64] 356 | os: [linux] 357 | 358 | '@rollup/rollup-linux-riscv64-gnu@4.19.2': 359 | resolution: {integrity: sha512-EAz6vjPwHHs2qOCnpQkw4xs14XJq84I81sDRGPEjKPFVPBw7fwvtwhVjcZR6SLydCv8zNK8YGFblKWd/vRmP8g==} 360 | cpu: [riscv64] 361 | os: [linux] 362 | 363 | '@rollup/rollup-linux-s390x-gnu@4.19.2': 364 | resolution: {integrity: sha512-IJSUX1xb8k/zN9j2I7B5Re6B0NNJDJ1+soezjNojhT8DEVeDNptq2jgycCOpRhyGj0+xBn7Cq+PK7Q+nd2hxLA==} 365 | cpu: [s390x] 366 | os: [linux] 367 | 368 | '@rollup/rollup-linux-x64-gnu@4.19.2': 369 | resolution: {integrity: sha512-OgaToJ8jSxTpgGkZSkwKE+JQGihdcaqnyHEFOSAU45utQ+yLruE1dkonB2SDI8t375wOKgNn8pQvaWY9kPzxDQ==} 370 | cpu: [x64] 371 | os: [linux] 372 | 373 | '@rollup/rollup-linux-x64-musl@4.19.2': 374 | resolution: {integrity: sha512-5V3mPpWkB066XZZBgSd1lwozBk7tmOkKtquyCJ6T4LN3mzKENXyBwWNQn8d0Ci81hvlBw5RoFgleVpL6aScLYg==} 375 | cpu: [x64] 376 | os: [linux] 377 | 378 | '@rollup/rollup-win32-arm64-msvc@4.19.2': 379 | resolution: {integrity: sha512-ayVstadfLeeXI9zUPiKRVT8qF55hm7hKa+0N1V6Vj+OTNFfKSoUxyZvzVvgtBxqSb5URQ8sK6fhwxr9/MLmxdA==} 380 | cpu: [arm64] 381 | os: [win32] 382 | 383 | '@rollup/rollup-win32-ia32-msvc@4.19.2': 384 | resolution: {integrity: sha512-Mda7iG4fOLHNsPqjWSjANvNZYoW034yxgrndof0DwCy0D3FvTjeNo+HGE6oGWgvcLZNLlcp0hLEFcRs+UGsMLg==} 385 | cpu: [ia32] 386 | os: [win32] 387 | 388 | '@rollup/rollup-win32-x64-msvc@4.19.2': 389 | resolution: {integrity: sha512-DPi0ubYhSow/00YqmG1jWm3qt1F8aXziHc/UNy8bo9cpCacqhuWu+iSq/fp2SyEQK7iYTZ60fBU9cat3MXTjIQ==} 390 | cpu: [x64] 391 | os: [win32] 392 | 393 | '@sveltejs/adapter-auto@3.2.2': 394 | resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} 395 | peerDependencies: 396 | '@sveltejs/kit': ^2.0.0 397 | 398 | '@sveltejs/kit@2.5.19': 399 | resolution: {integrity: sha512-r/lah3nnYEZX1btlvpSy+Exkt1aWhmOP5pnCt+BBro+tZrh2Zci+26Xnm1fCBLLMeM5q7gHvWiS8c/UtrWjdvQ==} 400 | engines: {node: '>=18.13'} 401 | hasBin: true 402 | peerDependencies: 403 | '@sveltejs/vite-plugin-svelte': ^3.0.0 404 | svelte: ^4.0.0 || ^5.0.0-next.0 405 | vite: ^5.0.3 406 | 407 | '@sveltejs/package@2.3.2': 408 | resolution: {integrity: sha512-6M8/Te7iXRG7SiH92wugqfyoJpuepjn78L433LnXicUeMso9M/N4vdL9DPK3MfTkVVY4klhNRptVqme3p4oZWA==} 409 | engines: {node: ^16.14 || >=18} 410 | hasBin: true 411 | peerDependencies: 412 | svelte: ^3.44.0 || ^4.0.0 || ^5.0.0-next.1 413 | 414 | '@sveltejs/vite-plugin-svelte-inspector@2.1.0': 415 | resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==} 416 | engines: {node: ^18.0.0 || >=20} 417 | peerDependencies: 418 | '@sveltejs/vite-plugin-svelte': ^3.0.0 419 | svelte: ^4.0.0 || ^5.0.0-next.0 420 | vite: ^5.0.0 421 | 422 | '@sveltejs/vite-plugin-svelte@3.1.1': 423 | resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==} 424 | engines: {node: ^18.0.0 || >=20} 425 | peerDependencies: 426 | svelte: ^4.0.0 || ^5.0.0-next.0 427 | vite: ^5.0.0 428 | 429 | '@types/cookie@0.6.0': 430 | resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} 431 | 432 | '@types/eslint@9.6.0': 433 | resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==} 434 | 435 | '@types/estree@1.0.5': 436 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 437 | 438 | '@types/json-schema@7.0.15': 439 | resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 440 | 441 | '@types/node@22.0.2': 442 | resolution: {integrity: sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==} 443 | 444 | '@types/pug@2.0.10': 445 | resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} 446 | 447 | '@vitest/expect@2.0.5': 448 | resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} 449 | 450 | '@vitest/pretty-format@2.0.5': 451 | resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} 452 | 453 | '@vitest/runner@2.0.5': 454 | resolution: {integrity: sha512-TfRfZa6Bkk9ky4tW0z20WKXFEwwvWhRY+84CnSEtq4+3ZvDlJyY32oNTJtM7AW9ihW90tX/1Q78cb6FjoAs+ig==} 455 | 456 | '@vitest/snapshot@2.0.5': 457 | resolution: {integrity: sha512-SgCPUeDFLaM0mIUHfaArq8fD2WbaXG/zVXjRupthYfYGzc8ztbFbu6dUNOblBG7XLMR1kEhS/DNnfCZ2IhdDew==} 458 | 459 | '@vitest/spy@2.0.5': 460 | resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} 461 | 462 | '@vitest/utils@2.0.5': 463 | resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} 464 | 465 | acorn-jsx@5.3.2: 466 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 467 | peerDependencies: 468 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 469 | 470 | acorn-typescript@1.4.13: 471 | resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==} 472 | peerDependencies: 473 | acorn: '>=8.9.0' 474 | 475 | acorn@8.12.1: 476 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 477 | engines: {node: '>=0.4.0'} 478 | hasBin: true 479 | 480 | ajv@6.12.6: 481 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 482 | 483 | ansi-regex@5.0.1: 484 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 485 | engines: {node: '>=8'} 486 | 487 | ansi-styles@4.3.0: 488 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 489 | engines: {node: '>=8'} 490 | 491 | anymatch@3.1.3: 492 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 493 | engines: {node: '>= 8'} 494 | 495 | argparse@2.0.1: 496 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 497 | 498 | aria-query@5.3.0: 499 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 500 | 501 | arson@0.2.6: 502 | resolution: {integrity: sha512-wVRnIfjOaCWu3jrf3j1CU/eotDf7tuM34cBswo32EwyLPaMiaWgETfROdYVv47VWEbWSOaZaDnkypGQtQduLbw==} 503 | 504 | assertion-error@2.0.1: 505 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 506 | engines: {node: '>=12'} 507 | 508 | ast-kit@1.0.0: 509 | resolution: {integrity: sha512-Jv5Zs4DhU4QEYPvfVrEmdMuxCRMxsIVNfj4uqsBWyNM5wOaNMIfOwu55jH2DWnmr05iyCxPjbYGND1PNU40CuQ==} 510 | engines: {node: '>=16.14.0'} 511 | 512 | axobject-query@4.1.0: 513 | resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} 514 | engines: {node: '>= 0.4'} 515 | 516 | balanced-match@1.0.2: 517 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 518 | 519 | binary-extensions@2.3.0: 520 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 521 | engines: {node: '>=8'} 522 | 523 | brace-expansion@1.1.11: 524 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 525 | 526 | brace-expansion@2.0.1: 527 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 528 | 529 | braces@3.0.3: 530 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 531 | engines: {node: '>=8'} 532 | 533 | buffer-crc32@1.0.0: 534 | resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} 535 | engines: {node: '>=8.0.0'} 536 | 537 | cac@6.7.14: 538 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 539 | engines: {node: '>=8'} 540 | 541 | callsites@3.1.0: 542 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 543 | engines: {node: '>=6'} 544 | 545 | chai@5.1.1: 546 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} 547 | engines: {node: '>=12'} 548 | 549 | chalk@4.1.2: 550 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 551 | engines: {node: '>=10'} 552 | 553 | check-error@2.1.1: 554 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 555 | engines: {node: '>= 16'} 556 | 557 | chokidar@3.6.0: 558 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 559 | engines: {node: '>= 8.10.0'} 560 | 561 | color-convert@2.0.1: 562 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 563 | engines: {node: '>=7.0.0'} 564 | 565 | color-name@1.1.4: 566 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 567 | 568 | concat-map@0.0.1: 569 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 570 | 571 | cookie@0.6.0: 572 | resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} 573 | engines: {node: '>= 0.6'} 574 | 575 | cross-spawn@7.0.3: 576 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 577 | engines: {node: '>= 8'} 578 | 579 | cssesc@3.0.0: 580 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 581 | engines: {node: '>=4'} 582 | hasBin: true 583 | 584 | debug@4.3.6: 585 | resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} 586 | engines: {node: '>=6.0'} 587 | peerDependencies: 588 | supports-color: '*' 589 | peerDependenciesMeta: 590 | supports-color: 591 | optional: true 592 | 593 | dedent-js@1.0.1: 594 | resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==} 595 | 596 | deep-eql@5.0.2: 597 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 598 | engines: {node: '>=6'} 599 | 600 | deep-is@0.1.4: 601 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 602 | 603 | deepmerge@4.3.1: 604 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 605 | engines: {node: '>=0.10.0'} 606 | 607 | dequal@2.0.3: 608 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 609 | engines: {node: '>=6'} 610 | 611 | detect-indent@6.1.0: 612 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 613 | engines: {node: '>=8'} 614 | 615 | devalue@5.0.0: 616 | resolution: {integrity: sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==} 617 | 618 | es6-promise@3.3.1: 619 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 620 | 621 | esbuild@0.21.5: 622 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 623 | engines: {node: '>=12'} 624 | hasBin: true 625 | 626 | escape-string-regexp@4.0.0: 627 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 628 | engines: {node: '>=10'} 629 | 630 | eslint-compat-utils@0.5.1: 631 | resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} 632 | engines: {node: '>=12'} 633 | peerDependencies: 634 | eslint: '>=6.0.0' 635 | 636 | eslint-config-prettier@9.1.0: 637 | resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} 638 | hasBin: true 639 | peerDependencies: 640 | eslint: '>=7.0.0' 641 | 642 | eslint-plugin-svelte@2.43.0: 643 | resolution: {integrity: sha512-REkxQWvg2pp7QVLxQNa+dJ97xUqRe7Y2JJbSWkHSuszu0VcblZtXkPBPckkivk99y5CdLw4slqfPylL2d/X4jQ==} 644 | engines: {node: ^14.17.0 || >=16.0.0} 645 | peerDependencies: 646 | eslint: ^7.0.0 || ^8.0.0-0 || ^9.0.0-0 647 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191 648 | peerDependenciesMeta: 649 | svelte: 650 | optional: true 651 | 652 | eslint-scope@7.2.2: 653 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 654 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 655 | 656 | eslint-scope@8.0.2: 657 | resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} 658 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 659 | 660 | eslint-visitor-keys@3.4.3: 661 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 662 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 663 | 664 | eslint-visitor-keys@4.0.0: 665 | resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} 666 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 667 | 668 | eslint@9.8.0: 669 | resolution: {integrity: sha512-K8qnZ/QJzT2dLKdZJVX6W4XOwBzutMYmt0lqUS+JdXgd+HTYFlonFgkJ8s44d/zMPPCnOOk0kMWCApCPhiOy9A==} 670 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 671 | hasBin: true 672 | 673 | esm-env@1.0.0: 674 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 675 | 676 | espree@10.1.0: 677 | resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} 678 | engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 679 | 680 | espree@9.6.1: 681 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 682 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 683 | 684 | esquery@1.6.0: 685 | resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 686 | engines: {node: '>=0.10'} 687 | 688 | esrap@1.2.2: 689 | resolution: {integrity: sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==} 690 | 691 | esrecurse@4.3.0: 692 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 693 | engines: {node: '>=4.0'} 694 | 695 | estraverse@5.3.0: 696 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 697 | engines: {node: '>=4.0'} 698 | 699 | estree-walker@3.0.3: 700 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 701 | 702 | esutils@2.0.3: 703 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 704 | engines: {node: '>=0.10.0'} 705 | 706 | execa@8.0.1: 707 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 708 | engines: {node: '>=16.17'} 709 | 710 | fast-deep-equal@3.1.3: 711 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 712 | 713 | fast-json-stable-stringify@2.1.0: 714 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 715 | 716 | fast-levenshtein@2.0.6: 717 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 718 | 719 | fastq@1.17.1: 720 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 721 | 722 | file-entry-cache@8.0.0: 723 | resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 724 | engines: {node: '>=16.0.0'} 725 | 726 | fill-range@7.1.1: 727 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 728 | engines: {node: '>=8'} 729 | 730 | find-up@5.0.0: 731 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 732 | engines: {node: '>=10'} 733 | 734 | flat-cache@4.0.1: 735 | resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 736 | engines: {node: '>=16'} 737 | 738 | flatted@3.3.1: 739 | resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} 740 | 741 | fs.realpath@1.0.0: 742 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 743 | 744 | fsevents@2.3.3: 745 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 746 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 747 | os: [darwin] 748 | 749 | get-func-name@2.0.2: 750 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 751 | 752 | get-stream@8.0.1: 753 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 754 | engines: {node: '>=16'} 755 | 756 | glob-parent@5.1.2: 757 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 758 | engines: {node: '>= 6'} 759 | 760 | glob-parent@6.0.2: 761 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 762 | engines: {node: '>=10.13.0'} 763 | 764 | glob@7.2.3: 765 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 766 | deprecated: Glob versions prior to v9 are no longer supported 767 | 768 | glob@8.1.0: 769 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 770 | engines: {node: '>=12'} 771 | deprecated: Glob versions prior to v9 are no longer supported 772 | 773 | globals@14.0.0: 774 | resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 775 | engines: {node: '>=18'} 776 | 777 | globals@15.9.0: 778 | resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} 779 | engines: {node: '>=18'} 780 | 781 | globalyzer@0.1.0: 782 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 783 | 784 | globrex@0.1.2: 785 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 786 | 787 | graceful-fs@4.2.11: 788 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 789 | 790 | has-flag@4.0.0: 791 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 792 | engines: {node: '>=8'} 793 | 794 | human-signals@5.0.0: 795 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 796 | engines: {node: '>=16.17.0'} 797 | 798 | ignore-walk@5.0.1: 799 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 800 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 801 | 802 | ignore@5.3.1: 803 | resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} 804 | engines: {node: '>= 4'} 805 | 806 | import-fresh@3.3.0: 807 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 808 | engines: {node: '>=6'} 809 | 810 | import-meta-resolve@4.1.0: 811 | resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} 812 | 813 | imurmurhash@0.1.4: 814 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 815 | engines: {node: '>=0.8.19'} 816 | 817 | inflight@1.0.6: 818 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 819 | deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. 820 | 821 | inherits@2.0.4: 822 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 823 | 824 | is-binary-path@2.1.0: 825 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 826 | engines: {node: '>=8'} 827 | 828 | is-extglob@2.1.1: 829 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 830 | engines: {node: '>=0.10.0'} 831 | 832 | is-glob@4.0.3: 833 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 834 | engines: {node: '>=0.10.0'} 835 | 836 | is-number@7.0.0: 837 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 838 | engines: {node: '>=0.12.0'} 839 | 840 | is-path-inside@3.0.3: 841 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 842 | engines: {node: '>=8'} 843 | 844 | is-reference@3.0.2: 845 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 846 | 847 | is-stream@3.0.0: 848 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 849 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 850 | 851 | isexe@2.0.0: 852 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 853 | 854 | js-yaml@4.1.0: 855 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 856 | hasBin: true 857 | 858 | json-buffer@3.0.1: 859 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 860 | 861 | json-schema-traverse@0.4.1: 862 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 863 | 864 | json-stable-stringify-without-jsonify@1.0.1: 865 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 866 | 867 | keyv@4.5.4: 868 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 869 | 870 | kleur@4.1.5: 871 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 872 | engines: {node: '>=6'} 873 | 874 | known-css-properties@0.34.0: 875 | resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} 876 | 877 | levn@0.4.1: 878 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 879 | engines: {node: '>= 0.8.0'} 880 | 881 | lilconfig@2.1.0: 882 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 883 | engines: {node: '>=10'} 884 | 885 | locate-character@3.0.0: 886 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 887 | 888 | locate-path@6.0.0: 889 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 890 | engines: {node: '>=10'} 891 | 892 | lodash.merge@4.6.2: 893 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 894 | 895 | loupe@3.1.1: 896 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} 897 | 898 | lower-case@2.0.2: 899 | resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} 900 | 901 | magic-string@0.30.11: 902 | resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} 903 | 904 | merge-stream@2.0.0: 905 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 906 | 907 | mimic-fn@4.0.0: 908 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 909 | engines: {node: '>=12'} 910 | 911 | min-indent@1.0.1: 912 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 913 | engines: {node: '>=4'} 914 | 915 | minimatch@3.1.2: 916 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 917 | 918 | minimatch@5.1.6: 919 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 920 | engines: {node: '>=10'} 921 | 922 | minimist@1.2.8: 923 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 924 | 925 | mkdirp@0.5.6: 926 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 927 | hasBin: true 928 | 929 | mri@1.2.0: 930 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 931 | engines: {node: '>=4'} 932 | 933 | mrmime@2.0.0: 934 | resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} 935 | engines: {node: '>=10'} 936 | 937 | ms@2.1.2: 938 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 939 | 940 | nanoid@3.3.7: 941 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 942 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 943 | hasBin: true 944 | 945 | natural-compare@1.4.0: 946 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 947 | 948 | no-case@3.0.4: 949 | resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} 950 | 951 | normalize-path@3.0.0: 952 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 953 | engines: {node: '>=0.10.0'} 954 | 955 | npm-bundled@2.0.1: 956 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 957 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 958 | 959 | npm-normalize-package-bin@2.0.0: 960 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 961 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 962 | 963 | npm-packlist@5.1.3: 964 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 965 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 966 | hasBin: true 967 | 968 | npm-run-path@5.3.0: 969 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 970 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 971 | 972 | once@1.4.0: 973 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 974 | 975 | onetime@6.0.0: 976 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 977 | engines: {node: '>=12'} 978 | 979 | optionator@0.9.4: 980 | resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 981 | engines: {node: '>= 0.8.0'} 982 | 983 | p-limit@3.1.0: 984 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 985 | engines: {node: '>=10'} 986 | 987 | p-locate@5.0.0: 988 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 989 | engines: {node: '>=10'} 990 | 991 | parent-module@1.0.1: 992 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 993 | engines: {node: '>=6'} 994 | 995 | pascal-case@3.1.2: 996 | resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} 997 | 998 | path-exists@4.0.0: 999 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1000 | engines: {node: '>=8'} 1001 | 1002 | path-is-absolute@1.0.1: 1003 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1004 | engines: {node: '>=0.10.0'} 1005 | 1006 | path-key@3.1.1: 1007 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1008 | engines: {node: '>=8'} 1009 | 1010 | path-key@4.0.0: 1011 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1012 | engines: {node: '>=12'} 1013 | 1014 | pathe@1.1.2: 1015 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1016 | 1017 | pathval@2.0.0: 1018 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1019 | engines: {node: '>= 14.16'} 1020 | 1021 | picocolors@1.0.1: 1022 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 1023 | 1024 | picomatch@2.3.1: 1025 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1026 | engines: {node: '>=8.6'} 1027 | 1028 | postcss-load-config@3.1.4: 1029 | resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} 1030 | engines: {node: '>= 10'} 1031 | peerDependencies: 1032 | postcss: '>=8.0.9' 1033 | ts-node: '>=9.0.0' 1034 | peerDependenciesMeta: 1035 | postcss: 1036 | optional: true 1037 | ts-node: 1038 | optional: true 1039 | 1040 | postcss-safe-parser@6.0.0: 1041 | resolution: {integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==} 1042 | engines: {node: '>=12.0'} 1043 | peerDependencies: 1044 | postcss: ^8.3.3 1045 | 1046 | postcss-scss@4.0.9: 1047 | resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} 1048 | engines: {node: '>=12.0'} 1049 | peerDependencies: 1050 | postcss: ^8.4.29 1051 | 1052 | postcss-selector-parser@6.1.1: 1053 | resolution: {integrity: sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==} 1054 | engines: {node: '>=4'} 1055 | 1056 | postcss@8.4.40: 1057 | resolution: {integrity: sha512-YF2kKIUzAofPMpfH6hOi2cGnv/HrUlfucspc7pDyvv7kGdqXrfj8SCl/t8owkEgKEuu8ZcRjSOxFxVLqwChZ2Q==} 1058 | engines: {node: ^10 || ^12 || >=14} 1059 | 1060 | prelude-ls@1.2.1: 1061 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 1062 | engines: {node: '>= 0.8.0'} 1063 | 1064 | prettier-plugin-svelte@3.2.6: 1065 | resolution: {integrity: sha512-Y1XWLw7vXUQQZmgv1JAEiLcErqUniAF2wO7QJsw8BVMvpLET2dI5WpEIEJx1r11iHVdSMzQxivyfrH9On9t2IQ==} 1066 | peerDependencies: 1067 | prettier: ^3.0.0 1068 | svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 1069 | 1070 | prettier@3.3.3: 1071 | resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} 1072 | engines: {node: '>=14'} 1073 | hasBin: true 1074 | 1075 | publint@0.2.9: 1076 | resolution: {integrity: sha512-nITKS1NSwD68PQlts0ntryhxrWObep6P0CCycwi1lgXI+K7uKyacMYRRCQi7hTae8imkI3FCi0FlgnwLxjM8yA==} 1077 | engines: {node: '>=16'} 1078 | hasBin: true 1079 | 1080 | punycode@2.3.1: 1081 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 1082 | engines: {node: '>=6'} 1083 | 1084 | queue-microtask@1.2.3: 1085 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1086 | 1087 | readdirp@3.6.0: 1088 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1089 | engines: {node: '>=8.10.0'} 1090 | 1091 | resolve-from@4.0.0: 1092 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1093 | engines: {node: '>=4'} 1094 | 1095 | reusify@1.0.4: 1096 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1097 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1098 | 1099 | rimraf@2.7.1: 1100 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1101 | deprecated: Rimraf versions prior to v4 are no longer supported 1102 | hasBin: true 1103 | 1104 | rollup@4.19.2: 1105 | resolution: {integrity: sha512-6/jgnN1svF9PjNYJ4ya3l+cqutg49vOZ4rVgsDKxdl+5gpGPnByFXWGyfH9YGx9i3nfBwSu1Iyu6vGwFFA0BdQ==} 1106 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1107 | hasBin: true 1108 | 1109 | run-parallel@1.2.0: 1110 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1111 | 1112 | sade@1.8.1: 1113 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1114 | engines: {node: '>=6'} 1115 | 1116 | sander@0.5.1: 1117 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1118 | 1119 | semver@7.6.3: 1120 | resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 1121 | engines: {node: '>=10'} 1122 | hasBin: true 1123 | 1124 | set-cookie-parser@2.7.0: 1125 | resolution: {integrity: sha512-lXLOiqpkUumhRdFF3k1osNXCy9akgx/dyPZ5p8qAg9seJzXr5ZrlqZuWIMuY6ejOsVLE6flJ5/h3lsn57fQ/PQ==} 1126 | 1127 | shebang-command@2.0.0: 1128 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1129 | engines: {node: '>=8'} 1130 | 1131 | shebang-regex@3.0.0: 1132 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1133 | engines: {node: '>=8'} 1134 | 1135 | siginfo@2.0.0: 1136 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1137 | 1138 | signal-exit@4.1.0: 1139 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1140 | engines: {node: '>=14'} 1141 | 1142 | sirv@2.0.4: 1143 | resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} 1144 | engines: {node: '>= 10'} 1145 | 1146 | sorcery@0.11.1: 1147 | resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} 1148 | hasBin: true 1149 | 1150 | source-map-js@1.2.0: 1151 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 1152 | engines: {node: '>=0.10.0'} 1153 | 1154 | stackback@0.0.2: 1155 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1156 | 1157 | std-env@3.7.0: 1158 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 1159 | 1160 | strip-ansi@6.0.1: 1161 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1162 | engines: {node: '>=8'} 1163 | 1164 | strip-final-newline@3.0.0: 1165 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1166 | engines: {node: '>=12'} 1167 | 1168 | strip-indent@3.0.0: 1169 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1170 | engines: {node: '>=8'} 1171 | 1172 | strip-json-comments@3.1.1: 1173 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 1174 | engines: {node: '>=8'} 1175 | 1176 | supports-color@7.2.0: 1177 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 1178 | engines: {node: '>=8'} 1179 | 1180 | svelte-check@3.8.5: 1181 | resolution: {integrity: sha512-3OGGgr9+bJ/+1nbPgsvulkLC48xBsqsgtc8Wam281H4G9F5v3mYGa2bHRsPuwHC5brKl4AxJH95QF73kmfihGQ==} 1182 | hasBin: true 1183 | peerDependencies: 1184 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 1185 | 1186 | svelte-eslint-parser@0.41.0: 1187 | resolution: {integrity: sha512-L6f4hOL+AbgfBIB52Z310pg1d2QjRqm7wy3kI1W6hhdhX5bvu7+f0R6w4ykp5HoDdzq+vGhIJmsisaiJDGmVfA==} 1188 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1189 | peerDependencies: 1190 | svelte: ^3.37.0 || ^4.0.0 || ^5.0.0-next.191 1191 | peerDependenciesMeta: 1192 | svelte: 1193 | optional: true 1194 | 1195 | svelte-hmr@0.16.0: 1196 | resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==} 1197 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1198 | peerDependencies: 1199 | svelte: ^3.19.0 || ^4.0.0 1200 | 1201 | svelte-preprocess@5.1.4: 1202 | resolution: {integrity: sha512-IvnbQ6D6Ao3Gg6ftiM5tdbR6aAETwjhHV+UKGf5bHGYR69RQvF1ho0JKPcbUON4vy4R7zom13jPjgdOWCQ5hDA==} 1203 | engines: {node: '>= 16.0.0'} 1204 | peerDependencies: 1205 | '@babel/core': ^7.10.2 1206 | coffeescript: ^2.5.1 1207 | less: ^3.11.3 || ^4.0.0 1208 | postcss: ^7 || ^8 1209 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 1210 | pug: ^3.0.0 1211 | sass: ^1.26.8 1212 | stylus: ^0.55.0 1213 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 1214 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 1215 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 1216 | peerDependenciesMeta: 1217 | '@babel/core': 1218 | optional: true 1219 | coffeescript: 1220 | optional: true 1221 | less: 1222 | optional: true 1223 | postcss: 1224 | optional: true 1225 | postcss-load-config: 1226 | optional: true 1227 | pug: 1228 | optional: true 1229 | sass: 1230 | optional: true 1231 | stylus: 1232 | optional: true 1233 | sugarss: 1234 | optional: true 1235 | typescript: 1236 | optional: true 1237 | 1238 | svelte2tsx@0.7.15: 1239 | resolution: {integrity: sha512-91RbLJI448FR1UEZqXSS3ucVMERuWo8ACOhxfkBPK1CL2ocGMOC5bwc8tzFvb/Ji8NqZ7wmSGfvRebcUsiauKA==} 1240 | peerDependencies: 1241 | svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 1242 | typescript: ^4.9.4 || ^5.0.0 1243 | 1244 | svelte@5.0.0-next.189: 1245 | resolution: {integrity: sha512-KQ3mJimU/ku2tOMoXMu43RlxDP9EY/1NrB87kXQBPv64+WUKHn4PfGw1cDtqrbCkl4zE3sA+p0QyiI6PfsXbWQ==} 1246 | engines: {node: '>=18'} 1247 | 1248 | text-table@0.2.0: 1249 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 1250 | 1251 | tiny-glob@0.2.9: 1252 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 1253 | 1254 | tinybench@2.8.0: 1255 | resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} 1256 | 1257 | tinypool@1.0.0: 1258 | resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} 1259 | engines: {node: ^18.0.0 || >=20.0.0} 1260 | 1261 | tinyrainbow@1.2.0: 1262 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1263 | engines: {node: '>=14.0.0'} 1264 | 1265 | tinyspy@3.0.0: 1266 | resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} 1267 | engines: {node: '>=14.0.0'} 1268 | 1269 | to-fast-properties@2.0.0: 1270 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 1271 | engines: {node: '>=4'} 1272 | 1273 | to-regex-range@5.0.1: 1274 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1275 | engines: {node: '>=8.0'} 1276 | 1277 | totalist@3.0.1: 1278 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1279 | engines: {node: '>=6'} 1280 | 1281 | tslib@2.6.3: 1282 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 1283 | 1284 | type-check@0.4.0: 1285 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 1286 | engines: {node: '>= 0.8.0'} 1287 | 1288 | typescript@5.5.4: 1289 | resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} 1290 | engines: {node: '>=14.17'} 1291 | hasBin: true 1292 | 1293 | undici-types@6.11.1: 1294 | resolution: {integrity: sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==} 1295 | 1296 | uri-js@4.4.1: 1297 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 1298 | 1299 | util-deprecate@1.0.2: 1300 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1301 | 1302 | vite-node@2.0.5: 1303 | resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} 1304 | engines: {node: ^18.0.0 || >=20.0.0} 1305 | hasBin: true 1306 | 1307 | vite@5.3.5: 1308 | resolution: {integrity: sha512-MdjglKR6AQXQb9JGiS7Rc2wC6uMjcm7Go/NHNO63EwiJXfuk9PgqiP/n5IDJCziMkfw9n4Ubp7lttNwz+8ZVKA==} 1309 | engines: {node: ^18.0.0 || >=20.0.0} 1310 | hasBin: true 1311 | peerDependencies: 1312 | '@types/node': ^18.0.0 || >=20.0.0 1313 | less: '*' 1314 | lightningcss: ^1.21.0 1315 | sass: '*' 1316 | stylus: '*' 1317 | sugarss: '*' 1318 | terser: ^5.4.0 1319 | peerDependenciesMeta: 1320 | '@types/node': 1321 | optional: true 1322 | less: 1323 | optional: true 1324 | lightningcss: 1325 | optional: true 1326 | sass: 1327 | optional: true 1328 | stylus: 1329 | optional: true 1330 | sugarss: 1331 | optional: true 1332 | terser: 1333 | optional: true 1334 | 1335 | vitefu@0.2.5: 1336 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} 1337 | peerDependencies: 1338 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 1339 | peerDependenciesMeta: 1340 | vite: 1341 | optional: true 1342 | 1343 | vitest@2.0.5: 1344 | resolution: {integrity: sha512-8GUxONfauuIdeSl5f9GTgVEpg5BTOlplET4WEDaeY2QBiN8wSm68vxN/tb5z405OwppfoCavnwXafiaYBC/xOA==} 1345 | engines: {node: ^18.0.0 || >=20.0.0} 1346 | hasBin: true 1347 | peerDependencies: 1348 | '@edge-runtime/vm': '*' 1349 | '@types/node': ^18.0.0 || >=20.0.0 1350 | '@vitest/browser': 2.0.5 1351 | '@vitest/ui': 2.0.5 1352 | happy-dom: '*' 1353 | jsdom: '*' 1354 | peerDependenciesMeta: 1355 | '@edge-runtime/vm': 1356 | optional: true 1357 | '@types/node': 1358 | optional: true 1359 | '@vitest/browser': 1360 | optional: true 1361 | '@vitest/ui': 1362 | optional: true 1363 | happy-dom: 1364 | optional: true 1365 | jsdom: 1366 | optional: true 1367 | 1368 | which@2.0.2: 1369 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1370 | engines: {node: '>= 8'} 1371 | hasBin: true 1372 | 1373 | why-is-node-running@2.3.0: 1374 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1375 | engines: {node: '>=8'} 1376 | hasBin: true 1377 | 1378 | word-wrap@1.2.5: 1379 | resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 1380 | engines: {node: '>=0.10.0'} 1381 | 1382 | wrappy@1.0.2: 1383 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1384 | 1385 | yaml@1.10.2: 1386 | resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} 1387 | engines: {node: '>= 6'} 1388 | 1389 | yocto-queue@0.1.0: 1390 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 1391 | engines: {node: '>=10'} 1392 | 1393 | zimmerframe@1.1.2: 1394 | resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} 1395 | 1396 | snapshots: 1397 | 1398 | '@ampproject/remapping@2.3.0': 1399 | dependencies: 1400 | '@jridgewell/gen-mapping': 0.3.5 1401 | '@jridgewell/trace-mapping': 0.3.25 1402 | 1403 | '@babel/helper-string-parser@7.24.8': {} 1404 | 1405 | '@babel/helper-validator-identifier@7.24.7': {} 1406 | 1407 | '@babel/parser@7.25.3': 1408 | dependencies: 1409 | '@babel/types': 7.25.2 1410 | 1411 | '@babel/types@7.25.2': 1412 | dependencies: 1413 | '@babel/helper-string-parser': 7.24.8 1414 | '@babel/helper-validator-identifier': 7.24.7 1415 | to-fast-properties: 2.0.0 1416 | 1417 | '@esbuild/aix-ppc64@0.21.5': 1418 | optional: true 1419 | 1420 | '@esbuild/android-arm64@0.21.5': 1421 | optional: true 1422 | 1423 | '@esbuild/android-arm@0.21.5': 1424 | optional: true 1425 | 1426 | '@esbuild/android-x64@0.21.5': 1427 | optional: true 1428 | 1429 | '@esbuild/darwin-arm64@0.21.5': 1430 | optional: true 1431 | 1432 | '@esbuild/darwin-x64@0.21.5': 1433 | optional: true 1434 | 1435 | '@esbuild/freebsd-arm64@0.21.5': 1436 | optional: true 1437 | 1438 | '@esbuild/freebsd-x64@0.21.5': 1439 | optional: true 1440 | 1441 | '@esbuild/linux-arm64@0.21.5': 1442 | optional: true 1443 | 1444 | '@esbuild/linux-arm@0.21.5': 1445 | optional: true 1446 | 1447 | '@esbuild/linux-ia32@0.21.5': 1448 | optional: true 1449 | 1450 | '@esbuild/linux-loong64@0.21.5': 1451 | optional: true 1452 | 1453 | '@esbuild/linux-mips64el@0.21.5': 1454 | optional: true 1455 | 1456 | '@esbuild/linux-ppc64@0.21.5': 1457 | optional: true 1458 | 1459 | '@esbuild/linux-riscv64@0.21.5': 1460 | optional: true 1461 | 1462 | '@esbuild/linux-s390x@0.21.5': 1463 | optional: true 1464 | 1465 | '@esbuild/linux-x64@0.21.5': 1466 | optional: true 1467 | 1468 | '@esbuild/netbsd-x64@0.21.5': 1469 | optional: true 1470 | 1471 | '@esbuild/openbsd-x64@0.21.5': 1472 | optional: true 1473 | 1474 | '@esbuild/sunos-x64@0.21.5': 1475 | optional: true 1476 | 1477 | '@esbuild/win32-arm64@0.21.5': 1478 | optional: true 1479 | 1480 | '@esbuild/win32-ia32@0.21.5': 1481 | optional: true 1482 | 1483 | '@esbuild/win32-x64@0.21.5': 1484 | optional: true 1485 | 1486 | '@eslint-community/eslint-utils@4.4.0(eslint@9.8.0)': 1487 | dependencies: 1488 | eslint: 9.8.0 1489 | eslint-visitor-keys: 3.4.3 1490 | 1491 | '@eslint-community/regexpp@4.11.0': {} 1492 | 1493 | '@eslint/config-array@0.17.1': 1494 | dependencies: 1495 | '@eslint/object-schema': 2.1.4 1496 | debug: 4.3.6 1497 | minimatch: 3.1.2 1498 | transitivePeerDependencies: 1499 | - supports-color 1500 | 1501 | '@eslint/eslintrc@3.1.0': 1502 | dependencies: 1503 | ajv: 6.12.6 1504 | debug: 4.3.6 1505 | espree: 10.1.0 1506 | globals: 14.0.0 1507 | ignore: 5.3.1 1508 | import-fresh: 3.3.0 1509 | js-yaml: 4.1.0 1510 | minimatch: 3.1.2 1511 | strip-json-comments: 3.1.1 1512 | transitivePeerDependencies: 1513 | - supports-color 1514 | 1515 | '@eslint/js@9.8.0': {} 1516 | 1517 | '@eslint/object-schema@2.1.4': {} 1518 | 1519 | '@humanwhocodes/module-importer@1.0.1': {} 1520 | 1521 | '@humanwhocodes/retry@0.3.0': {} 1522 | 1523 | '@jridgewell/gen-mapping@0.3.5': 1524 | dependencies: 1525 | '@jridgewell/set-array': 1.2.1 1526 | '@jridgewell/sourcemap-codec': 1.5.0 1527 | '@jridgewell/trace-mapping': 0.3.25 1528 | 1529 | '@jridgewell/resolve-uri@3.1.2': {} 1530 | 1531 | '@jridgewell/set-array@1.2.1': {} 1532 | 1533 | '@jridgewell/sourcemap-codec@1.5.0': {} 1534 | 1535 | '@jridgewell/trace-mapping@0.3.25': 1536 | dependencies: 1537 | '@jridgewell/resolve-uri': 3.1.2 1538 | '@jridgewell/sourcemap-codec': 1.5.0 1539 | 1540 | '@nodelib/fs.scandir@2.1.5': 1541 | dependencies: 1542 | '@nodelib/fs.stat': 2.0.5 1543 | run-parallel: 1.2.0 1544 | 1545 | '@nodelib/fs.stat@2.0.5': {} 1546 | 1547 | '@nodelib/fs.walk@1.2.8': 1548 | dependencies: 1549 | '@nodelib/fs.scandir': 2.1.5 1550 | fastq: 1.17.1 1551 | 1552 | '@polka/url@1.0.0-next.25': {} 1553 | 1554 | '@rollup/rollup-android-arm-eabi@4.19.2': 1555 | optional: true 1556 | 1557 | '@rollup/rollup-android-arm64@4.19.2': 1558 | optional: true 1559 | 1560 | '@rollup/rollup-darwin-arm64@4.19.2': 1561 | optional: true 1562 | 1563 | '@rollup/rollup-darwin-x64@4.19.2': 1564 | optional: true 1565 | 1566 | '@rollup/rollup-linux-arm-gnueabihf@4.19.2': 1567 | optional: true 1568 | 1569 | '@rollup/rollup-linux-arm-musleabihf@4.19.2': 1570 | optional: true 1571 | 1572 | '@rollup/rollup-linux-arm64-gnu@4.19.2': 1573 | optional: true 1574 | 1575 | '@rollup/rollup-linux-arm64-musl@4.19.2': 1576 | optional: true 1577 | 1578 | '@rollup/rollup-linux-powerpc64le-gnu@4.19.2': 1579 | optional: true 1580 | 1581 | '@rollup/rollup-linux-riscv64-gnu@4.19.2': 1582 | optional: true 1583 | 1584 | '@rollup/rollup-linux-s390x-gnu@4.19.2': 1585 | optional: true 1586 | 1587 | '@rollup/rollup-linux-x64-gnu@4.19.2': 1588 | optional: true 1589 | 1590 | '@rollup/rollup-linux-x64-musl@4.19.2': 1591 | optional: true 1592 | 1593 | '@rollup/rollup-win32-arm64-msvc@4.19.2': 1594 | optional: true 1595 | 1596 | '@rollup/rollup-win32-ia32-msvc@4.19.2': 1597 | optional: true 1598 | 1599 | '@rollup/rollup-win32-x64-msvc@4.19.2': 1600 | optional: true 1601 | 1602 | '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))': 1603 | dependencies: 1604 | '@sveltejs/kit': 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 1605 | import-meta-resolve: 4.1.0 1606 | 1607 | '@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2))': 1608 | dependencies: 1609 | '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 1610 | '@types/cookie': 0.6.0 1611 | cookie: 0.6.0 1612 | devalue: 5.0.0 1613 | esm-env: 1.0.0 1614 | import-meta-resolve: 4.1.0 1615 | kleur: 4.1.5 1616 | magic-string: 0.30.11 1617 | mrmime: 2.0.0 1618 | sade: 1.8.1 1619 | set-cookie-parser: 2.7.0 1620 | sirv: 2.0.4 1621 | svelte: 5.0.0-next.189 1622 | tiny-glob: 0.2.9 1623 | vite: 5.3.5(@types/node@22.0.2) 1624 | 1625 | '@sveltejs/package@2.3.2(svelte@5.0.0-next.189)(typescript@5.5.4)': 1626 | dependencies: 1627 | chokidar: 3.6.0 1628 | kleur: 4.1.5 1629 | sade: 1.8.1 1630 | semver: 7.6.3 1631 | svelte: 5.0.0-next.189 1632 | svelte2tsx: 0.7.15(svelte@5.0.0-next.189)(typescript@5.5.4) 1633 | transitivePeerDependencies: 1634 | - typescript 1635 | 1636 | '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2))': 1637 | dependencies: 1638 | '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 1639 | debug: 4.3.6 1640 | svelte: 5.0.0-next.189 1641 | vite: 5.3.5(@types/node@22.0.2) 1642 | transitivePeerDependencies: 1643 | - supports-color 1644 | 1645 | '@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2))': 1646 | dependencies: 1647 | '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)))(svelte@5.0.0-next.189)(vite@5.3.5(@types/node@22.0.2)) 1648 | debug: 4.3.6 1649 | deepmerge: 4.3.1 1650 | kleur: 4.1.5 1651 | magic-string: 0.30.11 1652 | svelte: 5.0.0-next.189 1653 | svelte-hmr: 0.16.0(svelte@5.0.0-next.189) 1654 | vite: 5.3.5(@types/node@22.0.2) 1655 | vitefu: 0.2.5(vite@5.3.5(@types/node@22.0.2)) 1656 | transitivePeerDependencies: 1657 | - supports-color 1658 | 1659 | '@types/cookie@0.6.0': {} 1660 | 1661 | '@types/eslint@9.6.0': 1662 | dependencies: 1663 | '@types/estree': 1.0.5 1664 | '@types/json-schema': 7.0.15 1665 | 1666 | '@types/estree@1.0.5': {} 1667 | 1668 | '@types/json-schema@7.0.15': {} 1669 | 1670 | '@types/node@22.0.2': 1671 | dependencies: 1672 | undici-types: 6.11.1 1673 | 1674 | '@types/pug@2.0.10': {} 1675 | 1676 | '@vitest/expect@2.0.5': 1677 | dependencies: 1678 | '@vitest/spy': 2.0.5 1679 | '@vitest/utils': 2.0.5 1680 | chai: 5.1.1 1681 | tinyrainbow: 1.2.0 1682 | 1683 | '@vitest/pretty-format@2.0.5': 1684 | dependencies: 1685 | tinyrainbow: 1.2.0 1686 | 1687 | '@vitest/runner@2.0.5': 1688 | dependencies: 1689 | '@vitest/utils': 2.0.5 1690 | pathe: 1.1.2 1691 | 1692 | '@vitest/snapshot@2.0.5': 1693 | dependencies: 1694 | '@vitest/pretty-format': 2.0.5 1695 | magic-string: 0.30.11 1696 | pathe: 1.1.2 1697 | 1698 | '@vitest/spy@2.0.5': 1699 | dependencies: 1700 | tinyspy: 3.0.0 1701 | 1702 | '@vitest/utils@2.0.5': 1703 | dependencies: 1704 | '@vitest/pretty-format': 2.0.5 1705 | estree-walker: 3.0.3 1706 | loupe: 3.1.1 1707 | tinyrainbow: 1.2.0 1708 | 1709 | acorn-jsx@5.3.2(acorn@8.12.1): 1710 | dependencies: 1711 | acorn: 8.12.1 1712 | 1713 | acorn-typescript@1.4.13(acorn@8.12.1): 1714 | dependencies: 1715 | acorn: 8.12.1 1716 | 1717 | acorn@8.12.1: {} 1718 | 1719 | ajv@6.12.6: 1720 | dependencies: 1721 | fast-deep-equal: 3.1.3 1722 | fast-json-stable-stringify: 2.1.0 1723 | json-schema-traverse: 0.4.1 1724 | uri-js: 4.4.1 1725 | 1726 | ansi-regex@5.0.1: {} 1727 | 1728 | ansi-styles@4.3.0: 1729 | dependencies: 1730 | color-convert: 2.0.1 1731 | 1732 | anymatch@3.1.3: 1733 | dependencies: 1734 | normalize-path: 3.0.0 1735 | picomatch: 2.3.1 1736 | 1737 | argparse@2.0.1: {} 1738 | 1739 | aria-query@5.3.0: 1740 | dependencies: 1741 | dequal: 2.0.3 1742 | 1743 | arson@0.2.6: {} 1744 | 1745 | assertion-error@2.0.1: {} 1746 | 1747 | ast-kit@1.0.0: 1748 | dependencies: 1749 | '@babel/parser': 7.25.3 1750 | pathe: 1.1.2 1751 | 1752 | axobject-query@4.1.0: {} 1753 | 1754 | balanced-match@1.0.2: {} 1755 | 1756 | binary-extensions@2.3.0: {} 1757 | 1758 | brace-expansion@1.1.11: 1759 | dependencies: 1760 | balanced-match: 1.0.2 1761 | concat-map: 0.0.1 1762 | 1763 | brace-expansion@2.0.1: 1764 | dependencies: 1765 | balanced-match: 1.0.2 1766 | 1767 | braces@3.0.3: 1768 | dependencies: 1769 | fill-range: 7.1.1 1770 | 1771 | buffer-crc32@1.0.0: {} 1772 | 1773 | cac@6.7.14: {} 1774 | 1775 | callsites@3.1.0: {} 1776 | 1777 | chai@5.1.1: 1778 | dependencies: 1779 | assertion-error: 2.0.1 1780 | check-error: 2.1.1 1781 | deep-eql: 5.0.2 1782 | loupe: 3.1.1 1783 | pathval: 2.0.0 1784 | 1785 | chalk@4.1.2: 1786 | dependencies: 1787 | ansi-styles: 4.3.0 1788 | supports-color: 7.2.0 1789 | 1790 | check-error@2.1.1: {} 1791 | 1792 | chokidar@3.6.0: 1793 | dependencies: 1794 | anymatch: 3.1.3 1795 | braces: 3.0.3 1796 | glob-parent: 5.1.2 1797 | is-binary-path: 2.1.0 1798 | is-glob: 4.0.3 1799 | normalize-path: 3.0.0 1800 | readdirp: 3.6.0 1801 | optionalDependencies: 1802 | fsevents: 2.3.3 1803 | 1804 | color-convert@2.0.1: 1805 | dependencies: 1806 | color-name: 1.1.4 1807 | 1808 | color-name@1.1.4: {} 1809 | 1810 | concat-map@0.0.1: {} 1811 | 1812 | cookie@0.6.0: {} 1813 | 1814 | cross-spawn@7.0.3: 1815 | dependencies: 1816 | path-key: 3.1.1 1817 | shebang-command: 2.0.0 1818 | which: 2.0.2 1819 | 1820 | cssesc@3.0.0: {} 1821 | 1822 | debug@4.3.6: 1823 | dependencies: 1824 | ms: 2.1.2 1825 | 1826 | dedent-js@1.0.1: {} 1827 | 1828 | deep-eql@5.0.2: {} 1829 | 1830 | deep-is@0.1.4: {} 1831 | 1832 | deepmerge@4.3.1: {} 1833 | 1834 | dequal@2.0.3: {} 1835 | 1836 | detect-indent@6.1.0: {} 1837 | 1838 | devalue@5.0.0: {} 1839 | 1840 | es6-promise@3.3.1: {} 1841 | 1842 | esbuild@0.21.5: 1843 | optionalDependencies: 1844 | '@esbuild/aix-ppc64': 0.21.5 1845 | '@esbuild/android-arm': 0.21.5 1846 | '@esbuild/android-arm64': 0.21.5 1847 | '@esbuild/android-x64': 0.21.5 1848 | '@esbuild/darwin-arm64': 0.21.5 1849 | '@esbuild/darwin-x64': 0.21.5 1850 | '@esbuild/freebsd-arm64': 0.21.5 1851 | '@esbuild/freebsd-x64': 0.21.5 1852 | '@esbuild/linux-arm': 0.21.5 1853 | '@esbuild/linux-arm64': 0.21.5 1854 | '@esbuild/linux-ia32': 0.21.5 1855 | '@esbuild/linux-loong64': 0.21.5 1856 | '@esbuild/linux-mips64el': 0.21.5 1857 | '@esbuild/linux-ppc64': 0.21.5 1858 | '@esbuild/linux-riscv64': 0.21.5 1859 | '@esbuild/linux-s390x': 0.21.5 1860 | '@esbuild/linux-x64': 0.21.5 1861 | '@esbuild/netbsd-x64': 0.21.5 1862 | '@esbuild/openbsd-x64': 0.21.5 1863 | '@esbuild/sunos-x64': 0.21.5 1864 | '@esbuild/win32-arm64': 0.21.5 1865 | '@esbuild/win32-ia32': 0.21.5 1866 | '@esbuild/win32-x64': 0.21.5 1867 | 1868 | escape-string-regexp@4.0.0: {} 1869 | 1870 | eslint-compat-utils@0.5.1(eslint@9.8.0): 1871 | dependencies: 1872 | eslint: 9.8.0 1873 | semver: 7.6.3 1874 | 1875 | eslint-config-prettier@9.1.0(eslint@9.8.0): 1876 | dependencies: 1877 | eslint: 9.8.0 1878 | 1879 | eslint-plugin-svelte@2.43.0(eslint@9.8.0)(svelte@5.0.0-next.189): 1880 | dependencies: 1881 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) 1882 | '@jridgewell/sourcemap-codec': 1.5.0 1883 | eslint: 9.8.0 1884 | eslint-compat-utils: 0.5.1(eslint@9.8.0) 1885 | esutils: 2.0.3 1886 | known-css-properties: 0.34.0 1887 | postcss: 8.4.40 1888 | postcss-load-config: 3.1.4(postcss@8.4.40) 1889 | postcss-safe-parser: 6.0.0(postcss@8.4.40) 1890 | postcss-selector-parser: 6.1.1 1891 | semver: 7.6.3 1892 | svelte-eslint-parser: 0.41.0(svelte@5.0.0-next.189) 1893 | optionalDependencies: 1894 | svelte: 5.0.0-next.189 1895 | transitivePeerDependencies: 1896 | - ts-node 1897 | 1898 | eslint-scope@7.2.2: 1899 | dependencies: 1900 | esrecurse: 4.3.0 1901 | estraverse: 5.3.0 1902 | 1903 | eslint-scope@8.0.2: 1904 | dependencies: 1905 | esrecurse: 4.3.0 1906 | estraverse: 5.3.0 1907 | 1908 | eslint-visitor-keys@3.4.3: {} 1909 | 1910 | eslint-visitor-keys@4.0.0: {} 1911 | 1912 | eslint@9.8.0: 1913 | dependencies: 1914 | '@eslint-community/eslint-utils': 4.4.0(eslint@9.8.0) 1915 | '@eslint-community/regexpp': 4.11.0 1916 | '@eslint/config-array': 0.17.1 1917 | '@eslint/eslintrc': 3.1.0 1918 | '@eslint/js': 9.8.0 1919 | '@humanwhocodes/module-importer': 1.0.1 1920 | '@humanwhocodes/retry': 0.3.0 1921 | '@nodelib/fs.walk': 1.2.8 1922 | ajv: 6.12.6 1923 | chalk: 4.1.2 1924 | cross-spawn: 7.0.3 1925 | debug: 4.3.6 1926 | escape-string-regexp: 4.0.0 1927 | eslint-scope: 8.0.2 1928 | eslint-visitor-keys: 4.0.0 1929 | espree: 10.1.0 1930 | esquery: 1.6.0 1931 | esutils: 2.0.3 1932 | fast-deep-equal: 3.1.3 1933 | file-entry-cache: 8.0.0 1934 | find-up: 5.0.0 1935 | glob-parent: 6.0.2 1936 | ignore: 5.3.1 1937 | imurmurhash: 0.1.4 1938 | is-glob: 4.0.3 1939 | is-path-inside: 3.0.3 1940 | json-stable-stringify-without-jsonify: 1.0.1 1941 | levn: 0.4.1 1942 | lodash.merge: 4.6.2 1943 | minimatch: 3.1.2 1944 | natural-compare: 1.4.0 1945 | optionator: 0.9.4 1946 | strip-ansi: 6.0.1 1947 | text-table: 0.2.0 1948 | transitivePeerDependencies: 1949 | - supports-color 1950 | 1951 | esm-env@1.0.0: {} 1952 | 1953 | espree@10.1.0: 1954 | dependencies: 1955 | acorn: 8.12.1 1956 | acorn-jsx: 5.3.2(acorn@8.12.1) 1957 | eslint-visitor-keys: 4.0.0 1958 | 1959 | espree@9.6.1: 1960 | dependencies: 1961 | acorn: 8.12.1 1962 | acorn-jsx: 5.3.2(acorn@8.12.1) 1963 | eslint-visitor-keys: 3.4.3 1964 | 1965 | esquery@1.6.0: 1966 | dependencies: 1967 | estraverse: 5.3.0 1968 | 1969 | esrap@1.2.2: 1970 | dependencies: 1971 | '@jridgewell/sourcemap-codec': 1.5.0 1972 | '@types/estree': 1.0.5 1973 | 1974 | esrecurse@4.3.0: 1975 | dependencies: 1976 | estraverse: 5.3.0 1977 | 1978 | estraverse@5.3.0: {} 1979 | 1980 | estree-walker@3.0.3: 1981 | dependencies: 1982 | '@types/estree': 1.0.5 1983 | 1984 | esutils@2.0.3: {} 1985 | 1986 | execa@8.0.1: 1987 | dependencies: 1988 | cross-spawn: 7.0.3 1989 | get-stream: 8.0.1 1990 | human-signals: 5.0.0 1991 | is-stream: 3.0.0 1992 | merge-stream: 2.0.0 1993 | npm-run-path: 5.3.0 1994 | onetime: 6.0.0 1995 | signal-exit: 4.1.0 1996 | strip-final-newline: 3.0.0 1997 | 1998 | fast-deep-equal@3.1.3: {} 1999 | 2000 | fast-json-stable-stringify@2.1.0: {} 2001 | 2002 | fast-levenshtein@2.0.6: {} 2003 | 2004 | fastq@1.17.1: 2005 | dependencies: 2006 | reusify: 1.0.4 2007 | 2008 | file-entry-cache@8.0.0: 2009 | dependencies: 2010 | flat-cache: 4.0.1 2011 | 2012 | fill-range@7.1.1: 2013 | dependencies: 2014 | to-regex-range: 5.0.1 2015 | 2016 | find-up@5.0.0: 2017 | dependencies: 2018 | locate-path: 6.0.0 2019 | path-exists: 4.0.0 2020 | 2021 | flat-cache@4.0.1: 2022 | dependencies: 2023 | flatted: 3.3.1 2024 | keyv: 4.5.4 2025 | 2026 | flatted@3.3.1: {} 2027 | 2028 | fs.realpath@1.0.0: {} 2029 | 2030 | fsevents@2.3.3: 2031 | optional: true 2032 | 2033 | get-func-name@2.0.2: {} 2034 | 2035 | get-stream@8.0.1: {} 2036 | 2037 | glob-parent@5.1.2: 2038 | dependencies: 2039 | is-glob: 4.0.3 2040 | 2041 | glob-parent@6.0.2: 2042 | dependencies: 2043 | is-glob: 4.0.3 2044 | 2045 | glob@7.2.3: 2046 | dependencies: 2047 | fs.realpath: 1.0.0 2048 | inflight: 1.0.6 2049 | inherits: 2.0.4 2050 | minimatch: 3.1.2 2051 | once: 1.4.0 2052 | path-is-absolute: 1.0.1 2053 | 2054 | glob@8.1.0: 2055 | dependencies: 2056 | fs.realpath: 1.0.0 2057 | inflight: 1.0.6 2058 | inherits: 2.0.4 2059 | minimatch: 5.1.6 2060 | once: 1.4.0 2061 | 2062 | globals@14.0.0: {} 2063 | 2064 | globals@15.9.0: {} 2065 | 2066 | globalyzer@0.1.0: {} 2067 | 2068 | globrex@0.1.2: {} 2069 | 2070 | graceful-fs@4.2.11: {} 2071 | 2072 | has-flag@4.0.0: {} 2073 | 2074 | human-signals@5.0.0: {} 2075 | 2076 | ignore-walk@5.0.1: 2077 | dependencies: 2078 | minimatch: 5.1.6 2079 | 2080 | ignore@5.3.1: {} 2081 | 2082 | import-fresh@3.3.0: 2083 | dependencies: 2084 | parent-module: 1.0.1 2085 | resolve-from: 4.0.0 2086 | 2087 | import-meta-resolve@4.1.0: {} 2088 | 2089 | imurmurhash@0.1.4: {} 2090 | 2091 | inflight@1.0.6: 2092 | dependencies: 2093 | once: 1.4.0 2094 | wrappy: 1.0.2 2095 | 2096 | inherits@2.0.4: {} 2097 | 2098 | is-binary-path@2.1.0: 2099 | dependencies: 2100 | binary-extensions: 2.3.0 2101 | 2102 | is-extglob@2.1.1: {} 2103 | 2104 | is-glob@4.0.3: 2105 | dependencies: 2106 | is-extglob: 2.1.1 2107 | 2108 | is-number@7.0.0: {} 2109 | 2110 | is-path-inside@3.0.3: {} 2111 | 2112 | is-reference@3.0.2: 2113 | dependencies: 2114 | '@types/estree': 1.0.5 2115 | 2116 | is-stream@3.0.0: {} 2117 | 2118 | isexe@2.0.0: {} 2119 | 2120 | js-yaml@4.1.0: 2121 | dependencies: 2122 | argparse: 2.0.1 2123 | 2124 | json-buffer@3.0.1: {} 2125 | 2126 | json-schema-traverse@0.4.1: {} 2127 | 2128 | json-stable-stringify-without-jsonify@1.0.1: {} 2129 | 2130 | keyv@4.5.4: 2131 | dependencies: 2132 | json-buffer: 3.0.1 2133 | 2134 | kleur@4.1.5: {} 2135 | 2136 | known-css-properties@0.34.0: {} 2137 | 2138 | levn@0.4.1: 2139 | dependencies: 2140 | prelude-ls: 1.2.1 2141 | type-check: 0.4.0 2142 | 2143 | lilconfig@2.1.0: {} 2144 | 2145 | locate-character@3.0.0: {} 2146 | 2147 | locate-path@6.0.0: 2148 | dependencies: 2149 | p-locate: 5.0.0 2150 | 2151 | lodash.merge@4.6.2: {} 2152 | 2153 | loupe@3.1.1: 2154 | dependencies: 2155 | get-func-name: 2.0.2 2156 | 2157 | lower-case@2.0.2: 2158 | dependencies: 2159 | tslib: 2.6.3 2160 | 2161 | magic-string@0.30.11: 2162 | dependencies: 2163 | '@jridgewell/sourcemap-codec': 1.5.0 2164 | 2165 | merge-stream@2.0.0: {} 2166 | 2167 | mimic-fn@4.0.0: {} 2168 | 2169 | min-indent@1.0.1: {} 2170 | 2171 | minimatch@3.1.2: 2172 | dependencies: 2173 | brace-expansion: 1.1.11 2174 | 2175 | minimatch@5.1.6: 2176 | dependencies: 2177 | brace-expansion: 2.0.1 2178 | 2179 | minimist@1.2.8: {} 2180 | 2181 | mkdirp@0.5.6: 2182 | dependencies: 2183 | minimist: 1.2.8 2184 | 2185 | mri@1.2.0: {} 2186 | 2187 | mrmime@2.0.0: {} 2188 | 2189 | ms@2.1.2: {} 2190 | 2191 | nanoid@3.3.7: {} 2192 | 2193 | natural-compare@1.4.0: {} 2194 | 2195 | no-case@3.0.4: 2196 | dependencies: 2197 | lower-case: 2.0.2 2198 | tslib: 2.6.3 2199 | 2200 | normalize-path@3.0.0: {} 2201 | 2202 | npm-bundled@2.0.1: 2203 | dependencies: 2204 | npm-normalize-package-bin: 2.0.0 2205 | 2206 | npm-normalize-package-bin@2.0.0: {} 2207 | 2208 | npm-packlist@5.1.3: 2209 | dependencies: 2210 | glob: 8.1.0 2211 | ignore-walk: 5.0.1 2212 | npm-bundled: 2.0.1 2213 | npm-normalize-package-bin: 2.0.0 2214 | 2215 | npm-run-path@5.3.0: 2216 | dependencies: 2217 | path-key: 4.0.0 2218 | 2219 | once@1.4.0: 2220 | dependencies: 2221 | wrappy: 1.0.2 2222 | 2223 | onetime@6.0.0: 2224 | dependencies: 2225 | mimic-fn: 4.0.0 2226 | 2227 | optionator@0.9.4: 2228 | dependencies: 2229 | deep-is: 0.1.4 2230 | fast-levenshtein: 2.0.6 2231 | levn: 0.4.1 2232 | prelude-ls: 1.2.1 2233 | type-check: 0.4.0 2234 | word-wrap: 1.2.5 2235 | 2236 | p-limit@3.1.0: 2237 | dependencies: 2238 | yocto-queue: 0.1.0 2239 | 2240 | p-locate@5.0.0: 2241 | dependencies: 2242 | p-limit: 3.1.0 2243 | 2244 | parent-module@1.0.1: 2245 | dependencies: 2246 | callsites: 3.1.0 2247 | 2248 | pascal-case@3.1.2: 2249 | dependencies: 2250 | no-case: 3.0.4 2251 | tslib: 2.6.3 2252 | 2253 | path-exists@4.0.0: {} 2254 | 2255 | path-is-absolute@1.0.1: {} 2256 | 2257 | path-key@3.1.1: {} 2258 | 2259 | path-key@4.0.0: {} 2260 | 2261 | pathe@1.1.2: {} 2262 | 2263 | pathval@2.0.0: {} 2264 | 2265 | picocolors@1.0.1: {} 2266 | 2267 | picomatch@2.3.1: {} 2268 | 2269 | postcss-load-config@3.1.4(postcss@8.4.40): 2270 | dependencies: 2271 | lilconfig: 2.1.0 2272 | yaml: 1.10.2 2273 | optionalDependencies: 2274 | postcss: 8.4.40 2275 | 2276 | postcss-safe-parser@6.0.0(postcss@8.4.40): 2277 | dependencies: 2278 | postcss: 8.4.40 2279 | 2280 | postcss-scss@4.0.9(postcss@8.4.40): 2281 | dependencies: 2282 | postcss: 8.4.40 2283 | 2284 | postcss-selector-parser@6.1.1: 2285 | dependencies: 2286 | cssesc: 3.0.0 2287 | util-deprecate: 1.0.2 2288 | 2289 | postcss@8.4.40: 2290 | dependencies: 2291 | nanoid: 3.3.7 2292 | picocolors: 1.0.1 2293 | source-map-js: 1.2.0 2294 | 2295 | prelude-ls@1.2.1: {} 2296 | 2297 | prettier-plugin-svelte@3.2.6(prettier@3.3.3)(svelte@5.0.0-next.189): 2298 | dependencies: 2299 | prettier: 3.3.3 2300 | svelte: 5.0.0-next.189 2301 | 2302 | prettier@3.3.3: {} 2303 | 2304 | publint@0.2.9: 2305 | dependencies: 2306 | npm-packlist: 5.1.3 2307 | picocolors: 1.0.1 2308 | sade: 1.8.1 2309 | 2310 | punycode@2.3.1: {} 2311 | 2312 | queue-microtask@1.2.3: {} 2313 | 2314 | readdirp@3.6.0: 2315 | dependencies: 2316 | picomatch: 2.3.1 2317 | 2318 | resolve-from@4.0.0: {} 2319 | 2320 | reusify@1.0.4: {} 2321 | 2322 | rimraf@2.7.1: 2323 | dependencies: 2324 | glob: 7.2.3 2325 | 2326 | rollup@4.19.2: 2327 | dependencies: 2328 | '@types/estree': 1.0.5 2329 | optionalDependencies: 2330 | '@rollup/rollup-android-arm-eabi': 4.19.2 2331 | '@rollup/rollup-android-arm64': 4.19.2 2332 | '@rollup/rollup-darwin-arm64': 4.19.2 2333 | '@rollup/rollup-darwin-x64': 4.19.2 2334 | '@rollup/rollup-linux-arm-gnueabihf': 4.19.2 2335 | '@rollup/rollup-linux-arm-musleabihf': 4.19.2 2336 | '@rollup/rollup-linux-arm64-gnu': 4.19.2 2337 | '@rollup/rollup-linux-arm64-musl': 4.19.2 2338 | '@rollup/rollup-linux-powerpc64le-gnu': 4.19.2 2339 | '@rollup/rollup-linux-riscv64-gnu': 4.19.2 2340 | '@rollup/rollup-linux-s390x-gnu': 4.19.2 2341 | '@rollup/rollup-linux-x64-gnu': 4.19.2 2342 | '@rollup/rollup-linux-x64-musl': 4.19.2 2343 | '@rollup/rollup-win32-arm64-msvc': 4.19.2 2344 | '@rollup/rollup-win32-ia32-msvc': 4.19.2 2345 | '@rollup/rollup-win32-x64-msvc': 4.19.2 2346 | fsevents: 2.3.3 2347 | 2348 | run-parallel@1.2.0: 2349 | dependencies: 2350 | queue-microtask: 1.2.3 2351 | 2352 | sade@1.8.1: 2353 | dependencies: 2354 | mri: 1.2.0 2355 | 2356 | sander@0.5.1: 2357 | dependencies: 2358 | es6-promise: 3.3.1 2359 | graceful-fs: 4.2.11 2360 | mkdirp: 0.5.6 2361 | rimraf: 2.7.1 2362 | 2363 | semver@7.6.3: {} 2364 | 2365 | set-cookie-parser@2.7.0: {} 2366 | 2367 | shebang-command@2.0.0: 2368 | dependencies: 2369 | shebang-regex: 3.0.0 2370 | 2371 | shebang-regex@3.0.0: {} 2372 | 2373 | siginfo@2.0.0: {} 2374 | 2375 | signal-exit@4.1.0: {} 2376 | 2377 | sirv@2.0.4: 2378 | dependencies: 2379 | '@polka/url': 1.0.0-next.25 2380 | mrmime: 2.0.0 2381 | totalist: 3.0.1 2382 | 2383 | sorcery@0.11.1: 2384 | dependencies: 2385 | '@jridgewell/sourcemap-codec': 1.5.0 2386 | buffer-crc32: 1.0.0 2387 | minimist: 1.2.8 2388 | sander: 0.5.1 2389 | 2390 | source-map-js@1.2.0: {} 2391 | 2392 | stackback@0.0.2: {} 2393 | 2394 | std-env@3.7.0: {} 2395 | 2396 | strip-ansi@6.0.1: 2397 | dependencies: 2398 | ansi-regex: 5.0.1 2399 | 2400 | strip-final-newline@3.0.0: {} 2401 | 2402 | strip-indent@3.0.0: 2403 | dependencies: 2404 | min-indent: 1.0.1 2405 | 2406 | strip-json-comments@3.1.1: {} 2407 | 2408 | supports-color@7.2.0: 2409 | dependencies: 2410 | has-flag: 4.0.0 2411 | 2412 | svelte-check@3.8.5(postcss-load-config@3.1.4(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.189): 2413 | dependencies: 2414 | '@jridgewell/trace-mapping': 0.3.25 2415 | chokidar: 3.6.0 2416 | picocolors: 1.0.1 2417 | sade: 1.8.1 2418 | svelte: 5.0.0-next.189 2419 | svelte-preprocess: 5.1.4(postcss-load-config@3.1.4(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.189)(typescript@5.5.4) 2420 | typescript: 5.5.4 2421 | transitivePeerDependencies: 2422 | - '@babel/core' 2423 | - coffeescript 2424 | - less 2425 | - postcss 2426 | - postcss-load-config 2427 | - pug 2428 | - sass 2429 | - stylus 2430 | - sugarss 2431 | 2432 | svelte-eslint-parser@0.41.0(svelte@5.0.0-next.189): 2433 | dependencies: 2434 | eslint-scope: 7.2.2 2435 | eslint-visitor-keys: 3.4.3 2436 | espree: 9.6.1 2437 | postcss: 8.4.40 2438 | postcss-scss: 4.0.9(postcss@8.4.40) 2439 | optionalDependencies: 2440 | svelte: 5.0.0-next.189 2441 | 2442 | svelte-hmr@0.16.0(svelte@5.0.0-next.189): 2443 | dependencies: 2444 | svelte: 5.0.0-next.189 2445 | 2446 | svelte-preprocess@5.1.4(postcss-load-config@3.1.4(postcss@8.4.40))(postcss@8.4.40)(svelte@5.0.0-next.189)(typescript@5.5.4): 2447 | dependencies: 2448 | '@types/pug': 2.0.10 2449 | detect-indent: 6.1.0 2450 | magic-string: 0.30.11 2451 | sorcery: 0.11.1 2452 | strip-indent: 3.0.0 2453 | svelte: 5.0.0-next.189 2454 | optionalDependencies: 2455 | postcss: 8.4.40 2456 | postcss-load-config: 3.1.4(postcss@8.4.40) 2457 | typescript: 5.5.4 2458 | 2459 | svelte2tsx@0.7.15(svelte@5.0.0-next.189)(typescript@5.5.4): 2460 | dependencies: 2461 | dedent-js: 1.0.1 2462 | pascal-case: 3.1.2 2463 | svelte: 5.0.0-next.189 2464 | typescript: 5.5.4 2465 | 2466 | svelte@5.0.0-next.189: 2467 | dependencies: 2468 | '@ampproject/remapping': 2.3.0 2469 | '@jridgewell/sourcemap-codec': 1.5.0 2470 | '@types/estree': 1.0.5 2471 | acorn: 8.12.1 2472 | acorn-typescript: 1.4.13(acorn@8.12.1) 2473 | aria-query: 5.3.0 2474 | axobject-query: 4.1.0 2475 | esm-env: 1.0.0 2476 | esrap: 1.2.2 2477 | is-reference: 3.0.2 2478 | locate-character: 3.0.0 2479 | magic-string: 0.30.11 2480 | zimmerframe: 1.1.2 2481 | 2482 | text-table@0.2.0: {} 2483 | 2484 | tiny-glob@0.2.9: 2485 | dependencies: 2486 | globalyzer: 0.1.0 2487 | globrex: 0.1.2 2488 | 2489 | tinybench@2.8.0: {} 2490 | 2491 | tinypool@1.0.0: {} 2492 | 2493 | tinyrainbow@1.2.0: {} 2494 | 2495 | tinyspy@3.0.0: {} 2496 | 2497 | to-fast-properties@2.0.0: {} 2498 | 2499 | to-regex-range@5.0.1: 2500 | dependencies: 2501 | is-number: 7.0.0 2502 | 2503 | totalist@3.0.1: {} 2504 | 2505 | tslib@2.6.3: {} 2506 | 2507 | type-check@0.4.0: 2508 | dependencies: 2509 | prelude-ls: 1.2.1 2510 | 2511 | typescript@5.5.4: {} 2512 | 2513 | undici-types@6.11.1: {} 2514 | 2515 | uri-js@4.4.1: 2516 | dependencies: 2517 | punycode: 2.3.1 2518 | 2519 | util-deprecate@1.0.2: {} 2520 | 2521 | vite-node@2.0.5(@types/node@22.0.2): 2522 | dependencies: 2523 | cac: 6.7.14 2524 | debug: 4.3.6 2525 | pathe: 1.1.2 2526 | tinyrainbow: 1.2.0 2527 | vite: 5.3.5(@types/node@22.0.2) 2528 | transitivePeerDependencies: 2529 | - '@types/node' 2530 | - less 2531 | - lightningcss 2532 | - sass 2533 | - stylus 2534 | - sugarss 2535 | - supports-color 2536 | - terser 2537 | 2538 | vite@5.3.5(@types/node@22.0.2): 2539 | dependencies: 2540 | esbuild: 0.21.5 2541 | postcss: 8.4.40 2542 | rollup: 4.19.2 2543 | optionalDependencies: 2544 | '@types/node': 22.0.2 2545 | fsevents: 2.3.3 2546 | 2547 | vitefu@0.2.5(vite@5.3.5(@types/node@22.0.2)): 2548 | optionalDependencies: 2549 | vite: 5.3.5(@types/node@22.0.2) 2550 | 2551 | vitest@2.0.5(@types/node@22.0.2): 2552 | dependencies: 2553 | '@ampproject/remapping': 2.3.0 2554 | '@vitest/expect': 2.0.5 2555 | '@vitest/pretty-format': 2.0.5 2556 | '@vitest/runner': 2.0.5 2557 | '@vitest/snapshot': 2.0.5 2558 | '@vitest/spy': 2.0.5 2559 | '@vitest/utils': 2.0.5 2560 | chai: 5.1.1 2561 | debug: 4.3.6 2562 | execa: 8.0.1 2563 | magic-string: 0.30.11 2564 | pathe: 1.1.2 2565 | std-env: 3.7.0 2566 | tinybench: 2.8.0 2567 | tinypool: 1.0.0 2568 | tinyrainbow: 1.2.0 2569 | vite: 5.3.5(@types/node@22.0.2) 2570 | vite-node: 2.0.5(@types/node@22.0.2) 2571 | why-is-node-running: 2.3.0 2572 | optionalDependencies: 2573 | '@types/node': 22.0.2 2574 | transitivePeerDependencies: 2575 | - less 2576 | - lightningcss 2577 | - sass 2578 | - stylus 2579 | - sugarss 2580 | - supports-color 2581 | - terser 2582 | 2583 | which@2.0.2: 2584 | dependencies: 2585 | isexe: 2.0.0 2586 | 2587 | why-is-node-running@2.3.0: 2588 | dependencies: 2589 | siginfo: 2.0.0 2590 | stackback: 0.0.2 2591 | 2592 | word-wrap@1.2.5: {} 2593 | 2594 | wrappy@1.0.2: {} 2595 | 2596 | yaml@1.10.2: {} 2597 | 2598 | yocto-queue@0.1.0: {} 2599 | 2600 | zimmerframe@1.1.2: {} 2601 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface PageState {} 9 | // interface Platform {} 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/index.test.js: -------------------------------------------------------------------------------- 1 | import { describe, it, expect } from 'vitest'; 2 | 3 | describe('sum test', () => { 4 | it('adds 1 + 2 to equal 3', () => { 5 | expect(1 + 2).toBe(3); 6 | }); 7 | }); 8 | -------------------------------------------------------------------------------- /src/lib/arson.js: -------------------------------------------------------------------------------- 1 | //@ts-nocheck 2 | 3 | var UNDEFINED_INDEX = -1; 4 | var ARRAY_HOLE_INDEX = -2; 5 | var NAN_INDEX = -3; 6 | var POS_INF_INDEX = -4; 7 | var NEG_INF_INDEX = -5; 8 | var customTypes = Object.create(null); 9 | 10 | const registerType = function(typeName, handlers) { 11 | function check(methodName) { 12 | if (typeof handlers[methodName] !== 'function') { 13 | throw new Error( 14 | 'second argument to ARSON.registerType(' + 15 | JSON.stringify(typeName) + ', ...) ' + 16 | 'must be an object with a ' + methodName + ' method' 17 | ); 18 | } 19 | } 20 | 21 | check('deconstruct'); 22 | check('reconstruct'); 23 | 24 | customTypes[typeName] = handlers; 25 | }; 26 | 27 | var toString = Object.prototype.toString; 28 | var dateTag = '[object Date]'; 29 | var regExpTag = '[object RegExp]'; 30 | var setTag = '[object Set]'; 31 | var mapTag = '[object Map]'; 32 | 33 | typeof Buffer === 'function' && 34 | typeof Buffer.isBuffer === 'function' && 35 | registerType('Buffer', { 36 | deconstruct: function(buf) { 37 | return Buffer.isBuffer(buf) && [buf.toString('base64'), 'base64']; 38 | }, 39 | 40 | // The reconstruct function will be called twice: once with no 41 | // arguments, which allows it to return a placeholder object reference; 42 | // and once with one argument, a copy of the array returned by the 43 | // deconstruct function. For immutable types like Buffer, Date, and 44 | // RegExp, the reconstruct function should return a falsy value when it 45 | // receives no arguments, since there is no way to create an empty 46 | // Buffer or Date and later fill in its contents. For container types 47 | // like Map and Set, the reconstruct function must return an empty 48 | // instance of the container when it receives no arguments, so that we 49 | // can fill in that empty container later. This two-phased strategy is 50 | // essential for decoding containers that contain themselves. 51 | reconstruct: function(args) { 52 | return args && new Buffer(args[0], args[1]); 53 | } 54 | }); 55 | 56 | registerType('Date', { 57 | deconstruct: function(date) { 58 | return toString.call(date) === dateTag && [date.toJSON()]; 59 | }, 60 | 61 | reconstruct: function(args) { 62 | return args && new Date(args[0]); 63 | } 64 | }); 65 | 66 | registerType('RegExp', { 67 | deconstruct: function(exp) { 68 | if (toString.call(exp) === regExpTag) { 69 | var args = [exp.source]; 70 | var flags = ''; 71 | 72 | if (exp.ignoreCase) flags += 'i'; 73 | if (exp.multiline) flags += 'm'; 74 | if (exp.global) flags += 'g'; 75 | 76 | if (flags) { 77 | args.push(flags); 78 | } 79 | 80 | return args; 81 | } 82 | }, 83 | 84 | reconstruct: function(args) { 85 | return args && new RegExp(args[0], args[1]); 86 | } 87 | }); 88 | 89 | typeof Set === 'function' && 90 | typeof Array.from === 'function' && 91 | registerType('Set', { 92 | deconstruct: function(set) { 93 | if (toString.call(set) === setTag) { 94 | return Array.from(set); 95 | } 96 | }, 97 | 98 | reconstruct: function(values) { 99 | if (values) { 100 | values.forEach(this.add, this); 101 | } else { 102 | return new Set; 103 | } 104 | } 105 | }); 106 | 107 | typeof Map === 'function' && 108 | typeof Array.from === 'function' && 109 | registerType('Map', { 110 | deconstruct: function(map) { 111 | if (toString.call(map) === mapTag) { 112 | return Array.from(map); 113 | } 114 | }, 115 | 116 | reconstruct: function(entries) { 117 | if (entries) { 118 | entries.forEach(function(entry) { 119 | this.set(entry[0], entry[1]); 120 | }, this); 121 | } else { 122 | return new Map; 123 | } 124 | } 125 | }); 126 | 127 | 128 | function encode(value) { 129 | return JSON.stringify(toTable(value)); 130 | } 131 | 132 | // This array will grow as needed so that we can slice arrays filled with 133 | // ARRAY_HOLE_INDEX from it. 134 | var HOLY_ARRAY = []; 135 | 136 | // Returns an array of the given length filled with ARRAY_HOLE_INDEX. 137 | function getArrayOfHoles(length) { 138 | var holyLen = HOLY_ARRAY.length; 139 | if (length > holyLen) { 140 | HOLY_ARRAY.length = length; 141 | for (var i = holyLen; i < length; ++i) { 142 | HOLY_ARRAY[i] = ARRAY_HOLE_INDEX; 143 | } 144 | } 145 | 146 | return HOLY_ARRAY.slice(0, length); 147 | } 148 | 149 | function toTable(value) { 150 | var values = []; 151 | var getIndex = makeGetIndexFunction(values); 152 | 153 | function copy(value) { 154 | var result = value; 155 | 156 | if (value && typeof value === 'object') { 157 | var keys = Object.keys(value); 158 | 159 | if (isPlainObject(value)) { 160 | result = {}; 161 | 162 | } else if (Array.isArray(value)) { 163 | result = getArrayOfHoles(value.length); 164 | 165 | } else { 166 | for (var typeName in customTypes) { 167 | // If value is not a plain Object, but something exotic like a 168 | // Date or a RegExp, serialize it as an array with typeName as 169 | // its first element. These arrays can be distinguished from 170 | // normal arrays, because all other non-empty arrays will be 171 | // serialized with a numeric value as their first element. 172 | var args = customTypes[typeName].deconstruct(value); 173 | if (args) { 174 | for (var i = 0; i < args.length; ++i) { 175 | args[i] = getIndex(args[i]); 176 | } 177 | args.unshift(typeName); 178 | return args; 179 | } 180 | } 181 | 182 | result = {}; 183 | } 184 | 185 | keys.forEach(function(key) { 186 | result[key] = getIndex(value[key]); 187 | }); 188 | } 189 | 190 | return result; 191 | } 192 | 193 | // Assigns the root value to values[0]. 194 | var index0 = getIndex(value); 195 | if (index0 < 0) { 196 | // If value is something special that gets a negative index, then we 197 | // don't need to build a table at all, and we can simply return that 198 | // negative index as a complete serialization. This avoids ambiguity 199 | // about indexes versus primitive literal values. 200 | return index0; 201 | } 202 | 203 | // Note that this for loop cannot be a forEach loop, because 204 | // values.length is expected to change during iteration. 205 | for (var table = [], v = 0; v < values.length; ++v) { 206 | table[v] = copy(values[v]); 207 | } 208 | 209 | return table; 210 | } 211 | 212 | function isPlainObject(value) { 213 | var isObject = value && typeof value === 'object'; 214 | if (isObject) { 215 | var proto = Object.getPrototypeOf 216 | ? Object.getPrototypeOf(value) 217 | : value.__proto__; 218 | return proto === Object.prototype; 219 | } 220 | return false; 221 | } 222 | 223 | function makeGetIndexFunction(values) { 224 | var indexMap = typeof Map === 'function' && new Map; 225 | 226 | return function getIndex(value) { 227 | switch (typeof value) { 228 | case 'undefined': 229 | return UNDEFINED_INDEX; 230 | 231 | case 'number': 232 | if (isNaN(value)) { 233 | return NAN_INDEX; 234 | } 235 | 236 | if (!isFinite(value)) { 237 | return value < 0 ? NEG_INF_INDEX : POS_INF_INDEX; 238 | } 239 | 240 | // fall through... 241 | } 242 | 243 | var index; 244 | 245 | if (indexMap) { 246 | // If we have Map, use it instead of values.indexOf to accelerate 247 | // object lookups. 248 | index = indexMap.get(value); 249 | if (typeof index === 'undefined') { 250 | index = values.push(value) - 1; 251 | indexMap.set(value, index); 252 | } 253 | } else { 254 | index = values.indexOf(value); 255 | if (index < 0) { 256 | index = values.push(value) - 1; 257 | } 258 | } 259 | 260 | return index; 261 | }; 262 | } 263 | 264 | 265 | function decode(encoding) { 266 | return fromTable(JSON.parse(encoding)); 267 | } 268 | 269 | function fromTable(table) { 270 | if (typeof table === 'number' && table < 0) { 271 | return getValueWithoutCache(table); 272 | } 273 | 274 | var getValueCache = new Array(table.length); 275 | 276 | function getValue(index) { 277 | return index in getValueCache 278 | ? getValueCache[index] 279 | : getValueCache[index] = getValueWithoutCache(index); 280 | } 281 | 282 | function getValueWithoutCache(index) { 283 | if (index < 0) { 284 | if (index === UNDEFINED_INDEX) { 285 | return; 286 | } 287 | 288 | if (index === ARRAY_HOLE_INDEX) { 289 | // Never reached because handled specially below. 290 | return; 291 | } 292 | 293 | if (index === NAN_INDEX) { 294 | return NaN; 295 | } 296 | 297 | if (index === POS_INF_INDEX) { 298 | return Infinity; 299 | } 300 | 301 | if (index === NEG_INF_INDEX) { 302 | return -Infinity; 303 | } 304 | 305 | throw new Error('invalid ARSON index: ' + index); 306 | } 307 | 308 | var entry = table[index]; 309 | 310 | if (entry && typeof entry === 'object') { 311 | if (Array.isArray(entry)) { 312 | var elem0 = entry[0]; 313 | if (typeof elem0 === 'string' && elem0 in customTypes) { 314 | var rec = customTypes[elem0].reconstruct; 315 | var empty = rec(); 316 | if (empty) { 317 | // If the reconstruct handler returns an object, treat it as 318 | // an empty instance of the desired type, and schedule it to 319 | // be filled in later. This two-stage process allows exotic 320 | // container objects to contain themselves. 321 | containers.push({ 322 | reconstruct: rec, 323 | empty: empty, 324 | argIndexes: entry.slice(1) 325 | }); 326 | } 327 | 328 | // If the reconstruct handler returned a falsy value, then we 329 | // assume none of its arguments refer to exotic containers, so 330 | // we can reconstruct the object immediately. Examples: Buffer, 331 | // Date, RegExp. 332 | return table[index] = empty || rec(entry.slice(1).map(getValue)); 333 | } 334 | } 335 | 336 | // Here entry is already the correct array or object reference for 337 | // this index, but its values are still indexes that will need to be 338 | // resolved later. 339 | objects.push(entry); 340 | } 341 | 342 | return entry; 343 | } 344 | 345 | var containers = []; 346 | var objects = []; 347 | 348 | // First pass: make sure all exotic objects are deserialized fist, and 349 | // keep track of all plain object entries for later. 350 | table.forEach(function(entry, i) { 351 | getValue(i); 352 | }); 353 | 354 | // Second pass: now that we have final object references for all exotic 355 | // objects, we can safely resolve argument indexes for the empty ones. 356 | containers.forEach(function(c) { 357 | c.args = c.argIndexes.map(getValue); 358 | }); 359 | 360 | // Third pass: resolve value indexes for ordinary arrays and objects. 361 | objects.forEach(function(obj) { 362 | Object.keys(obj).forEach(function(key) { 363 | var index = obj[key]; 364 | 365 | if (typeof index !== 'number') { 366 | // Leave non-numeric indexes untouched. 367 | return; 368 | } 369 | 370 | if (index < 0) { 371 | if (index === ARRAY_HOLE_INDEX) { 372 | // Array holes have to be handled specially here, since getValue 373 | // does not have a reference to obj. 374 | delete obj[key]; 375 | return; 376 | } 377 | 378 | // This recursion is guaranteed not to add more objects, because 379 | // we know the index is negative. 380 | obj[key] = getValue(index); 381 | 382 | } else { 383 | // Non-negative indexes refer to normal table values. 384 | obj[key] = table[index]; 385 | } 386 | }); 387 | }); 388 | 389 | // Fourth pass: all possible object references have been established, so 390 | // we can finally initialize the empty container objects. 391 | containers.forEach(function(c) { 392 | c.reconstruct.call(c.empty, c.args); 393 | }); 394 | 395 | return table[0]; 396 | } 397 | 398 | export default { 399 | parse: decode, 400 | stringify: encode, 401 | } -------------------------------------------------------------------------------- /src/lib/console.ts: -------------------------------------------------------------------------------- 1 | import { PLUGIN_NAME, resolvedVirtualModuleId, virtualModuleId } from './constants.js'; 2 | import { cwd } from 'node:process'; 3 | import { relative } from 'pathe'; 4 | import { injectClientCode, transform } from './transformer.js'; 5 | import { type Plugin, type WebSocketServer } from 'vite'; 6 | import type { Context } from './types.js'; 7 | // @ts-expect-error no types for this 8 | import ARSON from 'arson'; 9 | import * as fs from 'node:fs'; 10 | import path from 'node:path'; 11 | 12 | let collect_logs = true; 13 | let log_drain: string[] = []; 14 | 15 | declare global { 16 | var spc_ws: WebSocketServer; 17 | var spc_stringify: typeof JSON.stringify; 18 | var spc_collect: (log: string) => void; 19 | var spc_can_collect: () => boolean; 20 | } 21 | 22 | export type PluginOptions = { 23 | /** 24 | * Whether to print logs in the server console normally or to suppress them. 25 | * Only applies to console.log statements. 26 | * 27 | * Default: true 28 | */ 29 | log_on_server?: boolean; 30 | } 31 | 32 | const defaultOptions: PluginOptions = { 33 | log_on_server: true 34 | }; 35 | 36 | export function ConsolePlugin(options?: PluginOptions): Plugin { 37 | 38 | const plugin_options = { ...defaultOptions, ...(options ?? {}) }; 39 | 40 | return { 41 | name: PLUGIN_NAME, 42 | enforce: 'pre', 43 | 44 | apply: 'serve', 45 | 46 | resolveId(id) { 47 | if (id === virtualModuleId) { 48 | return resolvedVirtualModuleId; 49 | } 50 | }, 51 | 52 | load(id) { 53 | if (id === resolvedVirtualModuleId) { 54 | let import_path = path.resolve(import.meta.dirname,'./arson.js'); 55 | return fs.readFileSync(import_path, 'utf-8').toString(); 56 | } 57 | }, 58 | 59 | configureServer(server) { 60 | globalThis.spc_ws = server.ws; 61 | globalThis.spc_stringify = ARSON.stringify; 62 | // fancy name for logs collected before the client is ready 63 | log_drain = []; 64 | globalThis.spc_can_collect = () => collect_logs; 65 | globalThis.spc_collect = function(log: string) { 66 | log_drain.push(log); 67 | }; 68 | server.ws.on('spc:log_drain', () => { 69 | collect_logs = false; 70 | server.ws.send('spc:log_drain', JSON.stringify(log_drain)); 71 | log_drain = []; 72 | }); 73 | 74 | return () => { 75 | server.middlewares.use((req, res, next) => { 76 | // reset log collection on each request 77 | collect_logs = true; 78 | log_drain = []; 79 | next(); 80 | }); 81 | }; 82 | }, 83 | 84 | async transform(code, id, options) { 85 | if (/.svelte-kit\/generated\/root.js/.test(id)) { 86 | const context: Context = { 87 | code, 88 | id, 89 | options 90 | }; 91 | return await injectClientCode(context); 92 | } 93 | if (!code?.includes('console') 94 | || /node_modules/.test(id) 95 | || !/\/src\//.test(id)) { 96 | return; 97 | } 98 | 99 | try { 100 | const context: Context = { 101 | code, 102 | id, 103 | options 104 | }; 105 | 106 | return await transform(context, plugin_options); 107 | } catch (error) { 108 | console.error(`[${PLUGIN_NAME}]`, `Transform ${relative(cwd(), id)} error:`, error); 109 | return code; 110 | } 111 | } 112 | }; 113 | } -------------------------------------------------------------------------------- /src/lib/constants.ts: -------------------------------------------------------------------------------- 1 | export const PLUGIN_NAME = 'sveltekit-plugin-console' 2 | export const virtualModuleId = `~arson` 3 | export const resolvedVirtualModuleId = `\0${virtualModuleId}` 4 | -------------------------------------------------------------------------------- /src/lib/core/utils.ts: -------------------------------------------------------------------------------- 1 | import type { CallExpression, Node } from '@babel/types'; 2 | 3 | export function isConsoleExpression(node: Node): node is CallExpression { 4 | return node.type === 'CallExpression' 5 | && node.callee.type === 'MemberExpression' 6 | && node.callee.object.type === 'Identifier' 7 | && node.callee.object.name === 'console' 8 | && node.callee.property.type === 'Identifier' 9 | && node.arguments?.length > 0; 10 | } 11 | 12 | export function isConsoleClearExpression(node: Node): node is CallExpression { 13 | return node.type === 'CallExpression' 14 | && node.callee.type === 'MemberExpression' 15 | && node.callee.object.type === 'Identifier' 16 | && node.callee.object.name === 'console' 17 | && node.callee.property.type === 'Identifier' 18 | && node.callee.property.name === 'clear'; 19 | } -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | // Reexport your entry components here 2 | 3 | export * from './console.js'; -------------------------------------------------------------------------------- /src/lib/testfiles/testmodule.ts: -------------------------------------------------------------------------------- 1 | export function add(a: number, b: number) { 2 | console.log('Adding', a, '+', b, ' = ', a + b); 3 | return a + b; 4 | } -------------------------------------------------------------------------------- /src/lib/transformer.ts: -------------------------------------------------------------------------------- 1 | import type { Context } from './types.js'; 2 | import MagicString from 'magic-string'; 3 | import type { WithScope } from 'ast-kit'; 4 | import { babelParse, getLang, walkAST } from 'ast-kit'; 5 | import { isConsoleClearExpression, isConsoleExpression } from './core/utils.js'; 6 | import { isIdentifier, isMemberExpression, type Node } from '@babel/types'; 7 | import type { PluginOptions } from '$lib/console.js'; 8 | 9 | export async function transform(context: Context, plugin_options: PluginOptions) { 10 | const { code, id, options } = context; 11 | const magicString = new MagicString(code); 12 | 13 | const accepted_langs = ['js', 'ts']; 14 | const lang = getLang(id); 15 | 16 | if (!accepted_langs.includes(lang)) { 17 | return; 18 | } 19 | const program = babelParse(code, getLang(id), { 20 | sourceFilename: id 21 | }); 22 | walkAST>(program, { 23 | enter(node) { 24 | if (isConsoleClearExpression(node)) { 25 | const expressionStart = node.start!; 26 | const expressionEnd = node.end!; 27 | 28 | const { line, column } = node.loc!.start; 29 | const originalLine = line; 30 | const originalColumn = column; 31 | 32 | let log = `{type: 'clear', args: []}`; 33 | magicString.appendRight(expressionEnd, `; 34 | globalThis.spc_can_collect?.() && globalThis.spc_collect(${log}); 35 | globalThis.spc_ws?.send('spc:log', ${log}); 36 | `); 37 | } 38 | if (isConsoleExpression(node)) { 39 | const expressionStart = node.start!; 40 | const expressionEnd = node.end!; 41 | 42 | const originalExpression = magicString.slice(expressionStart, expressionEnd); 43 | 44 | if (originalExpression.includes('%c')) 45 | return false; 46 | 47 | const { line, column } = node.loc!.start; 48 | const originalLine = line; 49 | const originalColumn = column; 50 | 51 | let member = 'log'; 52 | if (isMemberExpression(node.callee) && isIdentifier(node.callee.property)) { 53 | member = node.callee.property.name; 54 | } 55 | 56 | const args = node.arguments; 57 | const argsStart = args[0].start!; 58 | const argsEnd = args[args.length - 1].end!; 59 | 60 | const consoleString = magicString.slice(expressionStart, expressionEnd); 61 | 62 | const argsName = magicString.slice(argsStart, argsEnd) 63 | .toString(); 64 | 65 | if (consoleString) { 66 | let log = `{ 67 | type: ${JSON.stringify(member)}, 68 | args: globalThis.spc_stringify([${argsName}]) 69 | }`; 70 | magicString.appendRight(expressionEnd, `; 71 | globalThis.spc_can_collect?.() && globalThis.spc_collect(${log}); 72 | globalThis.spc_ws?.send('spc:log', ${log}); 73 | `); 74 | if (member === 'log') { 75 | if (!plugin_options.log_on_server) { 76 | magicString.appendLeft(expressionStart, 'typeof window !== "undefined" && '); 77 | } 78 | } 79 | } 80 | } 81 | } 82 | }); 83 | 84 | return { 85 | code: magicString.toString(), 86 | map: magicString.generateMap({ 87 | source: id, 88 | file: id, 89 | includeContent: true, 90 | hires: true 91 | }) 92 | }; 93 | } 94 | 95 | export async function injectClientCode(context: Context) { 96 | const { code, id, options } = context; 97 | const magicString = new MagicString(code); 98 | 99 | function handleLog(ARSON: typeof JSON) { 100 | const commonStyle = 'padding:2px 5px; border-radius:3px;margin-top:5px;color: #fff; background: #FF3E00;'; 101 | const styles: { 102 | [type: string]: string; 103 | } = { 104 | log: 'background: #FF3E00;', 105 | info: 'background: #0078D4;', 106 | warn: 'background: #FFAA00;', 107 | error: 'background: #D70007;' 108 | }; 109 | 110 | function spc_style(type: string) { 111 | return commonStyle + (styles[type] ?? ''); 112 | } 113 | 114 | if (import.meta.hot) { 115 | import.meta.hot.send('spc:log_drain'); 116 | import.meta.hot.on('spc:log_drain', (data) => { 117 | const items = JSON.parse(data); 118 | if (Array.isArray(items)) { 119 | for (let { type, args } of items) { 120 | outputLog({ type, args }); 121 | } 122 | } 123 | }); 124 | // @ts-expect-error no types for this 125 | let outputLog = ({ type, args }) => { 126 | if (type === 'clear') { 127 | console.clear(); 128 | } else { 129 | console.log('%c#', spc_style(type), ...ARSON.parse(args)); 130 | } 131 | }; 132 | import.meta.hot.on('spc:log', outputLog); 133 | } 134 | } 135 | 136 | magicString.append(`\n${handleLog.toString()}; import('~arson').then(({default: ARSON}) => handleLog(ARSON));`); 137 | 138 | return { 139 | code: magicString.toString(), 140 | map: magicString.generateMap({ 141 | source: id, 142 | file: id, 143 | includeContent: true, 144 | hires: true 145 | }) 146 | }; 147 | } -------------------------------------------------------------------------------- /src/lib/types.ts: -------------------------------------------------------------------------------- 1 | export interface Options { 2 | ssr?: boolean; 3 | } 4 | 5 | export interface Context { 6 | code: string; 7 | id: string; 8 | options?: Options; 9 | } -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | Index 6 | Test 7 | 8 |

9 | 10 |
11 | {@render children()} 12 |
-------------------------------------------------------------------------------- /src/routes/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { add } from '$lib/testfiles/testmodule'; 2 | import type { Actions, PageServerLoad } from './$types'; 3 | 4 | export const actions: Actions = { 5 | click() { 6 | console.log('default action'); 7 | 8 | return {}; 9 | }, 10 | trouble() { 11 | console.error('You caused trouble on the server'); 12 | 13 | return {}; 14 | } 15 | }; 16 | 17 | export const load: PageServerLoad = ({ url }) => { 18 | console.log('index.server.ts', { url: url.href }); 19 | console.info('Here is some info'); 20 | console.warn('Here is a warning'); 21 | console.log(`A template literal with ${url.href}`); 22 | return { 23 | sum: add(1, 2) 24 | }; 25 | }; -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 | 8 |
9 | 10 |
11 | 12 |
13 | 14 |
15 | 16 |

17 | Browser action: the log should work 18 |

19 | 20 | -------------------------------------------------------------------------------- /src/routes/test/+page.server.ts: -------------------------------------------------------------------------------- 1 | import { add } from '$lib/testfiles/testmodule'; 2 | import type { PageServerLoad } from './$types'; 3 | 4 | export const load: PageServerLoad = (event) => { 5 | console.clear(); 6 | console.log(import.meta, event, new Map(event.url.searchParams.entries())); 7 | console.log('test.server.ts'); 8 | return { 9 | sum: add(1, 2) 10 | }; 11 | }; -------------------------------------------------------------------------------- /src/routes/test/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | Test page -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unlocomqx/sveltekit-plugin-console/2c220982c8c64eea5363fc4f828094e4259c1f34/static/favicon.png -------------------------------------------------------------------------------- /static/scr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/unlocomqx/sveltekit-plugin-console/2c220982c8c64eea5363fc4f828094e4259c1f34/static/scr.png -------------------------------------------------------------------------------- /svelte.config.ts: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | 3 | /** @type {import('@sveltejs/kit').Config} */ 4 | const config = { 5 | kit: { 6 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 7 | // If your environment is not supported, or you settled on a specific environment, switch out the adapter. 8 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 9 | adapter: adapter() 10 | } 11 | }; 12 | 13 | export default config; 14 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true, 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vitest/config'; 3 | import { ConsolePlugin } from './src/lib'; 4 | 5 | export default defineConfig({ 6 | plugins: [ 7 | sveltekit(), 8 | ConsolePlugin({ 9 | log_on_server: true 10 | }) 11 | ], 12 | test: { 13 | include: ['src/**/*.{test,spec}.{js,ts}'] 14 | } 15 | }); 16 | --------------------------------------------------------------------------------