├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── .npmrc ├── LICENSE ├── README.md ├── package.json ├── pnpm-lock.yaml ├── postcss.config.cjs ├── src ├── app.d.ts ├── app.html ├── app.postcss ├── lib │ ├── index.ts │ ├── perfect-freehand.js │ └── svg-path.ts └── routes │ ├── +layout.svelte │ ├── +layout.ts │ └── +page.svelte ├── static └── favicon.png ├── svelte.config.js ├── tailwind.config.cjs ├── tsconfig.json ├── tsup.config.ts └── vite.config.ts /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to GitHub Pages 2 | 3 | on: 4 | # Trigger the workflow every time you push to the `main` branch 5 | # Using a different branch name? Replace `main` with your branch’s name 6 | push: 7 | branches: [master] 8 | 9 | # Allows you to run this workflow manually from the Actions tab on GitHub. 10 | workflow_dispatch: 11 | 12 | # Allow this job to clone the repo and create a page deployment 13 | permissions: 14 | contents: read 15 | pages: write 16 | id-token: write 17 | 18 | # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. 19 | # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. 20 | concurrency: 21 | group: "pages" 22 | cancel-in-progress: false 23 | 24 | jobs: 25 | build: 26 | runs-on: ubuntu-latest 27 | steps: 28 | - name: Checkout 29 | uses: actions/checkout@v4 30 | 31 | - name: Install pnpm 32 | uses: pnpm/action-setup@v4 33 | with: 34 | version: 9 35 | run_install: false 36 | 37 | - name: Install Node.js 38 | uses: actions/setup-node@v4 39 | with: 40 | node-version: 22 41 | cache: 'pnpm' 42 | 43 | - name: Install dependencies 44 | run: pnpm install --frozen-lockfile 45 | 46 | - name: Setup Pages 47 | uses: actions/configure-pages@v5 48 | with: 49 | static_site_generator: sveltekit 50 | 51 | - name: Build 52 | run: pnpm run build 53 | 54 | - name: Upload Artifacts 55 | uses: actions/upload-pages-artifact@v3 56 | with: 57 | # this should match the `pages` option in your adapter-static options 58 | path: 'build/' 59 | 60 | deploy: 61 | needs: build 62 | runs-on: ubuntu-latest 63 | 64 | environment: 65 | name: github-pages 66 | url: ${{ steps.deployment.outputs.page_url }} 67 | 68 | steps: 69 | - name: Deploy 70 | id: deployment 71 | uses: actions/deploy-pages@v4 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | /build 5 | /.svelte-kit 6 | /package 7 | .env 8 | .env.* 9 | !.env.example 10 | vite.config.js.timestamp-* 11 | vite.config.ts.timestamp-* 12 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Simon Green 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # svelte-signature-pad 2 | 3 | Svelte Action to capture smoothed signatures as SVG paths using the excellent [perfect-freehand](https://github.com/steveruizok/perfect-freehand) library. 4 | 5 | ## Instructions 6 | 7 | Install using you package manager of choice: 8 | 9 | pnpm i svelte-signature-pad 10 | 11 | Import action into page and pass and object with `ondraw` and `oncomplete` method properties. 12 | 13 | Each will receive a path which can be rendered as SVG in your component. `ondraw` fires _while the user is drawing_ and would be the current stroke. `oncomplete` fires when they have finished the line (which could transition to a different color). 14 | 15 | ## Example 16 | 17 | ```svelte 18 | 37 | 38 |
39 |
40 |
false} 46 | > 47 | {#each layers as layer} 48 | 49 | 50 | 51 | {/each} 52 | 53 | {#if preview} 54 | 55 | 56 | 57 | {/if} 58 |
59 | 60 |
61 | 62 |

Please sign on the dotted line to indicate that you agree to all the legal terms we all know you didn't read. Thank you!

63 | 64 |
65 | {#each layers as layer} 66 | 67 | 68 | 69 | {/each} 70 |
71 | ``` 72 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-signature-pad", 3 | "version": "0.0.2", 4 | "type": "module", 5 | "keywords": [ 6 | "svelte", 7 | "action", 8 | "signature", 9 | "svg" 10 | ], 11 | "files": [ 12 | "dist" 13 | ], 14 | "exports": { 15 | ".": { 16 | "types": "./dist/index.d.ts", 17 | "import": "./dist/index.js", 18 | "svelte": "./dist/index.js" 19 | } 20 | }, 21 | "module": "dist/index.js", 22 | "types": "dist/index.d.ts", 23 | "homepage": "https://captaincodeman.github.io/svelte-signature-pad/", 24 | "repository": { 25 | "type": "git", 26 | "url": "https://github.com/captaincodeman/svelte-signature-pad.git" 27 | }, 28 | "author": { 29 | "name": "Simon Green", 30 | "email": "simon@captaincodeman.com", 31 | "url": "https://www.captaincodeman.com/" 32 | }, 33 | "license": "MIT", 34 | "scripts": { 35 | "dev": "vite dev", 36 | "build": "vite build", 37 | "preview": "vite preview", 38 | "package": "svelte-kit sync && tsup && publint", 39 | "prepublishOnly": "npm run package", 40 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 41 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 42 | }, 43 | "peerDependencies": { 44 | "svelte": "^3.54.0 || ^4.0.0" 45 | }, 46 | "devDependencies": { 47 | "@sveltejs/adapter-static": "^2.0.2", 48 | "@sveltejs/kit": "^1.20.4", 49 | "autoprefixer": "^10.4.14", 50 | "postcss": "^8.4.24", 51 | "postcss-load-config": "^4.0.1", 52 | "publint": "^0.1.12", 53 | "svelte": "^4.0.0", 54 | "svelte-check": "^3.4.4", 55 | "tailwindcss": "^3.3.2", 56 | "tslib": "^2.5.3", 57 | "tsup": "^7.0.0", 58 | "typescript": "^5.1.3", 59 | "vite": "^4.3.9" 60 | }, 61 | "dependencies": { 62 | "perfect-freehand": "^1.2.0" 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | perfect-freehand: 9 | specifier: ^1.2.0 10 | version: 1.2.0 11 | 12 | devDependencies: 13 | '@sveltejs/adapter-static': 14 | specifier: ^2.0.2 15 | version: 2.0.2(@sveltejs/kit@1.20.4) 16 | '@sveltejs/kit': 17 | specifier: ^1.20.4 18 | version: 1.20.4(svelte@4.0.0)(vite@4.3.9) 19 | autoprefixer: 20 | specifier: ^10.4.14 21 | version: 10.4.14(postcss@8.4.24) 22 | postcss: 23 | specifier: ^8.4.24 24 | version: 8.4.24 25 | postcss-load-config: 26 | specifier: ^4.0.1 27 | version: 4.0.1(postcss@8.4.24) 28 | publint: 29 | specifier: ^0.1.12 30 | version: 0.1.12 31 | svelte: 32 | specifier: ^4.0.0 33 | version: 4.0.0 34 | svelte-check: 35 | specifier: ^3.4.4 36 | version: 3.4.4(postcss-load-config@4.0.1)(postcss@8.4.24)(svelte@4.0.0) 37 | tailwindcss: 38 | specifier: ^3.3.2 39 | version: 3.3.2 40 | tslib: 41 | specifier: ^2.5.3 42 | version: 2.5.3 43 | tsup: 44 | specifier: ^7.0.0 45 | version: 7.0.0(postcss@8.4.24)(typescript@5.1.3) 46 | typescript: 47 | specifier: ^5.1.3 48 | version: 5.1.3 49 | vite: 50 | specifier: ^4.3.9 51 | version: 4.3.9 52 | 53 | packages: 54 | 55 | /@alloc/quick-lru@5.2.0: 56 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 57 | engines: {node: '>=10'} 58 | dev: true 59 | 60 | /@ampproject/remapping@2.2.1: 61 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 62 | engines: {node: '>=6.0.0'} 63 | dependencies: 64 | '@jridgewell/gen-mapping': 0.3.3 65 | '@jridgewell/trace-mapping': 0.3.18 66 | dev: true 67 | 68 | /@esbuild/android-arm64@0.17.19: 69 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 70 | engines: {node: '>=12'} 71 | cpu: [arm64] 72 | os: [android] 73 | requiresBuild: true 74 | dev: true 75 | optional: true 76 | 77 | /@esbuild/android-arm64@0.18.6: 78 | resolution: {integrity: sha512-pL0Ci8P9q1sWbtPx8CXbc8JvPvvYdJJQ+LO09PLFsbz3aYNdFBGWJjiHU+CaObO4Ames+GOFpXRAJZS2L3ZK/A==} 79 | engines: {node: '>=12'} 80 | cpu: [arm64] 81 | os: [android] 82 | requiresBuild: true 83 | dev: true 84 | optional: true 85 | 86 | /@esbuild/android-arm@0.17.19: 87 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 88 | engines: {node: '>=12'} 89 | cpu: [arm] 90 | os: [android] 91 | requiresBuild: true 92 | dev: true 93 | optional: true 94 | 95 | /@esbuild/android-arm@0.18.6: 96 | resolution: {integrity: sha512-J3lwhDSXBBppSzm/LC1uZ8yKSIpExc+5T8MxrYD9KNVZG81FOAu2VF2gXi/6A/LwDDQQ+b6DpQbYlo3VwxFepQ==} 97 | engines: {node: '>=12'} 98 | cpu: [arm] 99 | os: [android] 100 | requiresBuild: true 101 | dev: true 102 | optional: true 103 | 104 | /@esbuild/android-x64@0.17.19: 105 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 106 | engines: {node: '>=12'} 107 | cpu: [x64] 108 | os: [android] 109 | requiresBuild: true 110 | dev: true 111 | optional: true 112 | 113 | /@esbuild/android-x64@0.18.6: 114 | resolution: {integrity: sha512-hE2vZxOlJ05aY28lUpB0y0RokngtZtcUB+TVl9vnLEnY0z/8BicSvrkThg5/iI1rbf8TwXrbr2heEjl9fLf+EA==} 115 | engines: {node: '>=12'} 116 | cpu: [x64] 117 | os: [android] 118 | requiresBuild: true 119 | dev: true 120 | optional: true 121 | 122 | /@esbuild/darwin-arm64@0.17.19: 123 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 124 | engines: {node: '>=12'} 125 | cpu: [arm64] 126 | os: [darwin] 127 | requiresBuild: true 128 | dev: true 129 | optional: true 130 | 131 | /@esbuild/darwin-arm64@0.18.6: 132 | resolution: {integrity: sha512-/tuyl4R+QhhoROQtuQj9E/yfJtZNdv2HKaHwYhhHGQDN1Teziem2Kh7BWQMumfiY7Lu9g5rO7scWdGE4OsQ6MQ==} 133 | engines: {node: '>=12'} 134 | cpu: [arm64] 135 | os: [darwin] 136 | requiresBuild: true 137 | dev: true 138 | optional: true 139 | 140 | /@esbuild/darwin-x64@0.17.19: 141 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 142 | engines: {node: '>=12'} 143 | cpu: [x64] 144 | os: [darwin] 145 | requiresBuild: true 146 | dev: true 147 | optional: true 148 | 149 | /@esbuild/darwin-x64@0.18.6: 150 | resolution: {integrity: sha512-L7IQga2pDT+14Ti8HZwsVfbCjuKP4U213T3tuPggOzyK/p4KaUJxQFXJgfUFHKzU0zOXx8QcYRYZf0hSQtppkw==} 151 | engines: {node: '>=12'} 152 | cpu: [x64] 153 | os: [darwin] 154 | requiresBuild: true 155 | dev: true 156 | optional: true 157 | 158 | /@esbuild/freebsd-arm64@0.17.19: 159 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 160 | engines: {node: '>=12'} 161 | cpu: [arm64] 162 | os: [freebsd] 163 | requiresBuild: true 164 | dev: true 165 | optional: true 166 | 167 | /@esbuild/freebsd-arm64@0.18.6: 168 | resolution: {integrity: sha512-bq10jFv42V20Kk77NvmO+WEZaLHBKuXcvEowixnBOMkaBgS7kQaqTc77ZJDbsUpXU3KKNLQFZctfaeINmeTsZA==} 169 | engines: {node: '>=12'} 170 | cpu: [arm64] 171 | os: [freebsd] 172 | requiresBuild: true 173 | dev: true 174 | optional: true 175 | 176 | /@esbuild/freebsd-x64@0.17.19: 177 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 178 | engines: {node: '>=12'} 179 | cpu: [x64] 180 | os: [freebsd] 181 | requiresBuild: true 182 | dev: true 183 | optional: true 184 | 185 | /@esbuild/freebsd-x64@0.18.6: 186 | resolution: {integrity: sha512-HbDLlkDZqUMBQaiday0pJzB6/8Xx/10dI3xRebJBReOEeDSeS+7GzTtW9h8ZnfB7/wBCqvtAjGtWQLTNPbR2+g==} 187 | engines: {node: '>=12'} 188 | cpu: [x64] 189 | os: [freebsd] 190 | requiresBuild: true 191 | dev: true 192 | optional: true 193 | 194 | /@esbuild/linux-arm64@0.17.19: 195 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 196 | engines: {node: '>=12'} 197 | cpu: [arm64] 198 | os: [linux] 199 | requiresBuild: true 200 | dev: true 201 | optional: true 202 | 203 | /@esbuild/linux-arm64@0.18.6: 204 | resolution: {integrity: sha512-NMY9yg/88MskEZH2s4i6biz/3av+M8xY5ua4HE7CCz5DBz542cr7REe317+v7oKjnYBCijHpkzo5vU85bkXQmQ==} 205 | engines: {node: '>=12'} 206 | cpu: [arm64] 207 | os: [linux] 208 | requiresBuild: true 209 | dev: true 210 | optional: true 211 | 212 | /@esbuild/linux-arm@0.17.19: 213 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 214 | engines: {node: '>=12'} 215 | cpu: [arm] 216 | os: [linux] 217 | requiresBuild: true 218 | dev: true 219 | optional: true 220 | 221 | /@esbuild/linux-arm@0.18.6: 222 | resolution: {integrity: sha512-C+5kb6rgsGMmvIdUI7v1PPgC98A6BMv233e97aXZ5AE03iMdlILFD/20HlHrOi0x2CzbspXn9HOnlE4/Ijn5Kw==} 223 | engines: {node: '>=12'} 224 | cpu: [arm] 225 | os: [linux] 226 | requiresBuild: true 227 | dev: true 228 | optional: true 229 | 230 | /@esbuild/linux-ia32@0.17.19: 231 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 232 | engines: {node: '>=12'} 233 | cpu: [ia32] 234 | os: [linux] 235 | requiresBuild: true 236 | dev: true 237 | optional: true 238 | 239 | /@esbuild/linux-ia32@0.18.6: 240 | resolution: {integrity: sha512-AXazA0ljvQEp7cA9jscABNXsjodKbEcqPcAE3rDzKN82Vb3lYOq6INd+HOCA7hk8IegEyHW4T72Z7QGIhyCQEA==} 241 | engines: {node: '>=12'} 242 | cpu: [ia32] 243 | os: [linux] 244 | requiresBuild: true 245 | dev: true 246 | optional: true 247 | 248 | /@esbuild/linux-loong64@0.17.19: 249 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 250 | engines: {node: '>=12'} 251 | cpu: [loong64] 252 | os: [linux] 253 | requiresBuild: true 254 | dev: true 255 | optional: true 256 | 257 | /@esbuild/linux-loong64@0.18.6: 258 | resolution: {integrity: sha512-JjBf7TwY7ldcPgHYt9UcrjZB03+WZqg/jSwMAfzOzM5ZG+tu5umUqzy5ugH/crGI4eoDIhSOTDp1NL3Uo/05Fw==} 259 | engines: {node: '>=12'} 260 | cpu: [loong64] 261 | os: [linux] 262 | requiresBuild: true 263 | dev: true 264 | optional: true 265 | 266 | /@esbuild/linux-mips64el@0.17.19: 267 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 268 | engines: {node: '>=12'} 269 | cpu: [mips64el] 270 | os: [linux] 271 | requiresBuild: true 272 | dev: true 273 | optional: true 274 | 275 | /@esbuild/linux-mips64el@0.18.6: 276 | resolution: {integrity: sha512-kATNsslryVxcH1sO3KP2nnyUWtZZVkgyhAUnyTVVa0OQQ9pmDRjTpHaE+2EQHoCM5wt/uav2edrAUqbwn3tkKQ==} 277 | engines: {node: '>=12'} 278 | cpu: [mips64el] 279 | os: [linux] 280 | requiresBuild: true 281 | dev: true 282 | optional: true 283 | 284 | /@esbuild/linux-ppc64@0.17.19: 285 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 286 | engines: {node: '>=12'} 287 | cpu: [ppc64] 288 | os: [linux] 289 | requiresBuild: true 290 | dev: true 291 | optional: true 292 | 293 | /@esbuild/linux-ppc64@0.18.6: 294 | resolution: {integrity: sha512-B+wTKz+8pi7mcWXFQV0LA79dJ+qhiut5uK9q0omoKnq8yRIwQJwfg3/vclXoqqcX89Ri5Y5538V0Se2v5qlcLA==} 295 | engines: {node: '>=12'} 296 | cpu: [ppc64] 297 | os: [linux] 298 | requiresBuild: true 299 | dev: true 300 | optional: true 301 | 302 | /@esbuild/linux-riscv64@0.17.19: 303 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 304 | engines: {node: '>=12'} 305 | cpu: [riscv64] 306 | os: [linux] 307 | requiresBuild: true 308 | dev: true 309 | optional: true 310 | 311 | /@esbuild/linux-riscv64@0.18.6: 312 | resolution: {integrity: sha512-h44RBLVXFUSjvhOfseE+5UxQ/r9LVeqK2S8JziJKOm9W7SePYRPDyn7MhzhNCCFPkcjIy+soCxfhlJXHXXCR0A==} 313 | engines: {node: '>=12'} 314 | cpu: [riscv64] 315 | os: [linux] 316 | requiresBuild: true 317 | dev: true 318 | optional: true 319 | 320 | /@esbuild/linux-s390x@0.17.19: 321 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 322 | engines: {node: '>=12'} 323 | cpu: [s390x] 324 | os: [linux] 325 | requiresBuild: true 326 | dev: true 327 | optional: true 328 | 329 | /@esbuild/linux-s390x@0.18.6: 330 | resolution: {integrity: sha512-FlYpyr2Xc2AUePoAbc84NRV+mj7xpsISeQ36HGf9etrY5rTBEA+IU9HzWVmw5mDFtC62EQxzkLRj8h5Hq85yOQ==} 331 | engines: {node: '>=12'} 332 | cpu: [s390x] 333 | os: [linux] 334 | requiresBuild: true 335 | dev: true 336 | optional: true 337 | 338 | /@esbuild/linux-x64@0.17.19: 339 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 340 | engines: {node: '>=12'} 341 | cpu: [x64] 342 | os: [linux] 343 | requiresBuild: true 344 | dev: true 345 | optional: true 346 | 347 | /@esbuild/linux-x64@0.18.6: 348 | resolution: {integrity: sha512-Mc4EUSYwzLci77u0Kao6ajB2WbTe5fNc7+lHwS3a+vJISC/oprwURezUYu1SdWAYoczbsyOvKAJwuNftoAdjjg==} 349 | engines: {node: '>=12'} 350 | cpu: [x64] 351 | os: [linux] 352 | requiresBuild: true 353 | dev: true 354 | optional: true 355 | 356 | /@esbuild/netbsd-x64@0.17.19: 357 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 358 | engines: {node: '>=12'} 359 | cpu: [x64] 360 | os: [netbsd] 361 | requiresBuild: true 362 | dev: true 363 | optional: true 364 | 365 | /@esbuild/netbsd-x64@0.18.6: 366 | resolution: {integrity: sha512-3hgZlp7NqIM5lNG3fpdhBI5rUnPmdahraSmwAi+YX/bp7iZ7mpTv2NkypGs/XngdMtpzljICxnUG3uPfqLFd3w==} 367 | engines: {node: '>=12'} 368 | cpu: [x64] 369 | os: [netbsd] 370 | requiresBuild: true 371 | dev: true 372 | optional: true 373 | 374 | /@esbuild/openbsd-x64@0.17.19: 375 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 376 | engines: {node: '>=12'} 377 | cpu: [x64] 378 | os: [openbsd] 379 | requiresBuild: true 380 | dev: true 381 | optional: true 382 | 383 | /@esbuild/openbsd-x64@0.18.6: 384 | resolution: {integrity: sha512-aEWTdZQHtSRROlDYn7ygB8yAqtnall/UnmoVIJVqccKitkAWVVSYocQUWrBOxLEFk8XdlRouVrLZe6WXszyviA==} 385 | engines: {node: '>=12'} 386 | cpu: [x64] 387 | os: [openbsd] 388 | requiresBuild: true 389 | dev: true 390 | optional: true 391 | 392 | /@esbuild/sunos-x64@0.17.19: 393 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 394 | engines: {node: '>=12'} 395 | cpu: [x64] 396 | os: [sunos] 397 | requiresBuild: true 398 | dev: true 399 | optional: true 400 | 401 | /@esbuild/sunos-x64@0.18.6: 402 | resolution: {integrity: sha512-uxk/5yAGpjKZUHOECtI9W+9IcLjKj+2m0qf+RG7f7eRBHr8wP6wsr3XbNbgtOD1qSpPapd6R2ZfSeXTkCcAo5g==} 403 | engines: {node: '>=12'} 404 | cpu: [x64] 405 | os: [sunos] 406 | requiresBuild: true 407 | dev: true 408 | optional: true 409 | 410 | /@esbuild/win32-arm64@0.17.19: 411 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 412 | engines: {node: '>=12'} 413 | cpu: [arm64] 414 | os: [win32] 415 | requiresBuild: true 416 | dev: true 417 | optional: true 418 | 419 | /@esbuild/win32-arm64@0.18.6: 420 | resolution: {integrity: sha512-oXlXGS9zvNCGoAT/tLHAsFKrIKye1JaIIP0anCdpaI+Dc10ftaNZcqfLzEwyhdzFAYInXYH4V7kEdH4hPyo9GA==} 421 | engines: {node: '>=12'} 422 | cpu: [arm64] 423 | os: [win32] 424 | requiresBuild: true 425 | dev: true 426 | optional: true 427 | 428 | /@esbuild/win32-ia32@0.17.19: 429 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 430 | engines: {node: '>=12'} 431 | cpu: [ia32] 432 | os: [win32] 433 | requiresBuild: true 434 | dev: true 435 | optional: true 436 | 437 | /@esbuild/win32-ia32@0.18.6: 438 | resolution: {integrity: sha512-qh7IcAHUvvmMBmoIG+V+BbE9ZWSR0ohF51e5g8JZvU08kZF58uDFL5tHs0eoYz31H6Finv17te3W3QB042GqVA==} 439 | engines: {node: '>=12'} 440 | cpu: [ia32] 441 | os: [win32] 442 | requiresBuild: true 443 | dev: true 444 | optional: true 445 | 446 | /@esbuild/win32-x64@0.17.19: 447 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 448 | engines: {node: '>=12'} 449 | cpu: [x64] 450 | os: [win32] 451 | requiresBuild: true 452 | dev: true 453 | optional: true 454 | 455 | /@esbuild/win32-x64@0.18.6: 456 | resolution: {integrity: sha512-9UDwkz7Wlm4N9jnv+4NL7F8vxLhSZfEkRArz2gD33HesAFfMLGIGNVXRoIHtWNw8feKsnGly9Hq1EUuRkWl0zA==} 457 | engines: {node: '>=12'} 458 | cpu: [x64] 459 | os: [win32] 460 | requiresBuild: true 461 | dev: true 462 | optional: true 463 | 464 | /@jridgewell/gen-mapping@0.3.3: 465 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 466 | engines: {node: '>=6.0.0'} 467 | dependencies: 468 | '@jridgewell/set-array': 1.1.2 469 | '@jridgewell/sourcemap-codec': 1.4.15 470 | '@jridgewell/trace-mapping': 0.3.18 471 | dev: true 472 | 473 | /@jridgewell/resolve-uri@3.1.0: 474 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 475 | engines: {node: '>=6.0.0'} 476 | dev: true 477 | 478 | /@jridgewell/set-array@1.1.2: 479 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 480 | engines: {node: '>=6.0.0'} 481 | dev: true 482 | 483 | /@jridgewell/sourcemap-codec@1.4.14: 484 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 485 | dev: true 486 | 487 | /@jridgewell/sourcemap-codec@1.4.15: 488 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 489 | dev: true 490 | 491 | /@jridgewell/trace-mapping@0.3.18: 492 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 493 | dependencies: 494 | '@jridgewell/resolve-uri': 3.1.0 495 | '@jridgewell/sourcemap-codec': 1.4.14 496 | dev: true 497 | 498 | /@nodelib/fs.scandir@2.1.5: 499 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 500 | engines: {node: '>= 8'} 501 | dependencies: 502 | '@nodelib/fs.stat': 2.0.5 503 | run-parallel: 1.2.0 504 | dev: true 505 | 506 | /@nodelib/fs.stat@2.0.5: 507 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 508 | engines: {node: '>= 8'} 509 | dev: true 510 | 511 | /@nodelib/fs.walk@1.2.8: 512 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 513 | engines: {node: '>= 8'} 514 | dependencies: 515 | '@nodelib/fs.scandir': 2.1.5 516 | fastq: 1.15.0 517 | dev: true 518 | 519 | /@polka/url@1.0.0-next.21: 520 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 521 | dev: true 522 | 523 | /@sveltejs/adapter-static@2.0.2(@sveltejs/kit@1.20.4): 524 | resolution: {integrity: sha512-9wYtf6s6ew7DHUHMrt55YpD1FgV7oWql2IGsW5BXquLxqcY9vjrqCFo0TzzDpo+ZPZkW/v77k0eOP6tsAb8HmQ==} 525 | peerDependencies: 526 | '@sveltejs/kit': ^1.5.0 527 | dependencies: 528 | '@sveltejs/kit': 1.20.4(svelte@4.0.0)(vite@4.3.9) 529 | dev: true 530 | 531 | /@sveltejs/kit@1.20.4(svelte@4.0.0)(vite@4.3.9): 532 | resolution: {integrity: sha512-MmAzIuMrP7A+8fqDVbxm6ekGHRHL/+Fk8sQPAzPG4G2TxUDtHdn/WcIxeEqHzARMf0OtGSC+VPyOSFuw2Cy2Mg==} 533 | engines: {node: ^16.14 || >=18} 534 | hasBin: true 535 | requiresBuild: true 536 | peerDependencies: 537 | svelte: ^3.54.0 || ^4.0.0-next.0 538 | vite: ^4.0.0 539 | dependencies: 540 | '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.0.0)(vite@4.3.9) 541 | '@types/cookie': 0.5.1 542 | cookie: 0.5.0 543 | devalue: 4.3.2 544 | esm-env: 1.0.0 545 | kleur: 4.1.5 546 | magic-string: 0.30.0 547 | mime: 3.0.0 548 | sade: 1.8.1 549 | set-cookie-parser: 2.6.0 550 | sirv: 2.0.3 551 | svelte: 4.0.0 552 | undici: 5.22.1 553 | vite: 4.3.9 554 | transitivePeerDependencies: 555 | - supports-color 556 | dev: true 557 | 558 | /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.0.0)(vite@4.3.9): 559 | resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} 560 | engines: {node: ^14.18.0 || >= 16} 561 | peerDependencies: 562 | '@sveltejs/vite-plugin-svelte': ^2.2.0 563 | svelte: ^3.54.0 || ^4.0.0-next.0 564 | vite: ^4.0.0 565 | dependencies: 566 | '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.0.0)(vite@4.3.9) 567 | debug: 4.3.4 568 | svelte: 4.0.0 569 | vite: 4.3.9 570 | transitivePeerDependencies: 571 | - supports-color 572 | dev: true 573 | 574 | /@sveltejs/vite-plugin-svelte@2.4.1(svelte@4.0.0)(vite@4.3.9): 575 | resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} 576 | engines: {node: ^14.18.0 || >= 16} 577 | peerDependencies: 578 | svelte: ^3.54.0 || ^4.0.0-next.0 579 | vite: ^4.0.0 580 | dependencies: 581 | '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.0.0)(vite@4.3.9) 582 | debug: 4.3.4 583 | deepmerge: 4.3.1 584 | kleur: 4.1.5 585 | magic-string: 0.30.0 586 | svelte: 4.0.0 587 | svelte-hmr: 0.15.2(svelte@4.0.0) 588 | vite: 4.3.9 589 | vitefu: 0.2.4(vite@4.3.9) 590 | transitivePeerDependencies: 591 | - supports-color 592 | dev: true 593 | 594 | /@types/cookie@0.5.1: 595 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 596 | dev: true 597 | 598 | /@types/estree@1.0.1: 599 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 600 | dev: true 601 | 602 | /@types/pug@2.0.6: 603 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 604 | dev: true 605 | 606 | /acorn@8.9.0: 607 | resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==} 608 | engines: {node: '>=0.4.0'} 609 | hasBin: true 610 | dev: true 611 | 612 | /any-promise@1.3.0: 613 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 614 | dev: true 615 | 616 | /anymatch@3.1.3: 617 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 618 | engines: {node: '>= 8'} 619 | dependencies: 620 | normalize-path: 3.0.0 621 | picomatch: 2.3.1 622 | dev: true 623 | 624 | /arg@5.0.2: 625 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 626 | dev: true 627 | 628 | /aria-query@5.2.1: 629 | resolution: {integrity: sha512-7uFg4b+lETFgdaJyETnILsXgnnzVnkHcgRbwbPwevm5x/LmUlt3MjczMRe1zg824iBgXZNRPTBftNYyRSKLp2g==} 630 | dependencies: 631 | dequal: 2.0.3 632 | dev: true 633 | 634 | /array-union@2.1.0: 635 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 636 | engines: {node: '>=8'} 637 | dev: true 638 | 639 | /autoprefixer@10.4.14(postcss@8.4.24): 640 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} 641 | engines: {node: ^10 || ^12 || >=14} 642 | hasBin: true 643 | peerDependencies: 644 | postcss: ^8.1.0 645 | dependencies: 646 | browserslist: 4.21.9 647 | caniuse-lite: 1.0.30001506 648 | fraction.js: 4.2.0 649 | normalize-range: 0.1.2 650 | picocolors: 1.0.0 651 | postcss: 8.4.24 652 | postcss-value-parser: 4.2.0 653 | dev: true 654 | 655 | /axobject-query@3.2.1: 656 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 657 | dependencies: 658 | dequal: 2.0.3 659 | dev: true 660 | 661 | /balanced-match@1.0.2: 662 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 663 | dev: true 664 | 665 | /binary-extensions@2.2.0: 666 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 667 | engines: {node: '>=8'} 668 | dev: true 669 | 670 | /brace-expansion@1.1.11: 671 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 672 | dependencies: 673 | balanced-match: 1.0.2 674 | concat-map: 0.0.1 675 | dev: true 676 | 677 | /brace-expansion@2.0.1: 678 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 679 | dependencies: 680 | balanced-match: 1.0.2 681 | dev: true 682 | 683 | /braces@3.0.2: 684 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 685 | engines: {node: '>=8'} 686 | dependencies: 687 | fill-range: 7.0.1 688 | dev: true 689 | 690 | /browserslist@4.21.9: 691 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 692 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 693 | hasBin: true 694 | dependencies: 695 | caniuse-lite: 1.0.30001506 696 | electron-to-chromium: 1.4.437 697 | node-releases: 2.0.12 698 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 699 | dev: true 700 | 701 | /buffer-crc32@0.2.13: 702 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 703 | dev: true 704 | 705 | /bundle-require@4.0.1(esbuild@0.18.6): 706 | resolution: {integrity: sha512-9NQkRHlNdNpDBGmLpngF3EFDcwodhMUuLz9PaWYciVcQF9SE4LFjM2DB/xV1Li5JiuDMv7ZUWuC3rGbqR0MAXQ==} 707 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 708 | peerDependencies: 709 | esbuild: '>=0.17' 710 | dependencies: 711 | esbuild: 0.18.6 712 | load-tsconfig: 0.2.5 713 | dev: true 714 | 715 | /busboy@1.6.0: 716 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 717 | engines: {node: '>=10.16.0'} 718 | dependencies: 719 | streamsearch: 1.1.0 720 | dev: true 721 | 722 | /cac@6.7.14: 723 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 724 | engines: {node: '>=8'} 725 | dev: true 726 | 727 | /callsites@3.1.0: 728 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 729 | engines: {node: '>=6'} 730 | dev: true 731 | 732 | /camelcase-css@2.0.1: 733 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 734 | engines: {node: '>= 6'} 735 | dev: true 736 | 737 | /caniuse-lite@1.0.30001506: 738 | resolution: {integrity: sha512-6XNEcpygZMCKaufIcgpQNZNf00GEqc7VQON+9Rd0K1bMYo8xhMZRAo5zpbnbMNizi4YNgIDAFrdykWsvY3H4Hw==} 739 | dev: true 740 | 741 | /chokidar@3.5.3: 742 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 743 | engines: {node: '>= 8.10.0'} 744 | dependencies: 745 | anymatch: 3.1.3 746 | braces: 3.0.2 747 | glob-parent: 5.1.2 748 | is-binary-path: 2.1.0 749 | is-glob: 4.0.3 750 | normalize-path: 3.0.0 751 | readdirp: 3.6.0 752 | optionalDependencies: 753 | fsevents: 2.3.2 754 | dev: true 755 | 756 | /code-red@1.0.3: 757 | resolution: {integrity: sha512-kVwJELqiILQyG5aeuyKFbdsI1fmQy1Cmf7dQ8eGmVuJoaRVdwey7WaMknr2ZFeVSYSKT0rExsa8EGw0aoI/1QQ==} 758 | dependencies: 759 | '@jridgewell/sourcemap-codec': 1.4.15 760 | '@types/estree': 1.0.1 761 | acorn: 8.9.0 762 | estree-walker: 3.0.3 763 | periscopic: 3.1.0 764 | dev: true 765 | 766 | /commander@4.1.1: 767 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 768 | engines: {node: '>= 6'} 769 | dev: true 770 | 771 | /concat-map@0.0.1: 772 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 773 | dev: true 774 | 775 | /cookie@0.5.0: 776 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 777 | engines: {node: '>= 0.6'} 778 | dev: true 779 | 780 | /cross-spawn@7.0.3: 781 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 782 | engines: {node: '>= 8'} 783 | dependencies: 784 | path-key: 3.1.1 785 | shebang-command: 2.0.0 786 | which: 2.0.2 787 | dev: true 788 | 789 | /css-tree@2.3.1: 790 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 791 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 792 | dependencies: 793 | mdn-data: 2.0.30 794 | source-map-js: 1.0.2 795 | dev: true 796 | 797 | /cssesc@3.0.0: 798 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 799 | engines: {node: '>=4'} 800 | hasBin: true 801 | dev: true 802 | 803 | /debug@4.3.4: 804 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 805 | engines: {node: '>=6.0'} 806 | peerDependencies: 807 | supports-color: '*' 808 | peerDependenciesMeta: 809 | supports-color: 810 | optional: true 811 | dependencies: 812 | ms: 2.1.2 813 | dev: true 814 | 815 | /deepmerge@4.3.1: 816 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 817 | engines: {node: '>=0.10.0'} 818 | dev: true 819 | 820 | /dequal@2.0.3: 821 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 822 | engines: {node: '>=6'} 823 | dev: true 824 | 825 | /detect-indent@6.1.0: 826 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 827 | engines: {node: '>=8'} 828 | dev: true 829 | 830 | /devalue@4.3.2: 831 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 832 | dev: true 833 | 834 | /didyoumean@1.2.2: 835 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 836 | dev: true 837 | 838 | /dir-glob@3.0.1: 839 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 840 | engines: {node: '>=8'} 841 | dependencies: 842 | path-type: 4.0.0 843 | dev: true 844 | 845 | /dlv@1.1.3: 846 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 847 | dev: true 848 | 849 | /electron-to-chromium@1.4.437: 850 | resolution: {integrity: sha512-ZFekRuBOHUXp21wrR5lshT6pZa/KmjkhKBAtmZz4NN5sCWlHOk3kdhiwFINrDBsRLX6FjyBAb1TRN+KBeNlyzQ==} 851 | dev: true 852 | 853 | /es6-promise@3.3.1: 854 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 855 | dev: true 856 | 857 | /esbuild@0.17.19: 858 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 859 | engines: {node: '>=12'} 860 | hasBin: true 861 | requiresBuild: true 862 | optionalDependencies: 863 | '@esbuild/android-arm': 0.17.19 864 | '@esbuild/android-arm64': 0.17.19 865 | '@esbuild/android-x64': 0.17.19 866 | '@esbuild/darwin-arm64': 0.17.19 867 | '@esbuild/darwin-x64': 0.17.19 868 | '@esbuild/freebsd-arm64': 0.17.19 869 | '@esbuild/freebsd-x64': 0.17.19 870 | '@esbuild/linux-arm': 0.17.19 871 | '@esbuild/linux-arm64': 0.17.19 872 | '@esbuild/linux-ia32': 0.17.19 873 | '@esbuild/linux-loong64': 0.17.19 874 | '@esbuild/linux-mips64el': 0.17.19 875 | '@esbuild/linux-ppc64': 0.17.19 876 | '@esbuild/linux-riscv64': 0.17.19 877 | '@esbuild/linux-s390x': 0.17.19 878 | '@esbuild/linux-x64': 0.17.19 879 | '@esbuild/netbsd-x64': 0.17.19 880 | '@esbuild/openbsd-x64': 0.17.19 881 | '@esbuild/sunos-x64': 0.17.19 882 | '@esbuild/win32-arm64': 0.17.19 883 | '@esbuild/win32-ia32': 0.17.19 884 | '@esbuild/win32-x64': 0.17.19 885 | dev: true 886 | 887 | /esbuild@0.18.6: 888 | resolution: {integrity: sha512-5QgxWaAhU/tPBpvkxUmnFv2YINHuZzjbk0LeUUnC2i3aJHjfi5yR49lgKgF7cb98bclOp/kans8M5TGbGFfJlQ==} 889 | engines: {node: '>=12'} 890 | hasBin: true 891 | requiresBuild: true 892 | optionalDependencies: 893 | '@esbuild/android-arm': 0.18.6 894 | '@esbuild/android-arm64': 0.18.6 895 | '@esbuild/android-x64': 0.18.6 896 | '@esbuild/darwin-arm64': 0.18.6 897 | '@esbuild/darwin-x64': 0.18.6 898 | '@esbuild/freebsd-arm64': 0.18.6 899 | '@esbuild/freebsd-x64': 0.18.6 900 | '@esbuild/linux-arm': 0.18.6 901 | '@esbuild/linux-arm64': 0.18.6 902 | '@esbuild/linux-ia32': 0.18.6 903 | '@esbuild/linux-loong64': 0.18.6 904 | '@esbuild/linux-mips64el': 0.18.6 905 | '@esbuild/linux-ppc64': 0.18.6 906 | '@esbuild/linux-riscv64': 0.18.6 907 | '@esbuild/linux-s390x': 0.18.6 908 | '@esbuild/linux-x64': 0.18.6 909 | '@esbuild/netbsd-x64': 0.18.6 910 | '@esbuild/openbsd-x64': 0.18.6 911 | '@esbuild/sunos-x64': 0.18.6 912 | '@esbuild/win32-arm64': 0.18.6 913 | '@esbuild/win32-ia32': 0.18.6 914 | '@esbuild/win32-x64': 0.18.6 915 | dev: true 916 | 917 | /escalade@3.1.1: 918 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 919 | engines: {node: '>=6'} 920 | dev: true 921 | 922 | /esm-env@1.0.0: 923 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 924 | dev: true 925 | 926 | /estree-walker@3.0.3: 927 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 928 | dependencies: 929 | '@types/estree': 1.0.1 930 | dev: true 931 | 932 | /execa@5.1.1: 933 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 934 | engines: {node: '>=10'} 935 | dependencies: 936 | cross-spawn: 7.0.3 937 | get-stream: 6.0.1 938 | human-signals: 2.1.0 939 | is-stream: 2.0.1 940 | merge-stream: 2.0.0 941 | npm-run-path: 4.0.1 942 | onetime: 5.1.2 943 | signal-exit: 3.0.7 944 | strip-final-newline: 2.0.0 945 | dev: true 946 | 947 | /fast-glob@3.2.12: 948 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 949 | engines: {node: '>=8.6.0'} 950 | dependencies: 951 | '@nodelib/fs.stat': 2.0.5 952 | '@nodelib/fs.walk': 1.2.8 953 | glob-parent: 5.1.2 954 | merge2: 1.4.1 955 | micromatch: 4.0.5 956 | dev: true 957 | 958 | /fastq@1.15.0: 959 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 960 | dependencies: 961 | reusify: 1.0.4 962 | dev: true 963 | 964 | /fill-range@7.0.1: 965 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 966 | engines: {node: '>=8'} 967 | dependencies: 968 | to-regex-range: 5.0.1 969 | dev: true 970 | 971 | /fraction.js@4.2.0: 972 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==} 973 | dev: true 974 | 975 | /fs.realpath@1.0.0: 976 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 977 | dev: true 978 | 979 | /fsevents@2.3.2: 980 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 981 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 982 | os: [darwin] 983 | requiresBuild: true 984 | dev: true 985 | optional: true 986 | 987 | /function-bind@1.1.1: 988 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 989 | dev: true 990 | 991 | /get-stream@6.0.1: 992 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 993 | engines: {node: '>=10'} 994 | dev: true 995 | 996 | /glob-parent@5.1.2: 997 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 998 | engines: {node: '>= 6'} 999 | dependencies: 1000 | is-glob: 4.0.3 1001 | dev: true 1002 | 1003 | /glob-parent@6.0.2: 1004 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1005 | engines: {node: '>=10.13.0'} 1006 | dependencies: 1007 | is-glob: 4.0.3 1008 | dev: true 1009 | 1010 | /glob@7.1.6: 1011 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1012 | dependencies: 1013 | fs.realpath: 1.0.0 1014 | inflight: 1.0.6 1015 | inherits: 2.0.4 1016 | minimatch: 3.1.2 1017 | once: 1.4.0 1018 | path-is-absolute: 1.0.1 1019 | dev: true 1020 | 1021 | /glob@7.2.3: 1022 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1023 | dependencies: 1024 | fs.realpath: 1.0.0 1025 | inflight: 1.0.6 1026 | inherits: 2.0.4 1027 | minimatch: 3.1.2 1028 | once: 1.4.0 1029 | path-is-absolute: 1.0.1 1030 | dev: true 1031 | 1032 | /glob@8.1.0: 1033 | resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} 1034 | engines: {node: '>=12'} 1035 | dependencies: 1036 | fs.realpath: 1.0.0 1037 | inflight: 1.0.6 1038 | inherits: 2.0.4 1039 | minimatch: 5.1.6 1040 | once: 1.4.0 1041 | dev: true 1042 | 1043 | /globby@11.1.0: 1044 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1045 | engines: {node: '>=10'} 1046 | dependencies: 1047 | array-union: 2.1.0 1048 | dir-glob: 3.0.1 1049 | fast-glob: 3.2.12 1050 | ignore: 5.2.4 1051 | merge2: 1.4.1 1052 | slash: 3.0.0 1053 | dev: true 1054 | 1055 | /graceful-fs@4.2.11: 1056 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1057 | dev: true 1058 | 1059 | /has@1.0.3: 1060 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1061 | engines: {node: '>= 0.4.0'} 1062 | dependencies: 1063 | function-bind: 1.1.1 1064 | dev: true 1065 | 1066 | /human-signals@2.1.0: 1067 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1068 | engines: {node: '>=10.17.0'} 1069 | dev: true 1070 | 1071 | /ignore-walk@5.0.1: 1072 | resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} 1073 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1074 | dependencies: 1075 | minimatch: 5.1.6 1076 | dev: true 1077 | 1078 | /ignore@5.2.4: 1079 | resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} 1080 | engines: {node: '>= 4'} 1081 | dev: true 1082 | 1083 | /import-fresh@3.3.0: 1084 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1085 | engines: {node: '>=6'} 1086 | dependencies: 1087 | parent-module: 1.0.1 1088 | resolve-from: 4.0.0 1089 | dev: true 1090 | 1091 | /inflight@1.0.6: 1092 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1093 | dependencies: 1094 | once: 1.4.0 1095 | wrappy: 1.0.2 1096 | dev: true 1097 | 1098 | /inherits@2.0.4: 1099 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1100 | dev: true 1101 | 1102 | /is-binary-path@2.1.0: 1103 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1104 | engines: {node: '>=8'} 1105 | dependencies: 1106 | binary-extensions: 2.2.0 1107 | dev: true 1108 | 1109 | /is-core-module@2.12.1: 1110 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1111 | dependencies: 1112 | has: 1.0.3 1113 | dev: true 1114 | 1115 | /is-extglob@2.1.1: 1116 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 1117 | engines: {node: '>=0.10.0'} 1118 | dev: true 1119 | 1120 | /is-glob@4.0.3: 1121 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 1122 | engines: {node: '>=0.10.0'} 1123 | dependencies: 1124 | is-extglob: 2.1.1 1125 | dev: true 1126 | 1127 | /is-number@7.0.0: 1128 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1129 | engines: {node: '>=0.12.0'} 1130 | dev: true 1131 | 1132 | /is-reference@3.0.1: 1133 | resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} 1134 | dependencies: 1135 | '@types/estree': 1.0.1 1136 | dev: true 1137 | 1138 | /is-stream@2.0.1: 1139 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1140 | engines: {node: '>=8'} 1141 | dev: true 1142 | 1143 | /isexe@2.0.0: 1144 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1145 | dev: true 1146 | 1147 | /jiti@1.18.2: 1148 | resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==} 1149 | hasBin: true 1150 | dev: true 1151 | 1152 | /joycon@3.1.1: 1153 | resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 1154 | engines: {node: '>=10'} 1155 | dev: true 1156 | 1157 | /kleur@4.1.5: 1158 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1159 | engines: {node: '>=6'} 1160 | dev: true 1161 | 1162 | /lilconfig@2.1.0: 1163 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1164 | engines: {node: '>=10'} 1165 | dev: true 1166 | 1167 | /lines-and-columns@1.2.4: 1168 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1169 | dev: true 1170 | 1171 | /load-tsconfig@0.2.5: 1172 | resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 1173 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1174 | dev: true 1175 | 1176 | /locate-character@3.0.0: 1177 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1178 | dev: true 1179 | 1180 | /lodash.sortby@4.7.0: 1181 | resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 1182 | dev: true 1183 | 1184 | /magic-string@0.27.0: 1185 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1186 | engines: {node: '>=12'} 1187 | dependencies: 1188 | '@jridgewell/sourcemap-codec': 1.4.15 1189 | dev: true 1190 | 1191 | /magic-string@0.30.0: 1192 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} 1193 | engines: {node: '>=12'} 1194 | dependencies: 1195 | '@jridgewell/sourcemap-codec': 1.4.15 1196 | dev: true 1197 | 1198 | /mdn-data@2.0.30: 1199 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 1200 | dev: true 1201 | 1202 | /merge-stream@2.0.0: 1203 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1204 | dev: true 1205 | 1206 | /merge2@1.4.1: 1207 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1208 | engines: {node: '>= 8'} 1209 | dev: true 1210 | 1211 | /micromatch@4.0.5: 1212 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1213 | engines: {node: '>=8.6'} 1214 | dependencies: 1215 | braces: 3.0.2 1216 | picomatch: 2.3.1 1217 | dev: true 1218 | 1219 | /mime@3.0.0: 1220 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1221 | engines: {node: '>=10.0.0'} 1222 | hasBin: true 1223 | dev: true 1224 | 1225 | /mimic-fn@2.1.0: 1226 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1227 | engines: {node: '>=6'} 1228 | dev: true 1229 | 1230 | /min-indent@1.0.1: 1231 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1232 | engines: {node: '>=4'} 1233 | dev: true 1234 | 1235 | /minimatch@3.1.2: 1236 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1237 | dependencies: 1238 | brace-expansion: 1.1.11 1239 | dev: true 1240 | 1241 | /minimatch@5.1.6: 1242 | resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} 1243 | engines: {node: '>=10'} 1244 | dependencies: 1245 | brace-expansion: 2.0.1 1246 | dev: true 1247 | 1248 | /minimist@1.2.8: 1249 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1250 | dev: true 1251 | 1252 | /mkdirp@0.5.6: 1253 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1254 | hasBin: true 1255 | dependencies: 1256 | minimist: 1.2.8 1257 | dev: true 1258 | 1259 | /mri@1.2.0: 1260 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1261 | engines: {node: '>=4'} 1262 | dev: true 1263 | 1264 | /mrmime@1.0.1: 1265 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 1266 | engines: {node: '>=10'} 1267 | dev: true 1268 | 1269 | /ms@2.1.2: 1270 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1271 | dev: true 1272 | 1273 | /mz@2.7.0: 1274 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1275 | dependencies: 1276 | any-promise: 1.3.0 1277 | object-assign: 4.1.1 1278 | thenify-all: 1.6.0 1279 | dev: true 1280 | 1281 | /nanoid@3.3.6: 1282 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1283 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1284 | hasBin: true 1285 | dev: true 1286 | 1287 | /node-releases@2.0.12: 1288 | resolution: {integrity: sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==} 1289 | dev: true 1290 | 1291 | /normalize-path@3.0.0: 1292 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1293 | engines: {node: '>=0.10.0'} 1294 | dev: true 1295 | 1296 | /normalize-range@0.1.2: 1297 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1298 | engines: {node: '>=0.10.0'} 1299 | dev: true 1300 | 1301 | /npm-bundled@2.0.1: 1302 | resolution: {integrity: sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==} 1303 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1304 | dependencies: 1305 | npm-normalize-package-bin: 2.0.0 1306 | dev: true 1307 | 1308 | /npm-normalize-package-bin@2.0.0: 1309 | resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} 1310 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1311 | dev: true 1312 | 1313 | /npm-packlist@5.1.3: 1314 | resolution: {integrity: sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==} 1315 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 1316 | hasBin: true 1317 | dependencies: 1318 | glob: 8.1.0 1319 | ignore-walk: 5.0.1 1320 | npm-bundled: 2.0.1 1321 | npm-normalize-package-bin: 2.0.0 1322 | dev: true 1323 | 1324 | /npm-run-path@4.0.1: 1325 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1326 | engines: {node: '>=8'} 1327 | dependencies: 1328 | path-key: 3.1.1 1329 | dev: true 1330 | 1331 | /object-assign@4.1.1: 1332 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1333 | engines: {node: '>=0.10.0'} 1334 | dev: true 1335 | 1336 | /object-hash@3.0.0: 1337 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1338 | engines: {node: '>= 6'} 1339 | dev: true 1340 | 1341 | /once@1.4.0: 1342 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1343 | dependencies: 1344 | wrappy: 1.0.2 1345 | dev: true 1346 | 1347 | /onetime@5.1.2: 1348 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1349 | engines: {node: '>=6'} 1350 | dependencies: 1351 | mimic-fn: 2.1.0 1352 | dev: true 1353 | 1354 | /parent-module@1.0.1: 1355 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1356 | engines: {node: '>=6'} 1357 | dependencies: 1358 | callsites: 3.1.0 1359 | dev: true 1360 | 1361 | /path-is-absolute@1.0.1: 1362 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1363 | engines: {node: '>=0.10.0'} 1364 | dev: true 1365 | 1366 | /path-key@3.1.1: 1367 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1368 | engines: {node: '>=8'} 1369 | dev: true 1370 | 1371 | /path-parse@1.0.7: 1372 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1373 | dev: true 1374 | 1375 | /path-type@4.0.0: 1376 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1377 | engines: {node: '>=8'} 1378 | dev: true 1379 | 1380 | /perfect-freehand@1.2.0: 1381 | resolution: {integrity: sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw==} 1382 | dev: false 1383 | 1384 | /periscopic@3.1.0: 1385 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 1386 | dependencies: 1387 | '@types/estree': 1.0.1 1388 | estree-walker: 3.0.3 1389 | is-reference: 3.0.1 1390 | dev: true 1391 | 1392 | /picocolors@1.0.0: 1393 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1394 | dev: true 1395 | 1396 | /picomatch@2.3.1: 1397 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1398 | engines: {node: '>=8.6'} 1399 | dev: true 1400 | 1401 | /pify@2.3.0: 1402 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1403 | engines: {node: '>=0.10.0'} 1404 | dev: true 1405 | 1406 | /pirates@4.0.6: 1407 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1408 | engines: {node: '>= 6'} 1409 | dev: true 1410 | 1411 | /postcss-import@15.1.0(postcss@8.4.24): 1412 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1413 | engines: {node: '>=14.0.0'} 1414 | peerDependencies: 1415 | postcss: ^8.0.0 1416 | dependencies: 1417 | postcss: 8.4.24 1418 | postcss-value-parser: 4.2.0 1419 | read-cache: 1.0.0 1420 | resolve: 1.22.2 1421 | dev: true 1422 | 1423 | /postcss-js@4.0.1(postcss@8.4.24): 1424 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1425 | engines: {node: ^12 || ^14 || >= 16} 1426 | peerDependencies: 1427 | postcss: ^8.4.21 1428 | dependencies: 1429 | camelcase-css: 2.0.1 1430 | postcss: 8.4.24 1431 | dev: true 1432 | 1433 | /postcss-load-config@4.0.1(postcss@8.4.24): 1434 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 1435 | engines: {node: '>= 14'} 1436 | peerDependencies: 1437 | postcss: '>=8.0.9' 1438 | ts-node: '>=9.0.0' 1439 | peerDependenciesMeta: 1440 | postcss: 1441 | optional: true 1442 | ts-node: 1443 | optional: true 1444 | dependencies: 1445 | lilconfig: 2.1.0 1446 | postcss: 8.4.24 1447 | yaml: 2.3.1 1448 | dev: true 1449 | 1450 | /postcss-nested@6.0.1(postcss@8.4.24): 1451 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 1452 | engines: {node: '>=12.0'} 1453 | peerDependencies: 1454 | postcss: ^8.2.14 1455 | dependencies: 1456 | postcss: 8.4.24 1457 | postcss-selector-parser: 6.0.13 1458 | dev: true 1459 | 1460 | /postcss-selector-parser@6.0.13: 1461 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 1462 | engines: {node: '>=4'} 1463 | dependencies: 1464 | cssesc: 3.0.0 1465 | util-deprecate: 1.0.2 1466 | dev: true 1467 | 1468 | /postcss-value-parser@4.2.0: 1469 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1470 | dev: true 1471 | 1472 | /postcss@8.4.24: 1473 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 1474 | engines: {node: ^10 || ^12 || >=14} 1475 | dependencies: 1476 | nanoid: 3.3.6 1477 | picocolors: 1.0.0 1478 | source-map-js: 1.0.2 1479 | dev: true 1480 | 1481 | /publint@0.1.12: 1482 | resolution: {integrity: sha512-8LxkO430t/SOhUl0qXQWdXq34m6oyLcPhE4Kc8eXhOEnB82vCHcShPQ2kH53n/ksC7jWdRWDP7MPGxKJbntQfg==} 1483 | engines: {node: '>=16'} 1484 | hasBin: true 1485 | dependencies: 1486 | npm-packlist: 5.1.3 1487 | picocolors: 1.0.0 1488 | sade: 1.8.1 1489 | dev: true 1490 | 1491 | /punycode@2.3.0: 1492 | resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} 1493 | engines: {node: '>=6'} 1494 | dev: true 1495 | 1496 | /queue-microtask@1.2.3: 1497 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1498 | dev: true 1499 | 1500 | /read-cache@1.0.0: 1501 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1502 | dependencies: 1503 | pify: 2.3.0 1504 | dev: true 1505 | 1506 | /readdirp@3.6.0: 1507 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1508 | engines: {node: '>=8.10.0'} 1509 | dependencies: 1510 | picomatch: 2.3.1 1511 | dev: true 1512 | 1513 | /resolve-from@4.0.0: 1514 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1515 | engines: {node: '>=4'} 1516 | dev: true 1517 | 1518 | /resolve-from@5.0.0: 1519 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1520 | engines: {node: '>=8'} 1521 | dev: true 1522 | 1523 | /resolve@1.22.2: 1524 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1525 | hasBin: true 1526 | dependencies: 1527 | is-core-module: 2.12.1 1528 | path-parse: 1.0.7 1529 | supports-preserve-symlinks-flag: 1.0.0 1530 | dev: true 1531 | 1532 | /reusify@1.0.4: 1533 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1534 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1535 | dev: true 1536 | 1537 | /rimraf@2.7.1: 1538 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1539 | hasBin: true 1540 | dependencies: 1541 | glob: 7.2.3 1542 | dev: true 1543 | 1544 | /rollup@3.25.1: 1545 | resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} 1546 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1547 | hasBin: true 1548 | optionalDependencies: 1549 | fsevents: 2.3.2 1550 | dev: true 1551 | 1552 | /run-parallel@1.2.0: 1553 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1554 | dependencies: 1555 | queue-microtask: 1.2.3 1556 | dev: true 1557 | 1558 | /sade@1.8.1: 1559 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1560 | engines: {node: '>=6'} 1561 | dependencies: 1562 | mri: 1.2.0 1563 | dev: true 1564 | 1565 | /sander@0.5.1: 1566 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1567 | dependencies: 1568 | es6-promise: 3.3.1 1569 | graceful-fs: 4.2.11 1570 | mkdirp: 0.5.6 1571 | rimraf: 2.7.1 1572 | dev: true 1573 | 1574 | /set-cookie-parser@2.6.0: 1575 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1576 | dev: true 1577 | 1578 | /shebang-command@2.0.0: 1579 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1580 | engines: {node: '>=8'} 1581 | dependencies: 1582 | shebang-regex: 3.0.0 1583 | dev: true 1584 | 1585 | /shebang-regex@3.0.0: 1586 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1587 | engines: {node: '>=8'} 1588 | dev: true 1589 | 1590 | /signal-exit@3.0.7: 1591 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 1592 | dev: true 1593 | 1594 | /sirv@2.0.3: 1595 | resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} 1596 | engines: {node: '>= 10'} 1597 | dependencies: 1598 | '@polka/url': 1.0.0-next.21 1599 | mrmime: 1.0.1 1600 | totalist: 3.0.1 1601 | dev: true 1602 | 1603 | /slash@3.0.0: 1604 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1605 | engines: {node: '>=8'} 1606 | dev: true 1607 | 1608 | /sorcery@0.11.0: 1609 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 1610 | hasBin: true 1611 | dependencies: 1612 | '@jridgewell/sourcemap-codec': 1.4.15 1613 | buffer-crc32: 0.2.13 1614 | minimist: 1.2.8 1615 | sander: 0.5.1 1616 | dev: true 1617 | 1618 | /source-map-js@1.0.2: 1619 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1620 | engines: {node: '>=0.10.0'} 1621 | dev: true 1622 | 1623 | /source-map@0.8.0-beta.0: 1624 | resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 1625 | engines: {node: '>= 8'} 1626 | dependencies: 1627 | whatwg-url: 7.1.0 1628 | dev: true 1629 | 1630 | /streamsearch@1.1.0: 1631 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1632 | engines: {node: '>=10.0.0'} 1633 | dev: true 1634 | 1635 | /strip-final-newline@2.0.0: 1636 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 1637 | engines: {node: '>=6'} 1638 | dev: true 1639 | 1640 | /strip-indent@3.0.0: 1641 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1642 | engines: {node: '>=8'} 1643 | dependencies: 1644 | min-indent: 1.0.1 1645 | dev: true 1646 | 1647 | /sucrase@3.32.0: 1648 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==} 1649 | engines: {node: '>=8'} 1650 | hasBin: true 1651 | dependencies: 1652 | '@jridgewell/gen-mapping': 0.3.3 1653 | commander: 4.1.1 1654 | glob: 7.1.6 1655 | lines-and-columns: 1.2.4 1656 | mz: 2.7.0 1657 | pirates: 4.0.6 1658 | ts-interface-checker: 0.1.13 1659 | dev: true 1660 | 1661 | /supports-preserve-symlinks-flag@1.0.0: 1662 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1663 | engines: {node: '>= 0.4'} 1664 | dev: true 1665 | 1666 | /svelte-check@3.4.4(postcss-load-config@4.0.1)(postcss@8.4.24)(svelte@4.0.0): 1667 | resolution: {integrity: sha512-Uys9+R65cj8TmP8f5UpS7B2xKpNLYNxEWJsA5ZoKcWq/uwvABFF7xS6iPQGLoa7hxz0DS6xU60YFpmq06E4JxA==} 1668 | hasBin: true 1669 | peerDependencies: 1670 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 1671 | dependencies: 1672 | '@jridgewell/trace-mapping': 0.3.18 1673 | chokidar: 3.5.3 1674 | fast-glob: 3.2.12 1675 | import-fresh: 3.3.0 1676 | picocolors: 1.0.0 1677 | sade: 1.8.1 1678 | svelte: 4.0.0 1679 | svelte-preprocess: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.24)(svelte@4.0.0)(typescript@5.1.3) 1680 | typescript: 5.1.3 1681 | transitivePeerDependencies: 1682 | - '@babel/core' 1683 | - coffeescript 1684 | - less 1685 | - postcss 1686 | - postcss-load-config 1687 | - pug 1688 | - sass 1689 | - stylus 1690 | - sugarss 1691 | dev: true 1692 | 1693 | /svelte-hmr@0.15.2(svelte@4.0.0): 1694 | resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} 1695 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1696 | peerDependencies: 1697 | svelte: ^3.19.0 || ^4.0.0-next.0 1698 | dependencies: 1699 | svelte: 4.0.0 1700 | dev: true 1701 | 1702 | /svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.24)(svelte@4.0.0)(typescript@5.1.3): 1703 | resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} 1704 | engines: {node: '>= 14.10.0'} 1705 | requiresBuild: true 1706 | peerDependencies: 1707 | '@babel/core': ^7.10.2 1708 | coffeescript: ^2.5.1 1709 | less: ^3.11.3 || ^4.0.0 1710 | postcss: ^7 || ^8 1711 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 1712 | pug: ^3.0.0 1713 | sass: ^1.26.8 1714 | stylus: ^0.55.0 1715 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 1716 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 1717 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 1718 | peerDependenciesMeta: 1719 | '@babel/core': 1720 | optional: true 1721 | coffeescript: 1722 | optional: true 1723 | less: 1724 | optional: true 1725 | postcss: 1726 | optional: true 1727 | postcss-load-config: 1728 | optional: true 1729 | pug: 1730 | optional: true 1731 | sass: 1732 | optional: true 1733 | stylus: 1734 | optional: true 1735 | sugarss: 1736 | optional: true 1737 | typescript: 1738 | optional: true 1739 | dependencies: 1740 | '@types/pug': 2.0.6 1741 | detect-indent: 6.1.0 1742 | magic-string: 0.27.0 1743 | postcss: 8.4.24 1744 | postcss-load-config: 4.0.1(postcss@8.4.24) 1745 | sorcery: 0.11.0 1746 | strip-indent: 3.0.0 1747 | svelte: 4.0.0 1748 | typescript: 5.1.3 1749 | dev: true 1750 | 1751 | /svelte@4.0.0: 1752 | resolution: {integrity: sha512-+yCYu3AEUu9n91dnQNGIbnVp8EmNQtuF/YImW4+FTXRHard7NMo+yTsWzggPAbj3fUEJ1FBJLkql/jkp6YB5pg==} 1753 | engines: {node: '>=16'} 1754 | dependencies: 1755 | '@ampproject/remapping': 2.2.1 1756 | '@jridgewell/sourcemap-codec': 1.4.15 1757 | '@jridgewell/trace-mapping': 0.3.18 1758 | acorn: 8.9.0 1759 | aria-query: 5.2.1 1760 | axobject-query: 3.2.1 1761 | code-red: 1.0.3 1762 | css-tree: 2.3.1 1763 | estree-walker: 3.0.3 1764 | is-reference: 3.0.1 1765 | locate-character: 3.0.0 1766 | magic-string: 0.30.0 1767 | periscopic: 3.1.0 1768 | dev: true 1769 | 1770 | /tailwindcss@3.3.2: 1771 | resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==} 1772 | engines: {node: '>=14.0.0'} 1773 | hasBin: true 1774 | dependencies: 1775 | '@alloc/quick-lru': 5.2.0 1776 | arg: 5.0.2 1777 | chokidar: 3.5.3 1778 | didyoumean: 1.2.2 1779 | dlv: 1.1.3 1780 | fast-glob: 3.2.12 1781 | glob-parent: 6.0.2 1782 | is-glob: 4.0.3 1783 | jiti: 1.18.2 1784 | lilconfig: 2.1.0 1785 | micromatch: 4.0.5 1786 | normalize-path: 3.0.0 1787 | object-hash: 3.0.0 1788 | picocolors: 1.0.0 1789 | postcss: 8.4.24 1790 | postcss-import: 15.1.0(postcss@8.4.24) 1791 | postcss-js: 4.0.1(postcss@8.4.24) 1792 | postcss-load-config: 4.0.1(postcss@8.4.24) 1793 | postcss-nested: 6.0.1(postcss@8.4.24) 1794 | postcss-selector-parser: 6.0.13 1795 | postcss-value-parser: 4.2.0 1796 | resolve: 1.22.2 1797 | sucrase: 3.32.0 1798 | transitivePeerDependencies: 1799 | - ts-node 1800 | dev: true 1801 | 1802 | /thenify-all@1.6.0: 1803 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1804 | engines: {node: '>=0.8'} 1805 | dependencies: 1806 | thenify: 3.3.1 1807 | dev: true 1808 | 1809 | /thenify@3.3.1: 1810 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1811 | dependencies: 1812 | any-promise: 1.3.0 1813 | dev: true 1814 | 1815 | /to-regex-range@5.0.1: 1816 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1817 | engines: {node: '>=8.0'} 1818 | dependencies: 1819 | is-number: 7.0.0 1820 | dev: true 1821 | 1822 | /totalist@3.0.1: 1823 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1824 | engines: {node: '>=6'} 1825 | dev: true 1826 | 1827 | /tr46@1.0.1: 1828 | resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 1829 | dependencies: 1830 | punycode: 2.3.0 1831 | dev: true 1832 | 1833 | /tree-kill@1.2.2: 1834 | resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 1835 | hasBin: true 1836 | dev: true 1837 | 1838 | /ts-interface-checker@0.1.13: 1839 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1840 | dev: true 1841 | 1842 | /tslib@2.5.3: 1843 | resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} 1844 | dev: true 1845 | 1846 | /tsup@7.0.0(postcss@8.4.24)(typescript@5.1.3): 1847 | resolution: {integrity: sha512-yYARDRkPq07mO3YUXTvF12ISwWQG57Odve8aFEgLdHyeGungxuKxb19yf9G0W8y59SZFkLnRj1gkoVk1gd5fbQ==} 1848 | engines: {node: '>=16.14'} 1849 | hasBin: true 1850 | peerDependencies: 1851 | '@swc/core': ^1 1852 | postcss: ^8.4.12 1853 | typescript: '>=4.1.0' 1854 | peerDependenciesMeta: 1855 | '@swc/core': 1856 | optional: true 1857 | postcss: 1858 | optional: true 1859 | typescript: 1860 | optional: true 1861 | dependencies: 1862 | bundle-require: 4.0.1(esbuild@0.18.6) 1863 | cac: 6.7.14 1864 | chokidar: 3.5.3 1865 | debug: 4.3.4 1866 | esbuild: 0.18.6 1867 | execa: 5.1.1 1868 | globby: 11.1.0 1869 | joycon: 3.1.1 1870 | postcss: 8.4.24 1871 | postcss-load-config: 4.0.1(postcss@8.4.24) 1872 | resolve-from: 5.0.0 1873 | rollup: 3.25.1 1874 | source-map: 0.8.0-beta.0 1875 | sucrase: 3.32.0 1876 | tree-kill: 1.2.2 1877 | typescript: 5.1.3 1878 | transitivePeerDependencies: 1879 | - supports-color 1880 | - ts-node 1881 | dev: true 1882 | 1883 | /typescript@5.1.3: 1884 | resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} 1885 | engines: {node: '>=14.17'} 1886 | hasBin: true 1887 | dev: true 1888 | 1889 | /undici@5.22.1: 1890 | resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} 1891 | engines: {node: '>=14.0'} 1892 | dependencies: 1893 | busboy: 1.6.0 1894 | dev: true 1895 | 1896 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 1897 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 1898 | hasBin: true 1899 | peerDependencies: 1900 | browserslist: '>= 4.21.0' 1901 | dependencies: 1902 | browserslist: 4.21.9 1903 | escalade: 3.1.1 1904 | picocolors: 1.0.0 1905 | dev: true 1906 | 1907 | /util-deprecate@1.0.2: 1908 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1909 | dev: true 1910 | 1911 | /vite@4.3.9: 1912 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} 1913 | engines: {node: ^14.18.0 || >=16.0.0} 1914 | hasBin: true 1915 | peerDependencies: 1916 | '@types/node': '>= 14' 1917 | less: '*' 1918 | sass: '*' 1919 | stylus: '*' 1920 | sugarss: '*' 1921 | terser: ^5.4.0 1922 | peerDependenciesMeta: 1923 | '@types/node': 1924 | optional: true 1925 | less: 1926 | optional: true 1927 | sass: 1928 | optional: true 1929 | stylus: 1930 | optional: true 1931 | sugarss: 1932 | optional: true 1933 | terser: 1934 | optional: true 1935 | dependencies: 1936 | esbuild: 0.17.19 1937 | postcss: 8.4.24 1938 | rollup: 3.25.1 1939 | optionalDependencies: 1940 | fsevents: 2.3.2 1941 | dev: true 1942 | 1943 | /vitefu@0.2.4(vite@4.3.9): 1944 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 1945 | peerDependencies: 1946 | vite: ^3.0.0 || ^4.0.0 1947 | peerDependenciesMeta: 1948 | vite: 1949 | optional: true 1950 | dependencies: 1951 | vite: 4.3.9 1952 | dev: true 1953 | 1954 | /webidl-conversions@4.0.2: 1955 | resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 1956 | dev: true 1957 | 1958 | /whatwg-url@7.1.0: 1959 | resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 1960 | dependencies: 1961 | lodash.sortby: 4.7.0 1962 | tr46: 1.0.1 1963 | webidl-conversions: 4.0.2 1964 | dev: true 1965 | 1966 | /which@2.0.2: 1967 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1968 | engines: {node: '>= 8'} 1969 | hasBin: true 1970 | dependencies: 1971 | isexe: 2.0.0 1972 | dev: true 1973 | 1974 | /wrappy@1.0.2: 1975 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1976 | dev: true 1977 | 1978 | /yaml@2.3.1: 1979 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} 1980 | engines: {node: '>= 14'} 1981 | dev: true 1982 | -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | const tailwindcss = require("tailwindcss"); 2 | const autoprefixer = require("autoprefixer"); 3 | 4 | const config = { 5 | plugins: [ 6 | //Some plugins, like tailwindcss/nesting, need to run before Tailwind, 7 | tailwindcss(), 8 | //But others, like autoprefixer, need to run after, 9 | autoprefixer, 10 | ], 11 | }; 12 | 13 | module.exports = config; 14 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | %sveltekit.head% 8 | 9 | 10 |
%sveltekit.body%
11 | 12 | 13 | -------------------------------------------------------------------------------- /src/app.postcss: -------------------------------------------------------------------------------- 1 | /* Write your global styles here, in PostCSS syntax */ 2 | @tailwind base; 3 | @tailwind components; 4 | @tailwind utilities; 5 | -------------------------------------------------------------------------------- /src/lib/index.ts: -------------------------------------------------------------------------------- 1 | import { getStroke } from './perfect-freehand' 2 | import { cubicInOut } from 'svelte/easing' 3 | import { getSvgPathFromStroke } from './svg-path' 4 | 5 | const linear = (t: number) => t 6 | 7 | // TODO: pass in / allow overriding 8 | const strokeOptions = { 9 | size: 8, 10 | thinning: 0.7, 11 | smoothing: 0.4, 12 | streamline: 0.6, 13 | easing: linear, 14 | start: { 15 | taper: 30, 16 | easing: cubicInOut, 17 | cap: true, 18 | }, 19 | end: { 20 | taper: 10, 21 | easing: cubicInOut, 22 | cap: true, 23 | }, 24 | } 25 | 26 | interface Options { 27 | ondraw: (path: string) => void 28 | oncomplete: (path: string) => void 29 | } 30 | 31 | export function signature(node: HTMLElement, options: Options) { 32 | const points: number[][] = [] 33 | 34 | function render(complete: boolean) { 35 | const stroke = getStroke(points, strokeOptions) 36 | const path = getSvgPathFromStroke(stroke) 37 | if (complete) { 38 | options.oncomplete(path) 39 | } else { 40 | options.ondraw(path) 41 | } 42 | } 43 | 44 | let down = false 45 | 46 | function pointerDown(e: PointerEvent) { 47 | node.setPointerCapture(e.pointerId) 48 | points.push([e.offsetX, e.offsetY, e.pressure]) 49 | render(false) 50 | down = true 51 | } 52 | 53 | function pointerMove(e: PointerEvent) { 54 | if (down && e.isPrimary) { 55 | points.push([e.offsetX, e.offsetY, e.pressure]) 56 | render(false) 57 | } 58 | } 59 | 60 | function pointerUp(e: PointerEvent) { 61 | node.releasePointerCapture(e.pointerId) 62 | 63 | render(true) 64 | 65 | down = false 66 | points.length = 0 67 | } 68 | 69 | node.addEventListener('pointerdown', pointerDown, { passive: true }) 70 | node.addEventListener('pointermove', pointerMove, { passive: true }) 71 | node.addEventListener('pointerup', pointerUp, { passive: true }) 72 | node.addEventListener('pointercancel', pointerUp, { passive: true }) 73 | 74 | return { 75 | destroy() { 76 | node.removeEventListener('pointerdown', pointerDown) 77 | node.removeEventListener('pointermove', pointerMove) 78 | node.removeEventListener('pointerup', pointerUp) 79 | node.removeEventListener('pointercancel', pointerUp) 80 | }, 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/lib/perfect-freehand.js: -------------------------------------------------------------------------------- 1 | function $(e,t,u,x=h=>h){return e*x(.5-t*(.5-u))}function se(e){return[-e[0],-e[1]]}function l(e,t){return[e[0]+t[0],e[1]+t[1]]}function a(e,t){return[e[0]-t[0],e[1]-t[1]]}function b(e,t){return[e[0]*t,e[1]*t]}function he(e,t){return[e[0]/t,e[1]/t]}function R(e){return[e[1],-e[0]]}function B(e,t){return e[0]*t[0]+e[1]*t[1]}function ue(e,t){return e[0]===t[0]&&e[1]===t[1]}function ge(e){return Math.hypot(e[0],e[1])}function de(e){return e[0]*e[0]+e[1]*e[1]}function A(e,t){return de(a(e,t))}function G(e){return he(e,ge(e))}function ie(e,t){return Math.hypot(e[1]-t[1],e[0]-t[0])}function L(e,t,u){let x=Math.sin(u),h=Math.cos(u),y=e[0]-t[0],n=e[1]-t[1],f=y*h-n*x,d=y*x+n*h;return[f+t[0],d+t[1]]}function K(e,t,u){return l(e,b(a(t,e),u))}function ee(e,t,u){return l(e,b(t,u))}var{min:C,PI:xe}=Math,pe=.275,V=xe+1e-4;function ce(e,t={}){let{size:u=16,smoothing:x=.5,thinning:h=.5,simulatePressure:y=!0,easing:n=r=>r,start:f={},end:d={},last:D=!1}=t,{cap:S=!0,easing:j=r=>r*(2-r)}=f,{cap:q=!0,easing:c=r=>--r*r*r+1}=d;if(e.length===0||u<=0)return[];let p=e[e.length-1].runningLength,g=f.taper===!1?0:f.taper===!0?Math.max(u,p):f.taper,T=d.taper===!1?0:d.taper===!0?Math.max(u,p):d.taper,te=Math.pow(u*x,2),_=[],M=[],H=e.slice(0,10).reduce((r,i)=>{let o=i.pressure;if(y){let s=C(1,i.distance/u),W=C(1,1-s);o=C(1,r+(W-r)*(s*pe))}return(r+o)/2},e[0].pressure),m=$(u,h,e[e.length-1].pressure,n),U,X=e[0].vector,z=e[0].point,F=z,O=z,E=F,J=!1;for(let r=0;rte)&&(_.push(O),z=O),E=l(o,oe),(r<=1||A(F,E)>te)&&(M.push(E),F=E),H=i,X=s}let P=e[0].point.slice(0,2),k=e.length>1?e[e.length-1].point.slice(0,2):l(e[0].point,[1,1]),Q=[],N=[];if(e.length===1){if(!(g||T)||D){let r=ee(P,G(R(a(P,k))),-(U||m)),i=[];for(let o=1/13,s=o;s<=1;s+=o)i.push(L(r,P,V*2*s));return i}}else{if(!(g||T&&e.length===1))if(S)for(let i=1/13,o=i;o<=1;o+=i){let s=L(M[0],P,V*o);Q.push(s)}else{let i=a(_[0],M[0]),o=b(i,.5),s=b(i,.51);Q.push(a(P,o),a(P,s),l(P,s),l(P,o))}let r=R(se(e[e.length-1].vector));if(T||g&&e.length===1)N.push(k);else if(q){let i=ee(k,r,m);for(let o=1/29,s=o;s<1;s+=o)N.push(L(i,k,V*3*s))}else N.push(l(k,b(r,m)),l(k,b(r,m*.99)),a(k,b(r,m*.99)),a(k,b(r,m)))}return _.concat(N,M.reverse(),Q)}function me(e,t={}){var q;let{streamline:u=.5,size:x=16,last:h=!1}=t;if(e.length===0)return[];let y=.15+(1-u)*.85,n=Array.isArray(e[0])?e:e.map(({x:c,y:p,pressure:g=.5})=>[c,p,g]);if(n.length===2){let c=n[1];n=n.slice(0,-1);for(let p=1;p<5;p++)n.push(K(n[0],c,p/4))}n.length===1&&(n=[...n,[...l(n[0],[1,1]),...n[0].slice(2)]]);let f=[{point:[n[0][0],n[0][1]],pressure:n[0][2]>=0?n[0][2]:.25,vector:[1,1],distance:0,runningLength:0}],d=!1,D=0,S=f[0],j=n.length-1;for(let c=1;c=0?n[c][2]:.5,vector:G(a(S.point,p)),distance:g,runningLength:D},f.push(S)}return f[0].vector=((q=f[1])==null?void 0:q.vector)||[0,0],f}function ae(e,t={}){return ce(me(e,t),t)}var _e=ae;export{_e as default,ae as getStroke,ce as getStrokeOutlinePoints,me as getStrokePoints}; 2 | -------------------------------------------------------------------------------- /src/lib/svg-path.ts: -------------------------------------------------------------------------------- 1 | 2 | const average = (a: number, b: number) => (a + b) / 2 3 | 4 | export function getSvgPathFromStroke(points: number[][], closed = true): string { 5 | const len = points.length 6 | 7 | if (len < 4) { 8 | return '' 9 | } 10 | 11 | let a = points[0] 12 | let b = points[1] 13 | const c = points[2] 14 | 15 | let result = `M${a[0].toFixed(2)},${a[1].toFixed(2)} Q${b[0].toFixed(2)},${b[1].toFixed(2)} ${average(b[0], c[0]).toFixed(2)},${average( 16 | b[1], 17 | c[1] 18 | ).toFixed(2)} T` 19 | 20 | for (let i = 2, max = len - 1; i < max; i++) { 21 | a = points[i] 22 | b = points[i + 1] 23 | result += `${average(a[0], b[0]).toFixed(2)},${average(a[1], b[1]).toFixed(2)} ` 24 | } 25 | 26 | if (closed) { 27 | result += 'Z' 28 | } 29 | 30 | return result 31 | } -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |

Svelte Signature Pad

7 |

8 | Svelte Action to capture smoothed signatures as SVG paths using the excellent perfect-freehand 12 | library. 13 | 14 |

15 |
16 | -------------------------------------------------------------------------------- /src/routes/+layout.ts: -------------------------------------------------------------------------------- 1 | export const prerender = true -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |
22 |
23 |
false} 29 | > 30 | {#each layers as layer} 31 | 32 | 33 | 34 | {/each} 35 | 36 | {#if preview} 37 | 38 | 39 | 40 | {/if} 41 |
42 | 43 |
44 | 45 |

Please sign on the dotted line to indicate that you agree to all the legal terms we all know you didn't read. Thank you!

46 | 47 |
48 | {#each layers as layer} 49 | 50 | 51 | 52 | {/each} 53 |
54 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CaptainCodeman/svelte-signature-pad/e7b05324ba77ae417be7930caf1a45d07b8da652/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-static' 2 | import { vitePreprocess } from '@sveltejs/kit/vite' 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: [vitePreprocess()], 9 | 10 | kit: { 11 | adapter: adapter(), 12 | }, 13 | } 14 | 15 | export default config 16 | -------------------------------------------------------------------------------- /tailwind.config.cjs: -------------------------------------------------------------------------------- 1 | const config = { 2 | content: ["./src/**/*.{html,js,svelte,ts}"], 3 | 4 | theme: { 5 | extend: {}, 6 | }, 7 | 8 | plugins: [], 9 | }; 10 | 11 | module.exports = config; 12 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'tsup' 2 | 3 | export default defineConfig({ 4 | entry: ['src/lib/index.ts'], 5 | external: ['svelte/easing'], 6 | format: ['esm'], 7 | splitting: false, 8 | sourcemap: false, 9 | minify: true, 10 | clean: true, 11 | dts: true, 12 | esbuildOptions(options, context) { 13 | // waiting for https://github.com/egoist/tsup/pull/781 ? 14 | // options.sourcemap = 'external' 15 | }, 16 | }) -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite' 2 | import { defineConfig } from 'vite' 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()], 6 | }); 7 | --------------------------------------------------------------------------------