├── .env.example ├── .gitignore ├── .gitpod.yml ├── .npmrc ├── .prettierrc ├── .vscode ├── extensions.json └── settings.json ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── app.d.ts ├── app.html ├── hooks.server.ts ├── lib │ └── types.d.ts └── routes │ ├── +layout.server.ts │ ├── +layout.svelte │ └── +page.svelte ├── static └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.js /.env.example: -------------------------------------------------------------------------------- 1 | USERS="[{"username":"ghost","password":"test"}]" 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | tasks: 2 | - init: cp .env.example .env && pnpm install 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "quoteProps": "as-needed", 4 | "trailingComma": "all", 5 | "bracketSpacing": true, 6 | "arrowParens": "always", 7 | "semi": true, 8 | "useTabs": false, 9 | "tabWidth": 4, 10 | 11 | "svelteSortOrder": "scripts-markup-styles", 12 | "svelteAllowShorthand": true, 13 | "svelteBracketNewLine": false, 14 | "svelteIndentScriptAndStyle": true 15 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "esbenp.prettier-vscode", 4 | "formulahendry.auto-rename-tag", 5 | "svelte.svelte-vscode", 6 | "christian-kohler.npm-intellisense", 7 | "zignd.html-css-class-completion" 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "[javascript]": { 3 | "editor.defaultFormatter": "esbenp.prettier-vscode", 4 | "editor.formatOnSave": true 5 | }, 6 | "[typescript]": { 7 | "editor.defaultFormatter": "esbenp.prettier-vscode", 8 | "editor.formatOnSave": true 9 | }, 10 | "[svelte]": { 11 | "editor.defaultFormatter": "svelte.svelte-vscode", 12 | "editor.formatOnSave": true 13 | }, 14 | "[json]": { 15 | "editor.defaultFormatter": "vscode.json-language-features", 16 | "editor.formatOnSave": true 17 | }, 18 | "[scss]": { 19 | "editor.defaultFormatter": "esbenp.prettier-vscode", 20 | "editor.formatOnSave": true 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SvelteKit Basic Auth 2 | 3 | [](https://gitpod.io/#https://github.com/ghostdevv/sveltekit-basic-auth) 4 | 5 | 6 | ## Complete Example 7 | 8 | This SvelteKit hook password protects an app (SEE: [`src/hooks.server.ts`](./src/hooks.server.ts)). The hook checks for a valid auth token, and if it's not found, it prompts the user to login using the browsers built-in auth mechanism. 9 | 10 | A list of username password pairs are stored in an environment variable (SEE: [.env.example](./.env.example)). If you login successfully, you can get the authorised username from the page data. 11 | 12 | ## Copy and Paste 13 | 14 | This is the simplest form of the basic auth hook for you to copy and paste into your app, if you want a complete example that includes showing the logged in user see above. 15 | 16 | `src/hooks.server.ts` 17 | ```ts 18 | import type { Handle } from '@sveltejs/kit'; 19 | import { USERS } from '$env/static/private'; 20 | 21 | interface AuthUser { 22 | username: string; 23 | password: string; 24 | } 25 | 26 | const users: AuthUser[] = JSON.parse(USERS); 27 | 28 | export const handle: Handle = ({ event, resolve }) => { 29 | const authorization = event.request.headers.get('Authorization'); 30 | 31 | if (!authorization || !authorization.startsWith('Basic ')) 32 | return new Response('Unauthorized', { 33 | status: 401, 34 | headers: { 35 | 'WWW-Authenticate': 'Basic realm="Protected"', 36 | }, 37 | }); 38 | 39 | const token = authorization.replace('Basic ', ''); 40 | 41 | const [username, password] = Buffer.from(token, 'base64') 42 | .toString() 43 | .split(':'); 44 | 45 | const user: AuthUser | undefined = users.find( 46 | (u) => u.username === username && u.password === password, 47 | ); 48 | 49 | if (!user) 50 | return new Response('Unauthorized', { 51 | status: 401, 52 | headers: { 53 | 'WWW-Authenticate': 'Basic realm="Protected"', 54 | }, 55 | }); 56 | 57 | return resolve(event); 58 | }; 59 | ``` 60 | 61 | `.env` 62 | ```bash 63 | USERS="[{"username":"ghost","password":"test"}]" 64 | ``` -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "basic-auth", 3 | "version": "0.0.2", 4 | "keywords": [ 5 | "svelte", 6 | "sveltekit", 7 | "auth", 8 | "template" 9 | ], 10 | "scripts": { 11 | "dev": "vite dev", 12 | "build": "vite build", 13 | "package": "svelte-kit package", 14 | "preview": "vite preview", 15 | "check": "svelte-check --tsconfig ./tsconfig.json", 16 | "check:watch": "svelte-check --tsconfig ./tsconfig.json --watch" 17 | }, 18 | "devDependencies": { 19 | "@sveltejs/adapter-auto": "2.1.1", 20 | "@sveltejs/kit": "1.27.6", 21 | "@types/node": "^20.9.0", 22 | "svelte": "^4.2.3", 23 | "svelte-check": "^3.6.0", 24 | "svelte-preprocess": "^5.1.0", 25 | "tslib": "^2.6.2", 26 | "typescript": "~5.2.2", 27 | "vite": "^4.5.0" 28 | }, 29 | "type": "module" 30 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | devDependencies: 8 | '@sveltejs/adapter-auto': 9 | specifier: 2.1.1 10 | version: 2.1.1(@sveltejs/kit@1.27.6) 11 | '@sveltejs/kit': 12 | specifier: 1.27.6 13 | version: 1.27.6(svelte@4.2.3)(vite@4.5.0) 14 | '@types/node': 15 | specifier: ^20.9.0 16 | version: 20.9.0 17 | svelte: 18 | specifier: ^4.2.3 19 | version: 4.2.3 20 | svelte-check: 21 | specifier: ^3.6.0 22 | version: 3.6.0(svelte@4.2.3) 23 | svelte-preprocess: 24 | specifier: ^5.1.0 25 | version: 5.1.0(svelte@4.2.3)(typescript@5.2.2) 26 | tslib: 27 | specifier: ^2.6.2 28 | version: 2.6.2 29 | typescript: 30 | specifier: ~5.2.2 31 | version: 5.2.2 32 | vite: 33 | specifier: ^4.5.0 34 | version: 4.5.0(@types/node@20.9.0) 35 | 36 | packages: 37 | 38 | /@ampproject/remapping@2.2.1: 39 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 40 | engines: {node: '>=6.0.0'} 41 | dependencies: 42 | '@jridgewell/gen-mapping': 0.3.3 43 | '@jridgewell/trace-mapping': 0.3.20 44 | dev: true 45 | 46 | /@esbuild/android-arm64@0.18.20: 47 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 48 | engines: {node: '>=12'} 49 | cpu: [arm64] 50 | os: [android] 51 | requiresBuild: true 52 | dev: true 53 | optional: true 54 | 55 | /@esbuild/android-arm@0.18.20: 56 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 57 | engines: {node: '>=12'} 58 | cpu: [arm] 59 | os: [android] 60 | requiresBuild: true 61 | dev: true 62 | optional: true 63 | 64 | /@esbuild/android-x64@0.18.20: 65 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 66 | engines: {node: '>=12'} 67 | cpu: [x64] 68 | os: [android] 69 | requiresBuild: true 70 | dev: true 71 | optional: true 72 | 73 | /@esbuild/darwin-arm64@0.18.20: 74 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 75 | engines: {node: '>=12'} 76 | cpu: [arm64] 77 | os: [darwin] 78 | requiresBuild: true 79 | dev: true 80 | optional: true 81 | 82 | /@esbuild/darwin-x64@0.18.20: 83 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 84 | engines: {node: '>=12'} 85 | cpu: [x64] 86 | os: [darwin] 87 | requiresBuild: true 88 | dev: true 89 | optional: true 90 | 91 | /@esbuild/freebsd-arm64@0.18.20: 92 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 93 | engines: {node: '>=12'} 94 | cpu: [arm64] 95 | os: [freebsd] 96 | requiresBuild: true 97 | dev: true 98 | optional: true 99 | 100 | /@esbuild/freebsd-x64@0.18.20: 101 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 102 | engines: {node: '>=12'} 103 | cpu: [x64] 104 | os: [freebsd] 105 | requiresBuild: true 106 | dev: true 107 | optional: true 108 | 109 | /@esbuild/linux-arm64@0.18.20: 110 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 111 | engines: {node: '>=12'} 112 | cpu: [arm64] 113 | os: [linux] 114 | requiresBuild: true 115 | dev: true 116 | optional: true 117 | 118 | /@esbuild/linux-arm@0.18.20: 119 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 120 | engines: {node: '>=12'} 121 | cpu: [arm] 122 | os: [linux] 123 | requiresBuild: true 124 | dev: true 125 | optional: true 126 | 127 | /@esbuild/linux-ia32@0.18.20: 128 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 129 | engines: {node: '>=12'} 130 | cpu: [ia32] 131 | os: [linux] 132 | requiresBuild: true 133 | dev: true 134 | optional: true 135 | 136 | /@esbuild/linux-loong64@0.18.20: 137 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 138 | engines: {node: '>=12'} 139 | cpu: [loong64] 140 | os: [linux] 141 | requiresBuild: true 142 | dev: true 143 | optional: true 144 | 145 | /@esbuild/linux-mips64el@0.18.20: 146 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 147 | engines: {node: '>=12'} 148 | cpu: [mips64el] 149 | os: [linux] 150 | requiresBuild: true 151 | dev: true 152 | optional: true 153 | 154 | /@esbuild/linux-ppc64@0.18.20: 155 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 156 | engines: {node: '>=12'} 157 | cpu: [ppc64] 158 | os: [linux] 159 | requiresBuild: true 160 | dev: true 161 | optional: true 162 | 163 | /@esbuild/linux-riscv64@0.18.20: 164 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 165 | engines: {node: '>=12'} 166 | cpu: [riscv64] 167 | os: [linux] 168 | requiresBuild: true 169 | dev: true 170 | optional: true 171 | 172 | /@esbuild/linux-s390x@0.18.20: 173 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 174 | engines: {node: '>=12'} 175 | cpu: [s390x] 176 | os: [linux] 177 | requiresBuild: true 178 | dev: true 179 | optional: true 180 | 181 | /@esbuild/linux-x64@0.18.20: 182 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 183 | engines: {node: '>=12'} 184 | cpu: [x64] 185 | os: [linux] 186 | requiresBuild: true 187 | dev: true 188 | optional: true 189 | 190 | /@esbuild/netbsd-x64@0.18.20: 191 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 192 | engines: {node: '>=12'} 193 | cpu: [x64] 194 | os: [netbsd] 195 | requiresBuild: true 196 | dev: true 197 | optional: true 198 | 199 | /@esbuild/openbsd-x64@0.18.20: 200 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 201 | engines: {node: '>=12'} 202 | cpu: [x64] 203 | os: [openbsd] 204 | requiresBuild: true 205 | dev: true 206 | optional: true 207 | 208 | /@esbuild/sunos-x64@0.18.20: 209 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 210 | engines: {node: '>=12'} 211 | cpu: [x64] 212 | os: [sunos] 213 | requiresBuild: true 214 | dev: true 215 | optional: true 216 | 217 | /@esbuild/win32-arm64@0.18.20: 218 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 219 | engines: {node: '>=12'} 220 | cpu: [arm64] 221 | os: [win32] 222 | requiresBuild: true 223 | dev: true 224 | optional: true 225 | 226 | /@esbuild/win32-ia32@0.18.20: 227 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 228 | engines: {node: '>=12'} 229 | cpu: [ia32] 230 | os: [win32] 231 | requiresBuild: true 232 | dev: true 233 | optional: true 234 | 235 | /@esbuild/win32-x64@0.18.20: 236 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 237 | engines: {node: '>=12'} 238 | cpu: [x64] 239 | os: [win32] 240 | requiresBuild: true 241 | dev: true 242 | optional: true 243 | 244 | /@fastify/busboy@2.1.0: 245 | resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} 246 | engines: {node: '>=14'} 247 | dev: true 248 | 249 | /@jridgewell/gen-mapping@0.3.3: 250 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 251 | engines: {node: '>=6.0.0'} 252 | dependencies: 253 | '@jridgewell/set-array': 1.1.2 254 | '@jridgewell/sourcemap-codec': 1.4.15 255 | '@jridgewell/trace-mapping': 0.3.20 256 | dev: true 257 | 258 | /@jridgewell/resolve-uri@3.1.1: 259 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 260 | engines: {node: '>=6.0.0'} 261 | dev: true 262 | 263 | /@jridgewell/set-array@1.1.2: 264 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 265 | engines: {node: '>=6.0.0'} 266 | dev: true 267 | 268 | /@jridgewell/sourcemap-codec@1.4.15: 269 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 270 | dev: true 271 | 272 | /@jridgewell/trace-mapping@0.3.20: 273 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 274 | dependencies: 275 | '@jridgewell/resolve-uri': 3.1.1 276 | '@jridgewell/sourcemap-codec': 1.4.15 277 | dev: true 278 | 279 | /@nodelib/fs.scandir@2.1.5: 280 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 281 | engines: {node: '>= 8'} 282 | dependencies: 283 | '@nodelib/fs.stat': 2.0.5 284 | run-parallel: 1.2.0 285 | dev: true 286 | 287 | /@nodelib/fs.stat@2.0.5: 288 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 289 | engines: {node: '>= 8'} 290 | dev: true 291 | 292 | /@nodelib/fs.walk@1.2.8: 293 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 294 | engines: {node: '>= 8'} 295 | dependencies: 296 | '@nodelib/fs.scandir': 2.1.5 297 | fastq: 1.15.0 298 | dev: true 299 | 300 | /@polka/url@1.0.0-next.23: 301 | resolution: {integrity: sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==} 302 | dev: true 303 | 304 | /@sveltejs/adapter-auto@2.1.1(@sveltejs/kit@1.27.6): 305 | resolution: {integrity: sha512-nzi6x/7/3Axh5VKQ8Eed3pYxastxoa06Y/bFhWb7h3Nu+nGRVxKAy3+hBJgmPCwWScy8n0TsstZjSVKfyrIHkg==} 306 | peerDependencies: 307 | '@sveltejs/kit': ^1.0.0 308 | dependencies: 309 | '@sveltejs/kit': 1.27.6(svelte@4.2.3)(vite@4.5.0) 310 | import-meta-resolve: 4.0.0 311 | dev: true 312 | 313 | /@sveltejs/kit@1.27.6(svelte@4.2.3)(vite@4.5.0): 314 | resolution: {integrity: sha512-GsjTkMbKzXdbeRg0tk8S7HNShQ4879ftRr0ZHaZfjbig1xQwG57Bvcm9U9/mpLJtCapLbLWUnygKrgcLISLC8A==} 315 | engines: {node: ^16.14 || >=18} 316 | hasBin: true 317 | requiresBuild: true 318 | peerDependencies: 319 | svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0 320 | vite: ^4.0.0 321 | dependencies: 322 | '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0) 323 | '@types/cookie': 0.5.4 324 | cookie: 0.5.0 325 | devalue: 4.3.2 326 | esm-env: 1.0.0 327 | kleur: 4.1.5 328 | magic-string: 0.30.5 329 | mrmime: 1.0.1 330 | sade: 1.8.1 331 | set-cookie-parser: 2.6.0 332 | sirv: 2.0.3 333 | svelte: 4.2.3 334 | tiny-glob: 0.2.9 335 | undici: 5.26.5 336 | vite: 4.5.0(@types/node@20.9.0) 337 | transitivePeerDependencies: 338 | - supports-color 339 | dev: true 340 | 341 | /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0): 342 | resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} 343 | engines: {node: ^14.18.0 || >= 16} 344 | peerDependencies: 345 | '@sveltejs/vite-plugin-svelte': ^2.2.0 346 | svelte: ^3.54.0 || ^4.0.0 347 | vite: ^4.0.0 348 | dependencies: 349 | '@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0) 350 | debug: 4.3.4 351 | svelte: 4.2.3 352 | vite: 4.5.0(@types/node@20.9.0) 353 | transitivePeerDependencies: 354 | - supports-color 355 | dev: true 356 | 357 | /@sveltejs/vite-plugin-svelte@2.5.2(svelte@4.2.3)(vite@4.5.0): 358 | resolution: {integrity: sha512-Dfy0Rbl+IctOVfJvWGxrX/3m6vxPLH8o0x+8FA5QEyMUQMo4kGOVIojjryU7YomBAexOTAuYf1RT7809yDziaA==} 359 | engines: {node: ^14.18.0 || >= 16} 360 | peerDependencies: 361 | svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0 362 | vite: ^4.0.0 363 | dependencies: 364 | '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0) 365 | debug: 4.3.4 366 | deepmerge: 4.3.1 367 | kleur: 4.1.5 368 | magic-string: 0.30.5 369 | svelte: 4.2.3 370 | svelte-hmr: 0.15.3(svelte@4.2.3) 371 | vite: 4.5.0(@types/node@20.9.0) 372 | vitefu: 0.2.5(vite@4.5.0) 373 | transitivePeerDependencies: 374 | - supports-color 375 | dev: true 376 | 377 | /@types/cookie@0.5.4: 378 | resolution: {integrity: sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==} 379 | dev: true 380 | 381 | /@types/estree@1.0.5: 382 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 383 | dev: true 384 | 385 | /@types/node@20.9.0: 386 | resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} 387 | dependencies: 388 | undici-types: 5.26.5 389 | dev: true 390 | 391 | /@types/pug@2.0.9: 392 | resolution: {integrity: sha512-Yg4LkgFYvn1faISbDNWmcAC1XoDT8IoMUFspp5mnagKk+UvD2N0IWt5A7GRdMubsNWqgCLmrkf8rXkzNqb4szA==} 393 | dev: true 394 | 395 | /acorn@8.11.2: 396 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} 397 | engines: {node: '>=0.4.0'} 398 | hasBin: true 399 | dev: true 400 | 401 | /anymatch@3.1.3: 402 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 403 | engines: {node: '>= 8'} 404 | dependencies: 405 | normalize-path: 3.0.0 406 | picomatch: 2.3.1 407 | dev: true 408 | 409 | /aria-query@5.3.0: 410 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 411 | dependencies: 412 | dequal: 2.0.3 413 | dev: true 414 | 415 | /axobject-query@3.2.1: 416 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 417 | dependencies: 418 | dequal: 2.0.3 419 | dev: true 420 | 421 | /balanced-match@1.0.2: 422 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 423 | dev: true 424 | 425 | /binary-extensions@2.2.0: 426 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 427 | engines: {node: '>=8'} 428 | dev: true 429 | 430 | /brace-expansion@1.1.11: 431 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 432 | dependencies: 433 | balanced-match: 1.0.2 434 | concat-map: 0.0.1 435 | dev: true 436 | 437 | /braces@3.0.2: 438 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 439 | engines: {node: '>=8'} 440 | dependencies: 441 | fill-range: 7.0.1 442 | dev: true 443 | 444 | /buffer-crc32@0.2.13: 445 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 446 | dev: true 447 | 448 | /callsites@3.1.0: 449 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 450 | engines: {node: '>=6'} 451 | dev: true 452 | 453 | /chokidar@3.5.3: 454 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 455 | engines: {node: '>= 8.10.0'} 456 | dependencies: 457 | anymatch: 3.1.3 458 | braces: 3.0.2 459 | glob-parent: 5.1.2 460 | is-binary-path: 2.1.0 461 | is-glob: 4.0.3 462 | normalize-path: 3.0.0 463 | readdirp: 3.6.0 464 | optionalDependencies: 465 | fsevents: 2.3.3 466 | dev: true 467 | 468 | /code-red@1.0.4: 469 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 470 | dependencies: 471 | '@jridgewell/sourcemap-codec': 1.4.15 472 | '@types/estree': 1.0.5 473 | acorn: 8.11.2 474 | estree-walker: 3.0.3 475 | periscopic: 3.1.0 476 | dev: true 477 | 478 | /concat-map@0.0.1: 479 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 480 | dev: true 481 | 482 | /cookie@0.5.0: 483 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 484 | engines: {node: '>= 0.6'} 485 | dev: true 486 | 487 | /css-tree@2.3.1: 488 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 489 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 490 | dependencies: 491 | mdn-data: 2.0.30 492 | source-map-js: 1.0.2 493 | dev: true 494 | 495 | /debug@4.3.4: 496 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 497 | engines: {node: '>=6.0'} 498 | peerDependencies: 499 | supports-color: '*' 500 | peerDependenciesMeta: 501 | supports-color: 502 | optional: true 503 | dependencies: 504 | ms: 2.1.2 505 | dev: true 506 | 507 | /deepmerge@4.3.1: 508 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 509 | engines: {node: '>=0.10.0'} 510 | dev: true 511 | 512 | /dequal@2.0.3: 513 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 514 | engines: {node: '>=6'} 515 | dev: true 516 | 517 | /detect-indent@6.1.0: 518 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 519 | engines: {node: '>=8'} 520 | dev: true 521 | 522 | /devalue@4.3.2: 523 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 524 | dev: true 525 | 526 | /es6-promise@3.3.1: 527 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 528 | dev: true 529 | 530 | /esbuild@0.18.20: 531 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 532 | engines: {node: '>=12'} 533 | hasBin: true 534 | requiresBuild: true 535 | optionalDependencies: 536 | '@esbuild/android-arm': 0.18.20 537 | '@esbuild/android-arm64': 0.18.20 538 | '@esbuild/android-x64': 0.18.20 539 | '@esbuild/darwin-arm64': 0.18.20 540 | '@esbuild/darwin-x64': 0.18.20 541 | '@esbuild/freebsd-arm64': 0.18.20 542 | '@esbuild/freebsd-x64': 0.18.20 543 | '@esbuild/linux-arm': 0.18.20 544 | '@esbuild/linux-arm64': 0.18.20 545 | '@esbuild/linux-ia32': 0.18.20 546 | '@esbuild/linux-loong64': 0.18.20 547 | '@esbuild/linux-mips64el': 0.18.20 548 | '@esbuild/linux-ppc64': 0.18.20 549 | '@esbuild/linux-riscv64': 0.18.20 550 | '@esbuild/linux-s390x': 0.18.20 551 | '@esbuild/linux-x64': 0.18.20 552 | '@esbuild/netbsd-x64': 0.18.20 553 | '@esbuild/openbsd-x64': 0.18.20 554 | '@esbuild/sunos-x64': 0.18.20 555 | '@esbuild/win32-arm64': 0.18.20 556 | '@esbuild/win32-ia32': 0.18.20 557 | '@esbuild/win32-x64': 0.18.20 558 | dev: true 559 | 560 | /esm-env@1.0.0: 561 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 562 | dev: true 563 | 564 | /estree-walker@3.0.3: 565 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 566 | dependencies: 567 | '@types/estree': 1.0.5 568 | dev: true 569 | 570 | /fast-glob@3.3.2: 571 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 572 | engines: {node: '>=8.6.0'} 573 | dependencies: 574 | '@nodelib/fs.stat': 2.0.5 575 | '@nodelib/fs.walk': 1.2.8 576 | glob-parent: 5.1.2 577 | merge2: 1.4.1 578 | micromatch: 4.0.5 579 | dev: true 580 | 581 | /fastq@1.15.0: 582 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 583 | dependencies: 584 | reusify: 1.0.4 585 | dev: true 586 | 587 | /fill-range@7.0.1: 588 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 589 | engines: {node: '>=8'} 590 | dependencies: 591 | to-regex-range: 5.0.1 592 | dev: true 593 | 594 | /fs.realpath@1.0.0: 595 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 596 | dev: true 597 | 598 | /fsevents@2.3.3: 599 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 600 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 601 | os: [darwin] 602 | requiresBuild: true 603 | dev: true 604 | optional: true 605 | 606 | /glob-parent@5.1.2: 607 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 608 | engines: {node: '>= 6'} 609 | dependencies: 610 | is-glob: 4.0.3 611 | dev: true 612 | 613 | /glob@7.2.3: 614 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 615 | dependencies: 616 | fs.realpath: 1.0.0 617 | inflight: 1.0.6 618 | inherits: 2.0.4 619 | minimatch: 3.1.2 620 | once: 1.4.0 621 | path-is-absolute: 1.0.1 622 | dev: true 623 | 624 | /globalyzer@0.1.0: 625 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 626 | dev: true 627 | 628 | /globrex@0.1.2: 629 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 630 | dev: true 631 | 632 | /graceful-fs@4.2.11: 633 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 634 | dev: true 635 | 636 | /import-fresh@3.3.0: 637 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 638 | engines: {node: '>=6'} 639 | dependencies: 640 | parent-module: 1.0.1 641 | resolve-from: 4.0.0 642 | dev: true 643 | 644 | /import-meta-resolve@4.0.0: 645 | resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} 646 | dev: true 647 | 648 | /inflight@1.0.6: 649 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 650 | dependencies: 651 | once: 1.4.0 652 | wrappy: 1.0.2 653 | dev: true 654 | 655 | /inherits@2.0.4: 656 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 657 | dev: true 658 | 659 | /is-binary-path@2.1.0: 660 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 661 | engines: {node: '>=8'} 662 | dependencies: 663 | binary-extensions: 2.2.0 664 | dev: true 665 | 666 | /is-extglob@2.1.1: 667 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 668 | engines: {node: '>=0.10.0'} 669 | dev: true 670 | 671 | /is-glob@4.0.3: 672 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 673 | engines: {node: '>=0.10.0'} 674 | dependencies: 675 | is-extglob: 2.1.1 676 | dev: true 677 | 678 | /is-number@7.0.0: 679 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 680 | engines: {node: '>=0.12.0'} 681 | dev: true 682 | 683 | /is-reference@3.0.2: 684 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 685 | dependencies: 686 | '@types/estree': 1.0.5 687 | dev: true 688 | 689 | /kleur@4.1.5: 690 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 691 | engines: {node: '>=6'} 692 | dev: true 693 | 694 | /locate-character@3.0.0: 695 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 696 | dev: true 697 | 698 | /magic-string@0.27.0: 699 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 700 | engines: {node: '>=12'} 701 | dependencies: 702 | '@jridgewell/sourcemap-codec': 1.4.15 703 | dev: true 704 | 705 | /magic-string@0.30.5: 706 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 707 | engines: {node: '>=12'} 708 | dependencies: 709 | '@jridgewell/sourcemap-codec': 1.4.15 710 | dev: true 711 | 712 | /mdn-data@2.0.30: 713 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 714 | dev: true 715 | 716 | /merge2@1.4.1: 717 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 718 | engines: {node: '>= 8'} 719 | dev: true 720 | 721 | /micromatch@4.0.5: 722 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 723 | engines: {node: '>=8.6'} 724 | dependencies: 725 | braces: 3.0.2 726 | picomatch: 2.3.1 727 | dev: true 728 | 729 | /min-indent@1.0.1: 730 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 731 | engines: {node: '>=4'} 732 | dev: true 733 | 734 | /minimatch@3.1.2: 735 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 736 | dependencies: 737 | brace-expansion: 1.1.11 738 | dev: true 739 | 740 | /minimist@1.2.8: 741 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 742 | dev: true 743 | 744 | /mkdirp@0.5.6: 745 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 746 | hasBin: true 747 | dependencies: 748 | minimist: 1.2.8 749 | dev: true 750 | 751 | /mri@1.2.0: 752 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 753 | engines: {node: '>=4'} 754 | dev: true 755 | 756 | /mrmime@1.0.1: 757 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 758 | engines: {node: '>=10'} 759 | dev: true 760 | 761 | /ms@2.1.2: 762 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 763 | dev: true 764 | 765 | /nanoid@3.3.7: 766 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 767 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 768 | hasBin: true 769 | dev: true 770 | 771 | /normalize-path@3.0.0: 772 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 773 | engines: {node: '>=0.10.0'} 774 | dev: true 775 | 776 | /once@1.4.0: 777 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 778 | dependencies: 779 | wrappy: 1.0.2 780 | dev: true 781 | 782 | /parent-module@1.0.1: 783 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 784 | engines: {node: '>=6'} 785 | dependencies: 786 | callsites: 3.1.0 787 | dev: true 788 | 789 | /path-is-absolute@1.0.1: 790 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 791 | engines: {node: '>=0.10.0'} 792 | dev: true 793 | 794 | /periscopic@3.1.0: 795 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 796 | dependencies: 797 | '@types/estree': 1.0.5 798 | estree-walker: 3.0.3 799 | is-reference: 3.0.2 800 | dev: true 801 | 802 | /picocolors@1.0.0: 803 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 804 | dev: true 805 | 806 | /picomatch@2.3.1: 807 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 808 | engines: {node: '>=8.6'} 809 | dev: true 810 | 811 | /postcss@8.4.31: 812 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 813 | engines: {node: ^10 || ^12 || >=14} 814 | dependencies: 815 | nanoid: 3.3.7 816 | picocolors: 1.0.0 817 | source-map-js: 1.0.2 818 | dev: true 819 | 820 | /queue-microtask@1.2.3: 821 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 822 | dev: true 823 | 824 | /readdirp@3.6.0: 825 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 826 | engines: {node: '>=8.10.0'} 827 | dependencies: 828 | picomatch: 2.3.1 829 | dev: true 830 | 831 | /resolve-from@4.0.0: 832 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 833 | engines: {node: '>=4'} 834 | dev: true 835 | 836 | /reusify@1.0.4: 837 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 838 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 839 | dev: true 840 | 841 | /rimraf@2.7.1: 842 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 843 | hasBin: true 844 | dependencies: 845 | glob: 7.2.3 846 | dev: true 847 | 848 | /rollup@3.29.4: 849 | resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} 850 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 851 | hasBin: true 852 | optionalDependencies: 853 | fsevents: 2.3.3 854 | dev: true 855 | 856 | /run-parallel@1.2.0: 857 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 858 | dependencies: 859 | queue-microtask: 1.2.3 860 | dev: true 861 | 862 | /sade@1.8.1: 863 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 864 | engines: {node: '>=6'} 865 | dependencies: 866 | mri: 1.2.0 867 | dev: true 868 | 869 | /sander@0.5.1: 870 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 871 | dependencies: 872 | es6-promise: 3.3.1 873 | graceful-fs: 4.2.11 874 | mkdirp: 0.5.6 875 | rimraf: 2.7.1 876 | dev: true 877 | 878 | /set-cookie-parser@2.6.0: 879 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 880 | dev: true 881 | 882 | /sirv@2.0.3: 883 | resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} 884 | engines: {node: '>= 10'} 885 | dependencies: 886 | '@polka/url': 1.0.0-next.23 887 | mrmime: 1.0.1 888 | totalist: 3.0.1 889 | dev: true 890 | 891 | /sorcery@0.11.0: 892 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 893 | hasBin: true 894 | dependencies: 895 | '@jridgewell/sourcemap-codec': 1.4.15 896 | buffer-crc32: 0.2.13 897 | minimist: 1.2.8 898 | sander: 0.5.1 899 | dev: true 900 | 901 | /source-map-js@1.0.2: 902 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 903 | engines: {node: '>=0.10.0'} 904 | dev: true 905 | 906 | /strip-indent@3.0.0: 907 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 908 | engines: {node: '>=8'} 909 | dependencies: 910 | min-indent: 1.0.1 911 | dev: true 912 | 913 | /svelte-check@3.6.0(svelte@4.2.3): 914 | resolution: {integrity: sha512-8VfqhfuRJ1sKW+o8isH2kPi0RhjXH1nNsIbCFGyoUHG+ZxVxHYRKcb+S8eaL/1tyj3VGvWYx3Y5+oCUsJgnzcw==} 915 | hasBin: true 916 | peerDependencies: 917 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 918 | dependencies: 919 | '@jridgewell/trace-mapping': 0.3.20 920 | chokidar: 3.5.3 921 | fast-glob: 3.3.2 922 | import-fresh: 3.3.0 923 | picocolors: 1.0.0 924 | sade: 1.8.1 925 | svelte: 4.2.3 926 | svelte-preprocess: 5.1.0(svelte@4.2.3)(typescript@5.2.2) 927 | typescript: 5.2.2 928 | transitivePeerDependencies: 929 | - '@babel/core' 930 | - coffeescript 931 | - less 932 | - postcss 933 | - postcss-load-config 934 | - pug 935 | - sass 936 | - stylus 937 | - sugarss 938 | dev: true 939 | 940 | /svelte-hmr@0.15.3(svelte@4.2.3): 941 | resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} 942 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 943 | peerDependencies: 944 | svelte: ^3.19.0 || ^4.0.0 945 | dependencies: 946 | svelte: 4.2.3 947 | dev: true 948 | 949 | /svelte-preprocess@5.1.0(svelte@4.2.3)(typescript@5.2.2): 950 | resolution: {integrity: sha512-EkErPiDzHAc0k2MF5m6vBNmRUh338h2myhinUw/xaqsLs7/ZvsgREiLGj03VrSzbY/TB5ZXgBOsKraFee5yceA==} 951 | engines: {node: '>= 14.10.0'} 952 | requiresBuild: true 953 | peerDependencies: 954 | '@babel/core': ^7.10.2 955 | coffeescript: ^2.5.1 956 | less: ^3.11.3 || ^4.0.0 957 | postcss: ^7 || ^8 958 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 959 | pug: ^3.0.0 960 | sass: ^1.26.8 961 | stylus: ^0.55.0 962 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 963 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0 964 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 965 | peerDependenciesMeta: 966 | '@babel/core': 967 | optional: true 968 | coffeescript: 969 | optional: true 970 | less: 971 | optional: true 972 | postcss: 973 | optional: true 974 | postcss-load-config: 975 | optional: true 976 | pug: 977 | optional: true 978 | sass: 979 | optional: true 980 | stylus: 981 | optional: true 982 | sugarss: 983 | optional: true 984 | typescript: 985 | optional: true 986 | dependencies: 987 | '@types/pug': 2.0.9 988 | detect-indent: 6.1.0 989 | magic-string: 0.27.0 990 | sorcery: 0.11.0 991 | strip-indent: 3.0.0 992 | svelte: 4.2.3 993 | typescript: 5.2.2 994 | dev: true 995 | 996 | /svelte@4.2.3: 997 | resolution: {integrity: sha512-sqmG9KC6uUc7fb3ZuWoxXvqk6MI9Uu4ABA1M0fYDgTlFYu1k02xp96u6U9+yJZiVm84m9zge7rrA/BNZdFpOKw==} 998 | engines: {node: '>=16'} 999 | dependencies: 1000 | '@ampproject/remapping': 2.2.1 1001 | '@jridgewell/sourcemap-codec': 1.4.15 1002 | '@jridgewell/trace-mapping': 0.3.20 1003 | acorn: 8.11.2 1004 | aria-query: 5.3.0 1005 | axobject-query: 3.2.1 1006 | code-red: 1.0.4 1007 | css-tree: 2.3.1 1008 | estree-walker: 3.0.3 1009 | is-reference: 3.0.2 1010 | locate-character: 3.0.0 1011 | magic-string: 0.30.5 1012 | periscopic: 3.1.0 1013 | dev: true 1014 | 1015 | /tiny-glob@0.2.9: 1016 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 1017 | dependencies: 1018 | globalyzer: 0.1.0 1019 | globrex: 0.1.2 1020 | dev: true 1021 | 1022 | /to-regex-range@5.0.1: 1023 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1024 | engines: {node: '>=8.0'} 1025 | dependencies: 1026 | is-number: 7.0.0 1027 | dev: true 1028 | 1029 | /totalist@3.0.1: 1030 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1031 | engines: {node: '>=6'} 1032 | dev: true 1033 | 1034 | /tslib@2.6.2: 1035 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1036 | dev: true 1037 | 1038 | /typescript@5.2.2: 1039 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 1040 | engines: {node: '>=14.17'} 1041 | hasBin: true 1042 | dev: true 1043 | 1044 | /undici-types@5.26.5: 1045 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1046 | dev: true 1047 | 1048 | /undici@5.26.5: 1049 | resolution: {integrity: sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==} 1050 | engines: {node: '>=14.0'} 1051 | dependencies: 1052 | '@fastify/busboy': 2.1.0 1053 | dev: true 1054 | 1055 | /vite@4.5.0(@types/node@20.9.0): 1056 | resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} 1057 | engines: {node: ^14.18.0 || >=16.0.0} 1058 | hasBin: true 1059 | peerDependencies: 1060 | '@types/node': '>= 14' 1061 | less: '*' 1062 | lightningcss: ^1.21.0 1063 | sass: '*' 1064 | stylus: '*' 1065 | sugarss: '*' 1066 | terser: ^5.4.0 1067 | peerDependenciesMeta: 1068 | '@types/node': 1069 | optional: true 1070 | less: 1071 | optional: true 1072 | lightningcss: 1073 | optional: true 1074 | sass: 1075 | optional: true 1076 | stylus: 1077 | optional: true 1078 | sugarss: 1079 | optional: true 1080 | terser: 1081 | optional: true 1082 | dependencies: 1083 | '@types/node': 20.9.0 1084 | esbuild: 0.18.20 1085 | postcss: 8.4.31 1086 | rollup: 3.29.4 1087 | optionalDependencies: 1088 | fsevents: 2.3.3 1089 | dev: true 1090 | 1091 | /vitefu@0.2.5(vite@4.5.0): 1092 | resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} 1093 | peerDependencies: 1094 | vite: ^3.0.0 || ^4.0.0 || ^5.0.0 1095 | peerDependenciesMeta: 1096 | vite: 1097 | optional: true 1098 | dependencies: 1099 | vite: 4.5.0(@types/node@20.9.0) 1100 | dev: true 1101 | 1102 | /wrappy@1.0.2: 1103 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1104 | dev: true 1105 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | import { User } from '$lib/types'; 2 | 3 | // See https://kit.svelte.dev/docs/types#app 4 | // for information about these interfaces 5 | declare global { 6 | namespace App { 7 | interface Locals { 8 | user: User; 9 | } 10 | } 11 | } 12 | 13 | export {}; 14 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |