├── .dockerignore ├── .env.example ├── .github └── workflows │ └── build.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── Dockerfile ├── README.md ├── package-lock.json ├── package.json ├── src ├── app.html ├── lib │ ├── images │ │ ├── github.svg │ │ ├── svelte-logo.svg │ │ ├── svelte-welcome.png │ │ └── svelte-welcome.webp │ └── server │ │ └── db.js └── routes │ ├── +layout.svelte │ ├── +page.js │ ├── +page.svelte │ ├── Counter.svelte │ ├── Header.svelte │ ├── about │ ├── +page.js │ └── +page.svelte │ ├── api │ └── +server.js │ ├── styles.css │ └── sverdle │ ├── +page.server.js │ ├── +page.svelte │ ├── game.js │ ├── how-to-play │ ├── +page.js │ └── +page.svelte │ ├── reduced-motion.js │ └── words.server.js ├── static ├── favicon.png └── robots.txt ├── svelte.config.js └── vite.config.js /.dockerignore: -------------------------------------------------------------------------------- 1 | .env 2 | node_modules -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | PUBLIC_HELLO="Hello world!" -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build + publish 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | workflow_dispatch: 8 | 9 | env: 10 | REGISTRY: ghcr.io 11 | IMAGE_NAME: ${{ github.repository }} 12 | 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | #if: contains(github.event.head_commit.message, 'web') 17 | 18 | steps: 19 | - name: Checkout Repository 20 | uses: actions/checkout@v4 21 | 22 | - name: Set up QEMU 23 | uses: docker/setup-qemu-action@v3 24 | 25 | - name: Set up Docker Buildx 26 | uses: docker/setup-buildx-action@v3 27 | 28 | - name: Extract metadata (tags, labels) for Docker 29 | id: meta 30 | uses: docker/metadata-action@v5 31 | with: 32 | images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} 33 | 34 | - name: Login to GHCR 35 | uses: docker/login-action@v3 36 | with: 37 | registry: ghcr.io 38 | username: ${{ github.actor }} 39 | password: ${{ secrets.GITHUB_TOKEN }} 40 | 41 | - name: Build and Push Docker Image 42 | uses: docker/build-push-action@v3 43 | with: 44 | context: . 45 | platforms: linux/amd64 #, linux/arm64 <-- Add for ARM support 46 | push: true 47 | tags: ${{ steps.meta.outputs.tags }} 48 | labels: ${{ steps.meta.outputs.labels }} 49 | build-args: | 50 | PUBLIC_HELLO=world 51 | 52 | # Uncomment and replace with your server 53 | #- name: Deploy on CapRover 54 | # uses: caprover/deploy-from-github@v1.1.2 55 | # with: 56 | # server: https://apex.place 57 | # app: 'sveltekit' 58 | # token: '${{ secrets.APP_TOKEN }}' 59 | # image: 'ghcr.io/khromov/self-hosted-sveltekit-demo:main' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | .vercel 10 | .output 11 | vite.config.js.timestamp-* 12 | vite.config.ts.timestamp-* -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | resolution-mode=highest 3 | registry=https://registry.npmjs.org/ -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 20 -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:19.7-alpine AS sk-build 2 | WORKDIR /usr/src/app 3 | 4 | ARG TZ=Europe/Stockholm 5 | ARG PUBLIC_HELLO 6 | 7 | COPY . /usr/src/app 8 | RUN apk --no-cache add curl tzdata 9 | RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 10 | RUN npm install 11 | RUN npm run build 12 | 13 | FROM node:19.7-alpine 14 | WORKDIR /usr/src/app 15 | 16 | ARG TZ=Europe/Stockholm 17 | RUN apk --no-cache add curl tzdata 18 | RUN cp /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone 19 | 20 | COPY --from=sk-build /usr/src/app/package.json /usr/src/app/package.json 21 | COPY --from=sk-build /usr/src/app/package-lock.json /usr/src/app/package-lock.json 22 | RUN npm i --only=production 23 | 24 | COPY --from=sk-build /usr/src/app/build /usr/src/app/build 25 | 26 | EXPOSE 3000 27 | CMD ["node", "build/index.js"] 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is the companion repo to the YouTube talk: 2 | https://www.youtube.com/watch?v=NLjolI9FwCU 3 | 4 | # Initial setup 5 | 6 | ```sh 7 | cp .env.example .env 8 | nvm use # Or use Node.js 20 9 | ``` 10 | 11 | # Build Docker locally 12 | 13 | ```bash 14 | docker build . --build-arg PUBLIC_HELLO=world -t test 15 | ``` 16 | 17 | 18 | 19 | # create-svelte 20 | 21 | Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte). 22 | 23 | ## Creating a project 24 | 25 | If you're seeing this, you've probably already done this step. Congrats! 26 | 27 | ```bash 28 | # create a new project in the current directory 29 | npm create svelte@latest 30 | 31 | # create a new project in my-app 32 | npm create svelte@latest my-app 33 | ``` 34 | 35 | ## Developing 36 | 37 | Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: 38 | 39 | ```bash 40 | npm run dev 41 | 42 | # or start the server and open the app in a new browser tab 43 | npm run dev -- --open 44 | ``` 45 | 46 | ## Building 47 | 48 | To create a production version of your app: 49 | 50 | ```bash 51 | npm run build 52 | ``` 53 | 54 | You can preview the production build with `npm run preview`. 55 | 56 | > To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. 57 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "sveltekit", 9 | "version": "0.0.1", 10 | "devDependencies": { 11 | "@fontsource/fira-mono": "^4.5.10", 12 | "@neoconfetti/svelte": "^1.0.0", 13 | "@sveltejs/adapter-auto": "^2.0.0", 14 | "@sveltejs/adapter-node": "^1.2.4", 15 | "@sveltejs/kit": "^1.5.0", 16 | "pg": "^8.11.0", 17 | "svelte": "^3.54.0", 18 | "vite": "^4.3.0" 19 | } 20 | }, 21 | "node_modules/@esbuild/android-arm": { 22 | "version": "0.17.19", 23 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", 24 | "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", 25 | "cpu": [ 26 | "arm" 27 | ], 28 | "dev": true, 29 | "optional": true, 30 | "os": [ 31 | "android" 32 | ], 33 | "engines": { 34 | "node": ">=12" 35 | } 36 | }, 37 | "node_modules/@esbuild/android-arm64": { 38 | "version": "0.17.19", 39 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", 40 | "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", 41 | "cpu": [ 42 | "arm64" 43 | ], 44 | "dev": true, 45 | "optional": true, 46 | "os": [ 47 | "android" 48 | ], 49 | "engines": { 50 | "node": ">=12" 51 | } 52 | }, 53 | "node_modules/@esbuild/android-x64": { 54 | "version": "0.17.19", 55 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", 56 | "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", 57 | "cpu": [ 58 | "x64" 59 | ], 60 | "dev": true, 61 | "optional": true, 62 | "os": [ 63 | "android" 64 | ], 65 | "engines": { 66 | "node": ">=12" 67 | } 68 | }, 69 | "node_modules/@esbuild/darwin-arm64": { 70 | "version": "0.17.19", 71 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", 72 | "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", 73 | "cpu": [ 74 | "arm64" 75 | ], 76 | "dev": true, 77 | "optional": true, 78 | "os": [ 79 | "darwin" 80 | ], 81 | "engines": { 82 | "node": ">=12" 83 | } 84 | }, 85 | "node_modules/@esbuild/darwin-x64": { 86 | "version": "0.17.19", 87 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", 88 | "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", 89 | "cpu": [ 90 | "x64" 91 | ], 92 | "dev": true, 93 | "optional": true, 94 | "os": [ 95 | "darwin" 96 | ], 97 | "engines": { 98 | "node": ">=12" 99 | } 100 | }, 101 | "node_modules/@esbuild/freebsd-arm64": { 102 | "version": "0.17.19", 103 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", 104 | "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", 105 | "cpu": [ 106 | "arm64" 107 | ], 108 | "dev": true, 109 | "optional": true, 110 | "os": [ 111 | "freebsd" 112 | ], 113 | "engines": { 114 | "node": ">=12" 115 | } 116 | }, 117 | "node_modules/@esbuild/freebsd-x64": { 118 | "version": "0.17.19", 119 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", 120 | "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", 121 | "cpu": [ 122 | "x64" 123 | ], 124 | "dev": true, 125 | "optional": true, 126 | "os": [ 127 | "freebsd" 128 | ], 129 | "engines": { 130 | "node": ">=12" 131 | } 132 | }, 133 | "node_modules/@esbuild/linux-arm": { 134 | "version": "0.17.19", 135 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", 136 | "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", 137 | "cpu": [ 138 | "arm" 139 | ], 140 | "dev": true, 141 | "optional": true, 142 | "os": [ 143 | "linux" 144 | ], 145 | "engines": { 146 | "node": ">=12" 147 | } 148 | }, 149 | "node_modules/@esbuild/linux-arm64": { 150 | "version": "0.17.19", 151 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", 152 | "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", 153 | "cpu": [ 154 | "arm64" 155 | ], 156 | "dev": true, 157 | "optional": true, 158 | "os": [ 159 | "linux" 160 | ], 161 | "engines": { 162 | "node": ">=12" 163 | } 164 | }, 165 | "node_modules/@esbuild/linux-ia32": { 166 | "version": "0.17.19", 167 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", 168 | "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", 169 | "cpu": [ 170 | "ia32" 171 | ], 172 | "dev": true, 173 | "optional": true, 174 | "os": [ 175 | "linux" 176 | ], 177 | "engines": { 178 | "node": ">=12" 179 | } 180 | }, 181 | "node_modules/@esbuild/linux-loong64": { 182 | "version": "0.17.19", 183 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", 184 | "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", 185 | "cpu": [ 186 | "loong64" 187 | ], 188 | "dev": true, 189 | "optional": true, 190 | "os": [ 191 | "linux" 192 | ], 193 | "engines": { 194 | "node": ">=12" 195 | } 196 | }, 197 | "node_modules/@esbuild/linux-mips64el": { 198 | "version": "0.17.19", 199 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", 200 | "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", 201 | "cpu": [ 202 | "mips64el" 203 | ], 204 | "dev": true, 205 | "optional": true, 206 | "os": [ 207 | "linux" 208 | ], 209 | "engines": { 210 | "node": ">=12" 211 | } 212 | }, 213 | "node_modules/@esbuild/linux-ppc64": { 214 | "version": "0.17.19", 215 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", 216 | "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", 217 | "cpu": [ 218 | "ppc64" 219 | ], 220 | "dev": true, 221 | "optional": true, 222 | "os": [ 223 | "linux" 224 | ], 225 | "engines": { 226 | "node": ">=12" 227 | } 228 | }, 229 | "node_modules/@esbuild/linux-riscv64": { 230 | "version": "0.17.19", 231 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", 232 | "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", 233 | "cpu": [ 234 | "riscv64" 235 | ], 236 | "dev": true, 237 | "optional": true, 238 | "os": [ 239 | "linux" 240 | ], 241 | "engines": { 242 | "node": ">=12" 243 | } 244 | }, 245 | "node_modules/@esbuild/linux-s390x": { 246 | "version": "0.17.19", 247 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", 248 | "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", 249 | "cpu": [ 250 | "s390x" 251 | ], 252 | "dev": true, 253 | "optional": true, 254 | "os": [ 255 | "linux" 256 | ], 257 | "engines": { 258 | "node": ">=12" 259 | } 260 | }, 261 | "node_modules/@esbuild/linux-x64": { 262 | "version": "0.17.19", 263 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", 264 | "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", 265 | "cpu": [ 266 | "x64" 267 | ], 268 | "dev": true, 269 | "optional": true, 270 | "os": [ 271 | "linux" 272 | ], 273 | "engines": { 274 | "node": ">=12" 275 | } 276 | }, 277 | "node_modules/@esbuild/netbsd-x64": { 278 | "version": "0.17.19", 279 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", 280 | "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", 281 | "cpu": [ 282 | "x64" 283 | ], 284 | "dev": true, 285 | "optional": true, 286 | "os": [ 287 | "netbsd" 288 | ], 289 | "engines": { 290 | "node": ">=12" 291 | } 292 | }, 293 | "node_modules/@esbuild/openbsd-x64": { 294 | "version": "0.17.19", 295 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", 296 | "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", 297 | "cpu": [ 298 | "x64" 299 | ], 300 | "dev": true, 301 | "optional": true, 302 | "os": [ 303 | "openbsd" 304 | ], 305 | "engines": { 306 | "node": ">=12" 307 | } 308 | }, 309 | "node_modules/@esbuild/sunos-x64": { 310 | "version": "0.17.19", 311 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", 312 | "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", 313 | "cpu": [ 314 | "x64" 315 | ], 316 | "dev": true, 317 | "optional": true, 318 | "os": [ 319 | "sunos" 320 | ], 321 | "engines": { 322 | "node": ">=12" 323 | } 324 | }, 325 | "node_modules/@esbuild/win32-arm64": { 326 | "version": "0.17.19", 327 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", 328 | "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", 329 | "cpu": [ 330 | "arm64" 331 | ], 332 | "dev": true, 333 | "optional": true, 334 | "os": [ 335 | "win32" 336 | ], 337 | "engines": { 338 | "node": ">=12" 339 | } 340 | }, 341 | "node_modules/@esbuild/win32-ia32": { 342 | "version": "0.17.19", 343 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", 344 | "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", 345 | "cpu": [ 346 | "ia32" 347 | ], 348 | "dev": true, 349 | "optional": true, 350 | "os": [ 351 | "win32" 352 | ], 353 | "engines": { 354 | "node": ">=12" 355 | } 356 | }, 357 | "node_modules/@esbuild/win32-x64": { 358 | "version": "0.17.19", 359 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", 360 | "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", 361 | "cpu": [ 362 | "x64" 363 | ], 364 | "dev": true, 365 | "optional": true, 366 | "os": [ 367 | "win32" 368 | ], 369 | "engines": { 370 | "node": ">=12" 371 | } 372 | }, 373 | "node_modules/@fontsource/fira-mono": { 374 | "version": "4.5.10", 375 | "resolved": "https://registry.npmjs.org/@fontsource/fira-mono/-/fira-mono-4.5.10.tgz", 376 | "integrity": "sha512-bxUnRP8xptGRo8YXeY073DSpfK74XpSb0ZyRNpHV9WvLnJ7TwPOjZll8hTMin7zLC6iOp59pDZ8EQDj1gzgAQQ==", 377 | "dev": true 378 | }, 379 | "node_modules/@jridgewell/sourcemap-codec": { 380 | "version": "1.4.15", 381 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", 382 | "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", 383 | "dev": true 384 | }, 385 | "node_modules/@neoconfetti/svelte": { 386 | "version": "1.0.0", 387 | "resolved": "https://registry.npmjs.org/@neoconfetti/svelte/-/svelte-1.0.0.tgz", 388 | "integrity": "sha512-SmksyaJAdSlMa9cTidVSIqYo1qti+WTsviNDwgjNVm+KQ3DRP2Df9umDIzC4vCcpEYY+chQe0i2IKnLw03AT8Q==", 389 | "dev": true 390 | }, 391 | "node_modules/@polka/url": { 392 | "version": "1.0.0-next.21", 393 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 394 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", 395 | "dev": true 396 | }, 397 | "node_modules/@rollup/plugin-commonjs": { 398 | "version": "24.1.0", 399 | "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", 400 | "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", 401 | "dev": true, 402 | "dependencies": { 403 | "@rollup/pluginutils": "^5.0.1", 404 | "commondir": "^1.0.1", 405 | "estree-walker": "^2.0.2", 406 | "glob": "^8.0.3", 407 | "is-reference": "1.2.1", 408 | "magic-string": "^0.27.0" 409 | }, 410 | "engines": { 411 | "node": ">=14.0.0" 412 | }, 413 | "peerDependencies": { 414 | "rollup": "^2.68.0||^3.0.0" 415 | }, 416 | "peerDependenciesMeta": { 417 | "rollup": { 418 | "optional": true 419 | } 420 | } 421 | }, 422 | "node_modules/@rollup/plugin-commonjs/node_modules/magic-string": { 423 | "version": "0.27.0", 424 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", 425 | "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", 426 | "dev": true, 427 | "dependencies": { 428 | "@jridgewell/sourcemap-codec": "^1.4.13" 429 | }, 430 | "engines": { 431 | "node": ">=12" 432 | } 433 | }, 434 | "node_modules/@rollup/plugin-json": { 435 | "version": "6.0.0", 436 | "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.0.0.tgz", 437 | "integrity": "sha512-i/4C5Jrdr1XUarRhVu27EEwjt4GObltD7c+MkCIpO2QIbojw8MUs+CCTqOphQi3Qtg1FLmYt+l+6YeoIf51J7w==", 438 | "dev": true, 439 | "dependencies": { 440 | "@rollup/pluginutils": "^5.0.1" 441 | }, 442 | "engines": { 443 | "node": ">=14.0.0" 444 | }, 445 | "peerDependencies": { 446 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 447 | }, 448 | "peerDependenciesMeta": { 449 | "rollup": { 450 | "optional": true 451 | } 452 | } 453 | }, 454 | "node_modules/@rollup/plugin-node-resolve": { 455 | "version": "15.1.0", 456 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.1.0.tgz", 457 | "integrity": "sha512-xeZHCgsiZ9pzYVgAo9580eCGqwh/XCEUM9q6iQfGNocjgkufHAqC3exA+45URvhiYV8sBF9RlBai650eNs7AsA==", 458 | "dev": true, 459 | "dependencies": { 460 | "@rollup/pluginutils": "^5.0.1", 461 | "@types/resolve": "1.20.2", 462 | "deepmerge": "^4.2.2", 463 | "is-builtin-module": "^3.2.1", 464 | "is-module": "^1.0.0", 465 | "resolve": "^1.22.1" 466 | }, 467 | "engines": { 468 | "node": ">=14.0.0" 469 | }, 470 | "peerDependencies": { 471 | "rollup": "^2.78.0||^3.0.0" 472 | }, 473 | "peerDependenciesMeta": { 474 | "rollup": { 475 | "optional": true 476 | } 477 | } 478 | }, 479 | "node_modules/@rollup/pluginutils": { 480 | "version": "5.0.2", 481 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz", 482 | "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==", 483 | "dev": true, 484 | "dependencies": { 485 | "@types/estree": "^1.0.0", 486 | "estree-walker": "^2.0.2", 487 | "picomatch": "^2.3.1" 488 | }, 489 | "engines": { 490 | "node": ">=14.0.0" 491 | }, 492 | "peerDependencies": { 493 | "rollup": "^1.20.0||^2.0.0||^3.0.0" 494 | }, 495 | "peerDependenciesMeta": { 496 | "rollup": { 497 | "optional": true 498 | } 499 | } 500 | }, 501 | "node_modules/@sveltejs/adapter-auto": { 502 | "version": "2.1.0", 503 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.1.0.tgz", 504 | "integrity": "sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==", 505 | "dev": true, 506 | "dependencies": { 507 | "import-meta-resolve": "^3.0.0" 508 | }, 509 | "peerDependencies": { 510 | "@sveltejs/kit": "^1.0.0" 511 | } 512 | }, 513 | "node_modules/@sveltejs/adapter-node": { 514 | "version": "1.2.4", 515 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-node/-/adapter-node-1.2.4.tgz", 516 | "integrity": "sha512-TNnhS+OKRZ9RKnC+ho5mlE2FJquI61i0v7yOXxBUSU3LAoYH2kwVVL8P8ecjefmZ8BOfM1V54pBnDODBU5CEaA==", 517 | "dev": true, 518 | "dependencies": { 519 | "@rollup/plugin-commonjs": "^24.0.0", 520 | "@rollup/plugin-json": "^6.0.0", 521 | "@rollup/plugin-node-resolve": "^15.0.1", 522 | "rollup": "^3.7.0" 523 | }, 524 | "peerDependencies": { 525 | "@sveltejs/kit": "^1.0.0" 526 | } 527 | }, 528 | "node_modules/@sveltejs/kit": { 529 | "version": "1.20.0", 530 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.20.0.tgz", 531 | "integrity": "sha512-2ZW14afgcCQBk3BN8+FWUUCIZg+TKeDFuOMUpDNllTa6sKZ+YQNpxhsrt9abaZohPGsGGOYmk5fzy8D8MHVNBw==", 532 | "dev": true, 533 | "hasInstallScript": true, 534 | "dependencies": { 535 | "@sveltejs/vite-plugin-svelte": "^2.4.1", 536 | "@types/cookie": "^0.5.1", 537 | "cookie": "^0.5.0", 538 | "devalue": "^4.3.1", 539 | "esm-env": "^1.0.0", 540 | "kleur": "^4.1.5", 541 | "magic-string": "^0.30.0", 542 | "mime": "^3.0.0", 543 | "sade": "^1.8.1", 544 | "set-cookie-parser": "^2.6.0", 545 | "sirv": "^2.0.2", 546 | "tiny-glob": "^0.2.9", 547 | "undici": "~5.22.0" 548 | }, 549 | "bin": { 550 | "svelte-kit": "svelte-kit.js" 551 | }, 552 | "engines": { 553 | "node": "^16.14 || >=18" 554 | }, 555 | "peerDependencies": { 556 | "svelte": "^3.54.0 || ^4.0.0-next.0", 557 | "vite": "^4.0.0" 558 | } 559 | }, 560 | "node_modules/@sveltejs/vite-plugin-svelte": { 561 | "version": "2.4.1", 562 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.1.tgz", 563 | "integrity": "sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==", 564 | "dev": true, 565 | "dependencies": { 566 | "@sveltejs/vite-plugin-svelte-inspector": "^1.0.2", 567 | "debug": "^4.3.4", 568 | "deepmerge": "^4.3.1", 569 | "kleur": "^4.1.5", 570 | "magic-string": "^0.30.0", 571 | "svelte-hmr": "^0.15.1", 572 | "vitefu": "^0.2.4" 573 | }, 574 | "engines": { 575 | "node": "^14.18.0 || >= 16" 576 | }, 577 | "peerDependencies": { 578 | "svelte": "^3.54.0 || ^4.0.0-next.0", 579 | "vite": "^4.0.0" 580 | } 581 | }, 582 | "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 583 | "version": "1.0.2", 584 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-1.0.2.tgz", 585 | "integrity": "sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==", 586 | "dev": true, 587 | "dependencies": { 588 | "debug": "^4.3.4" 589 | }, 590 | "engines": { 591 | "node": "^14.18.0 || >= 16" 592 | }, 593 | "peerDependencies": { 594 | "@sveltejs/vite-plugin-svelte": "^2.2.0", 595 | "svelte": "^3.54.0 || ^4.0.0-next.0", 596 | "vite": "^4.0.0" 597 | } 598 | }, 599 | "node_modules/@types/cookie": { 600 | "version": "0.5.1", 601 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", 602 | "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", 603 | "dev": true 604 | }, 605 | "node_modules/@types/estree": { 606 | "version": "1.0.1", 607 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", 608 | "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", 609 | "dev": true 610 | }, 611 | "node_modules/@types/resolve": { 612 | "version": "1.20.2", 613 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", 614 | "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", 615 | "dev": true 616 | }, 617 | "node_modules/balanced-match": { 618 | "version": "1.0.2", 619 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 620 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 621 | "dev": true 622 | }, 623 | "node_modules/brace-expansion": { 624 | "version": "2.0.1", 625 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 626 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 627 | "dev": true, 628 | "dependencies": { 629 | "balanced-match": "^1.0.0" 630 | } 631 | }, 632 | "node_modules/buffer-writer": { 633 | "version": "2.0.0", 634 | "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-2.0.0.tgz", 635 | "integrity": "sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==", 636 | "dev": true, 637 | "engines": { 638 | "node": ">=4" 639 | } 640 | }, 641 | "node_modules/builtin-modules": { 642 | "version": "3.3.0", 643 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", 644 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", 645 | "dev": true, 646 | "engines": { 647 | "node": ">=6" 648 | }, 649 | "funding": { 650 | "url": "https://github.com/sponsors/sindresorhus" 651 | } 652 | }, 653 | "node_modules/busboy": { 654 | "version": "1.6.0", 655 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 656 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 657 | "dev": true, 658 | "dependencies": { 659 | "streamsearch": "^1.1.0" 660 | }, 661 | "engines": { 662 | "node": ">=10.16.0" 663 | } 664 | }, 665 | "node_modules/commondir": { 666 | "version": "1.0.1", 667 | "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", 668 | "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", 669 | "dev": true 670 | }, 671 | "node_modules/cookie": { 672 | "version": "0.5.0", 673 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 674 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 675 | "dev": true, 676 | "engines": { 677 | "node": ">= 0.6" 678 | } 679 | }, 680 | "node_modules/debug": { 681 | "version": "4.3.4", 682 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 683 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 684 | "dev": true, 685 | "dependencies": { 686 | "ms": "2.1.2" 687 | }, 688 | "engines": { 689 | "node": ">=6.0" 690 | }, 691 | "peerDependenciesMeta": { 692 | "supports-color": { 693 | "optional": true 694 | } 695 | } 696 | }, 697 | "node_modules/deepmerge": { 698 | "version": "4.3.1", 699 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 700 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 701 | "dev": true, 702 | "engines": { 703 | "node": ">=0.10.0" 704 | } 705 | }, 706 | "node_modules/devalue": { 707 | "version": "4.3.2", 708 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", 709 | "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", 710 | "dev": true 711 | }, 712 | "node_modules/esbuild": { 713 | "version": "0.17.19", 714 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", 715 | "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", 716 | "dev": true, 717 | "hasInstallScript": true, 718 | "bin": { 719 | "esbuild": "bin/esbuild" 720 | }, 721 | "engines": { 722 | "node": ">=12" 723 | }, 724 | "optionalDependencies": { 725 | "@esbuild/android-arm": "0.17.19", 726 | "@esbuild/android-arm64": "0.17.19", 727 | "@esbuild/android-x64": "0.17.19", 728 | "@esbuild/darwin-arm64": "0.17.19", 729 | "@esbuild/darwin-x64": "0.17.19", 730 | "@esbuild/freebsd-arm64": "0.17.19", 731 | "@esbuild/freebsd-x64": "0.17.19", 732 | "@esbuild/linux-arm": "0.17.19", 733 | "@esbuild/linux-arm64": "0.17.19", 734 | "@esbuild/linux-ia32": "0.17.19", 735 | "@esbuild/linux-loong64": "0.17.19", 736 | "@esbuild/linux-mips64el": "0.17.19", 737 | "@esbuild/linux-ppc64": "0.17.19", 738 | "@esbuild/linux-riscv64": "0.17.19", 739 | "@esbuild/linux-s390x": "0.17.19", 740 | "@esbuild/linux-x64": "0.17.19", 741 | "@esbuild/netbsd-x64": "0.17.19", 742 | "@esbuild/openbsd-x64": "0.17.19", 743 | "@esbuild/sunos-x64": "0.17.19", 744 | "@esbuild/win32-arm64": "0.17.19", 745 | "@esbuild/win32-ia32": "0.17.19", 746 | "@esbuild/win32-x64": "0.17.19" 747 | } 748 | }, 749 | "node_modules/esm-env": { 750 | "version": "1.0.0", 751 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 752 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 753 | "dev": true 754 | }, 755 | "node_modules/estree-walker": { 756 | "version": "2.0.2", 757 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 758 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 759 | "dev": true 760 | }, 761 | "node_modules/fs.realpath": { 762 | "version": "1.0.0", 763 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 764 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 765 | "dev": true 766 | }, 767 | "node_modules/fsevents": { 768 | "version": "2.3.2", 769 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 770 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 771 | "dev": true, 772 | "hasInstallScript": true, 773 | "optional": true, 774 | "os": [ 775 | "darwin" 776 | ], 777 | "engines": { 778 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 779 | } 780 | }, 781 | "node_modules/function-bind": { 782 | "version": "1.1.1", 783 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 784 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 785 | "dev": true 786 | }, 787 | "node_modules/glob": { 788 | "version": "8.1.0", 789 | "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", 790 | "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", 791 | "dev": true, 792 | "dependencies": { 793 | "fs.realpath": "^1.0.0", 794 | "inflight": "^1.0.4", 795 | "inherits": "2", 796 | "minimatch": "^5.0.1", 797 | "once": "^1.3.0" 798 | }, 799 | "engines": { 800 | "node": ">=12" 801 | }, 802 | "funding": { 803 | "url": "https://github.com/sponsors/isaacs" 804 | } 805 | }, 806 | "node_modules/globalyzer": { 807 | "version": "0.1.0", 808 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 809 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", 810 | "dev": true 811 | }, 812 | "node_modules/globrex": { 813 | "version": "0.1.2", 814 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 815 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 816 | "dev": true 817 | }, 818 | "node_modules/has": { 819 | "version": "1.0.3", 820 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 821 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 822 | "dev": true, 823 | "dependencies": { 824 | "function-bind": "^1.1.1" 825 | }, 826 | "engines": { 827 | "node": ">= 0.4.0" 828 | } 829 | }, 830 | "node_modules/import-meta-resolve": { 831 | "version": "3.0.0", 832 | "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-3.0.0.tgz", 833 | "integrity": "sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==", 834 | "dev": true, 835 | "funding": { 836 | "type": "github", 837 | "url": "https://github.com/sponsors/wooorm" 838 | } 839 | }, 840 | "node_modules/inflight": { 841 | "version": "1.0.6", 842 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 843 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 844 | "dev": true, 845 | "dependencies": { 846 | "once": "^1.3.0", 847 | "wrappy": "1" 848 | } 849 | }, 850 | "node_modules/inherits": { 851 | "version": "2.0.4", 852 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 853 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 854 | "dev": true 855 | }, 856 | "node_modules/is-builtin-module": { 857 | "version": "3.2.1", 858 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", 859 | "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", 860 | "dev": true, 861 | "dependencies": { 862 | "builtin-modules": "^3.3.0" 863 | }, 864 | "engines": { 865 | "node": ">=6" 866 | }, 867 | "funding": { 868 | "url": "https://github.com/sponsors/sindresorhus" 869 | } 870 | }, 871 | "node_modules/is-core-module": { 872 | "version": "2.12.1", 873 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz", 874 | "integrity": "sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==", 875 | "dev": true, 876 | "dependencies": { 877 | "has": "^1.0.3" 878 | }, 879 | "funding": { 880 | "url": "https://github.com/sponsors/ljharb" 881 | } 882 | }, 883 | "node_modules/is-module": { 884 | "version": "1.0.0", 885 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", 886 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", 887 | "dev": true 888 | }, 889 | "node_modules/is-reference": { 890 | "version": "1.2.1", 891 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", 892 | "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", 893 | "dev": true, 894 | "dependencies": { 895 | "@types/estree": "*" 896 | } 897 | }, 898 | "node_modules/kleur": { 899 | "version": "4.1.5", 900 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 901 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 902 | "dev": true, 903 | "engines": { 904 | "node": ">=6" 905 | } 906 | }, 907 | "node_modules/magic-string": { 908 | "version": "0.30.0", 909 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 910 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 911 | "dev": true, 912 | "dependencies": { 913 | "@jridgewell/sourcemap-codec": "^1.4.13" 914 | }, 915 | "engines": { 916 | "node": ">=12" 917 | } 918 | }, 919 | "node_modules/mime": { 920 | "version": "3.0.0", 921 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 922 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 923 | "dev": true, 924 | "bin": { 925 | "mime": "cli.js" 926 | }, 927 | "engines": { 928 | "node": ">=10.0.0" 929 | } 930 | }, 931 | "node_modules/minimatch": { 932 | "version": "5.1.6", 933 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", 934 | "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", 935 | "dev": true, 936 | "dependencies": { 937 | "brace-expansion": "^2.0.1" 938 | }, 939 | "engines": { 940 | "node": ">=10" 941 | } 942 | }, 943 | "node_modules/mri": { 944 | "version": "1.2.0", 945 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 946 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 947 | "dev": true, 948 | "engines": { 949 | "node": ">=4" 950 | } 951 | }, 952 | "node_modules/mrmime": { 953 | "version": "1.0.1", 954 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", 955 | "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", 956 | "dev": true, 957 | "engines": { 958 | "node": ">=10" 959 | } 960 | }, 961 | "node_modules/ms": { 962 | "version": "2.1.2", 963 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 964 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 965 | "dev": true 966 | }, 967 | "node_modules/nanoid": { 968 | "version": "3.3.6", 969 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", 970 | "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", 971 | "dev": true, 972 | "funding": [ 973 | { 974 | "type": "github", 975 | "url": "https://github.com/sponsors/ai" 976 | } 977 | ], 978 | "bin": { 979 | "nanoid": "bin/nanoid.cjs" 980 | }, 981 | "engines": { 982 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 983 | } 984 | }, 985 | "node_modules/once": { 986 | "version": "1.4.0", 987 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 988 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 989 | "dev": true, 990 | "dependencies": { 991 | "wrappy": "1" 992 | } 993 | }, 994 | "node_modules/packet-reader": { 995 | "version": "1.0.0", 996 | "resolved": "https://registry.npmjs.org/packet-reader/-/packet-reader-1.0.0.tgz", 997 | "integrity": "sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==", 998 | "dev": true 999 | }, 1000 | "node_modules/path-parse": { 1001 | "version": "1.0.7", 1002 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1003 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1004 | "dev": true 1005 | }, 1006 | "node_modules/pg": { 1007 | "version": "8.11.0", 1008 | "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.0.tgz", 1009 | "integrity": "sha512-meLUVPn2TWgJyLmy7el3fQQVwft4gU5NGyvV0XbD41iU9Jbg8lCH4zexhIkihDzVHJStlt6r088G6/fWeNjhXA==", 1010 | "dev": true, 1011 | "dependencies": { 1012 | "buffer-writer": "2.0.0", 1013 | "packet-reader": "1.0.0", 1014 | "pg-connection-string": "^2.6.0", 1015 | "pg-pool": "^3.6.0", 1016 | "pg-protocol": "^1.6.0", 1017 | "pg-types": "^2.1.0", 1018 | "pgpass": "1.x" 1019 | }, 1020 | "engines": { 1021 | "node": ">= 8.0.0" 1022 | }, 1023 | "optionalDependencies": { 1024 | "pg-cloudflare": "^1.1.0" 1025 | }, 1026 | "peerDependencies": { 1027 | "pg-native": ">=3.0.1" 1028 | }, 1029 | "peerDependenciesMeta": { 1030 | "pg-native": { 1031 | "optional": true 1032 | } 1033 | } 1034 | }, 1035 | "node_modules/pg-cloudflare": { 1036 | "version": "1.1.0", 1037 | "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.0.tgz", 1038 | "integrity": "sha512-tGM8/s6frwuAIyRcJ6nWcIvd3+3NmUKIs6OjviIm1HPPFEt5MzQDOTBQyhPWg/m0kCl95M6gA1JaIXtS8KovOA==", 1039 | "dev": true, 1040 | "optional": true 1041 | }, 1042 | "node_modules/pg-connection-string": { 1043 | "version": "2.6.0", 1044 | "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.0.tgz", 1045 | "integrity": "sha512-x14ibktcwlHKoHxx9X3uTVW9zIGR41ZB6QNhHb21OPNdCCO3NaRnpJuwKIQSR4u+Yqjx4HCvy7Hh7VSy1U4dGg==", 1046 | "dev": true 1047 | }, 1048 | "node_modules/pg-int8": { 1049 | "version": "1.0.1", 1050 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 1051 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 1052 | "dev": true, 1053 | "engines": { 1054 | "node": ">=4.0.0" 1055 | } 1056 | }, 1057 | "node_modules/pg-pool": { 1058 | "version": "3.6.0", 1059 | "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", 1060 | "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", 1061 | "dev": true, 1062 | "peerDependencies": { 1063 | "pg": ">=8.0" 1064 | } 1065 | }, 1066 | "node_modules/pg-protocol": { 1067 | "version": "1.6.0", 1068 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.0.tgz", 1069 | "integrity": "sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==", 1070 | "dev": true 1071 | }, 1072 | "node_modules/pg-types": { 1073 | "version": "2.2.0", 1074 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 1075 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 1076 | "dev": true, 1077 | "dependencies": { 1078 | "pg-int8": "1.0.1", 1079 | "postgres-array": "~2.0.0", 1080 | "postgres-bytea": "~1.0.0", 1081 | "postgres-date": "~1.0.4", 1082 | "postgres-interval": "^1.1.0" 1083 | }, 1084 | "engines": { 1085 | "node": ">=4" 1086 | } 1087 | }, 1088 | "node_modules/pgpass": { 1089 | "version": "1.0.5", 1090 | "resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz", 1091 | "integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==", 1092 | "dev": true, 1093 | "dependencies": { 1094 | "split2": "^4.1.0" 1095 | } 1096 | }, 1097 | "node_modules/picocolors": { 1098 | "version": "1.0.0", 1099 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1100 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1101 | "dev": true 1102 | }, 1103 | "node_modules/picomatch": { 1104 | "version": "2.3.1", 1105 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1106 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1107 | "dev": true, 1108 | "engines": { 1109 | "node": ">=8.6" 1110 | }, 1111 | "funding": { 1112 | "url": "https://github.com/sponsors/jonschlinkert" 1113 | } 1114 | }, 1115 | "node_modules/postcss": { 1116 | "version": "8.4.24", 1117 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz", 1118 | "integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==", 1119 | "dev": true, 1120 | "funding": [ 1121 | { 1122 | "type": "opencollective", 1123 | "url": "https://opencollective.com/postcss/" 1124 | }, 1125 | { 1126 | "type": "tidelift", 1127 | "url": "https://tidelift.com/funding/github/npm/postcss" 1128 | }, 1129 | { 1130 | "type": "github", 1131 | "url": "https://github.com/sponsors/ai" 1132 | } 1133 | ], 1134 | "dependencies": { 1135 | "nanoid": "^3.3.6", 1136 | "picocolors": "^1.0.0", 1137 | "source-map-js": "^1.0.2" 1138 | }, 1139 | "engines": { 1140 | "node": "^10 || ^12 || >=14" 1141 | } 1142 | }, 1143 | "node_modules/postgres-array": { 1144 | "version": "2.0.0", 1145 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 1146 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 1147 | "dev": true, 1148 | "engines": { 1149 | "node": ">=4" 1150 | } 1151 | }, 1152 | "node_modules/postgres-bytea": { 1153 | "version": "1.0.0", 1154 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 1155 | "integrity": "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==", 1156 | "dev": true, 1157 | "engines": { 1158 | "node": ">=0.10.0" 1159 | } 1160 | }, 1161 | "node_modules/postgres-date": { 1162 | "version": "1.0.7", 1163 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 1164 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 1165 | "dev": true, 1166 | "engines": { 1167 | "node": ">=0.10.0" 1168 | } 1169 | }, 1170 | "node_modules/postgres-interval": { 1171 | "version": "1.2.0", 1172 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 1173 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 1174 | "dev": true, 1175 | "dependencies": { 1176 | "xtend": "^4.0.0" 1177 | }, 1178 | "engines": { 1179 | "node": ">=0.10.0" 1180 | } 1181 | }, 1182 | "node_modules/resolve": { 1183 | "version": "1.22.2", 1184 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", 1185 | "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", 1186 | "dev": true, 1187 | "dependencies": { 1188 | "is-core-module": "^2.11.0", 1189 | "path-parse": "^1.0.7", 1190 | "supports-preserve-symlinks-flag": "^1.0.0" 1191 | }, 1192 | "bin": { 1193 | "resolve": "bin/resolve" 1194 | }, 1195 | "funding": { 1196 | "url": "https://github.com/sponsors/ljharb" 1197 | } 1198 | }, 1199 | "node_modules/rollup": { 1200 | "version": "3.23.0", 1201 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.0.tgz", 1202 | "integrity": "sha512-h31UlwEi7FHihLe1zbk+3Q7z1k/84rb9BSwmBSr/XjOCEaBJ2YyedQDuM0t/kfOS0IxM+vk1/zI9XxYj9V+NJQ==", 1203 | "dev": true, 1204 | "bin": { 1205 | "rollup": "dist/bin/rollup" 1206 | }, 1207 | "engines": { 1208 | "node": ">=14.18.0", 1209 | "npm": ">=8.0.0" 1210 | }, 1211 | "optionalDependencies": { 1212 | "fsevents": "~2.3.2" 1213 | } 1214 | }, 1215 | "node_modules/sade": { 1216 | "version": "1.8.1", 1217 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1218 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1219 | "dev": true, 1220 | "dependencies": { 1221 | "mri": "^1.1.0" 1222 | }, 1223 | "engines": { 1224 | "node": ">=6" 1225 | } 1226 | }, 1227 | "node_modules/set-cookie-parser": { 1228 | "version": "2.6.0", 1229 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", 1230 | "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", 1231 | "dev": true 1232 | }, 1233 | "node_modules/sirv": { 1234 | "version": "2.0.3", 1235 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.3.tgz", 1236 | "integrity": "sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==", 1237 | "dev": true, 1238 | "dependencies": { 1239 | "@polka/url": "^1.0.0-next.20", 1240 | "mrmime": "^1.0.0", 1241 | "totalist": "^3.0.0" 1242 | }, 1243 | "engines": { 1244 | "node": ">= 10" 1245 | } 1246 | }, 1247 | "node_modules/source-map-js": { 1248 | "version": "1.0.2", 1249 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1250 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1251 | "dev": true, 1252 | "engines": { 1253 | "node": ">=0.10.0" 1254 | } 1255 | }, 1256 | "node_modules/split2": { 1257 | "version": "4.2.0", 1258 | "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", 1259 | "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", 1260 | "dev": true, 1261 | "engines": { 1262 | "node": ">= 10.x" 1263 | } 1264 | }, 1265 | "node_modules/streamsearch": { 1266 | "version": "1.1.0", 1267 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1268 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1269 | "dev": true, 1270 | "engines": { 1271 | "node": ">=10.0.0" 1272 | } 1273 | }, 1274 | "node_modules/supports-preserve-symlinks-flag": { 1275 | "version": "1.0.0", 1276 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1277 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1278 | "dev": true, 1279 | "engines": { 1280 | "node": ">= 0.4" 1281 | }, 1282 | "funding": { 1283 | "url": "https://github.com/sponsors/ljharb" 1284 | } 1285 | }, 1286 | "node_modules/svelte": { 1287 | "version": "3.59.1", 1288 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.1.tgz", 1289 | "integrity": "sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==", 1290 | "dev": true, 1291 | "engines": { 1292 | "node": ">= 8" 1293 | } 1294 | }, 1295 | "node_modules/svelte-hmr": { 1296 | "version": "0.15.2", 1297 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.2.tgz", 1298 | "integrity": "sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==", 1299 | "dev": true, 1300 | "engines": { 1301 | "node": "^12.20 || ^14.13.1 || >= 16" 1302 | }, 1303 | "peerDependencies": { 1304 | "svelte": "^3.19.0 || ^4.0.0-next.0" 1305 | } 1306 | }, 1307 | "node_modules/tiny-glob": { 1308 | "version": "0.2.9", 1309 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 1310 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 1311 | "dev": true, 1312 | "dependencies": { 1313 | "globalyzer": "0.1.0", 1314 | "globrex": "^0.1.2" 1315 | } 1316 | }, 1317 | "node_modules/totalist": { 1318 | "version": "3.0.1", 1319 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", 1320 | "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", 1321 | "dev": true, 1322 | "engines": { 1323 | "node": ">=6" 1324 | } 1325 | }, 1326 | "node_modules/undici": { 1327 | "version": "5.22.1", 1328 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz", 1329 | "integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==", 1330 | "dev": true, 1331 | "dependencies": { 1332 | "busboy": "^1.6.0" 1333 | }, 1334 | "engines": { 1335 | "node": ">=14.0" 1336 | } 1337 | }, 1338 | "node_modules/vite": { 1339 | "version": "4.3.9", 1340 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz", 1341 | "integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==", 1342 | "dev": true, 1343 | "dependencies": { 1344 | "esbuild": "^0.17.5", 1345 | "postcss": "^8.4.23", 1346 | "rollup": "^3.21.0" 1347 | }, 1348 | "bin": { 1349 | "vite": "bin/vite.js" 1350 | }, 1351 | "engines": { 1352 | "node": "^14.18.0 || >=16.0.0" 1353 | }, 1354 | "optionalDependencies": { 1355 | "fsevents": "~2.3.2" 1356 | }, 1357 | "peerDependencies": { 1358 | "@types/node": ">= 14", 1359 | "less": "*", 1360 | "sass": "*", 1361 | "stylus": "*", 1362 | "sugarss": "*", 1363 | "terser": "^5.4.0" 1364 | }, 1365 | "peerDependenciesMeta": { 1366 | "@types/node": { 1367 | "optional": true 1368 | }, 1369 | "less": { 1370 | "optional": true 1371 | }, 1372 | "sass": { 1373 | "optional": true 1374 | }, 1375 | "stylus": { 1376 | "optional": true 1377 | }, 1378 | "sugarss": { 1379 | "optional": true 1380 | }, 1381 | "terser": { 1382 | "optional": true 1383 | } 1384 | } 1385 | }, 1386 | "node_modules/vitefu": { 1387 | "version": "0.2.4", 1388 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 1389 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 1390 | "dev": true, 1391 | "peerDependencies": { 1392 | "vite": "^3.0.0 || ^4.0.0" 1393 | }, 1394 | "peerDependenciesMeta": { 1395 | "vite": { 1396 | "optional": true 1397 | } 1398 | } 1399 | }, 1400 | "node_modules/wrappy": { 1401 | "version": "1.0.2", 1402 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1403 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1404 | "dev": true 1405 | }, 1406 | "node_modules/xtend": { 1407 | "version": "4.0.2", 1408 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1409 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 1410 | "dev": true, 1411 | "engines": { 1412 | "node": ">=0.4" 1413 | } 1414 | } 1415 | } 1416 | } 1417 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit", 3 | "version": "0.0.1", 4 | "scripts": { 5 | "dev": "vite dev", 6 | "build": "vite build", 7 | "preview": "vite preview" 8 | }, 9 | "devDependencies": { 10 | "@fontsource/fira-mono": "^4.5.10", 11 | "@neoconfetti/svelte": "^1.0.0", 12 | "@sveltejs/adapter-auto": "^2.0.0", 13 | "@sveltejs/adapter-node": "^1.2.4", 14 | "@sveltejs/kit": "^1.5.0", 15 | "pg": "^8.11.0", 16 | "svelte": "^3.54.0", 17 | "vite": "^4.3.0" 18 | }, 19 | "type": "module" 20 | } 21 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |10 | This is a SvelteKit app. You can make your own by typing the 11 | following into your command line and following the prompts: 12 |
13 | 14 |npm create svelte@latest15 | 16 |
17 | The page you're looking at is purely static HTML, with no client-side interactivity needed. 18 | Because of that, we don't need to load any JavaScript. Try viewing the page's source, or opening 19 | the devtools network panel and reloading. 20 |
21 | 22 |23 | The Sverdle page illustrates SvelteKit's data loading and form handling. Try 24 | using it with JavaScript disabled! 25 |
26 |10 | Sverdle is a clone of Wordle, the 11 | word guessing game. To play, enter a five-letter English word. For example: 12 |
13 | 14 |23 | The y is in the right place. r and 24 | t 25 | are the right letters, but in the wrong place. The other letters are wrong, and can be discarded. 26 | Let's make another guess: 27 |
28 | 29 |This time we guessed right! You have six guesses to get the word.
38 | 39 |
40 | Unlike the original Wordle, Sverdle runs on the server instead of in the browser, making it
41 | impossible to cheat. It uses <form>
and cookies to submit data, meaning you can
42 | even play with JavaScript disabled!
43 |