├── .github └── workflows │ └── deploy.yml ├── .gitignore ├── .vscode └── extensions.json ├── README.md ├── index.html ├── jsconfig.json ├── package-lock.json ├── package.json ├── postcss.config.js ├── public └── images │ ├── alert-octagon.svg │ ├── back.svg │ ├── edit-24.svg │ ├── favicon.png │ ├── logo.svg │ ├── money-color.svg │ ├── money-gray.svg │ ├── play.svg │ ├── plus-24.svg │ ├── plus-orange.svg │ ├── stop.svg │ ├── trash-24.svg │ └── trash-48.svg ├── src ├── App.svelte ├── app.css ├── home │ ├── Card.svelte │ ├── Header.svelte │ ├── Home.svelte │ └── Main.svelte ├── main.js ├── parts │ ├── Aside.svelte │ └── Header.svelte ├── profile │ ├── Main.svelte │ └── Profile.svelte ├── project │ ├── Main.svelte │ └── Project.svelte ├── scripts │ ├── calculate.js │ ├── dayjs.js │ ├── db.js │ ├── project.js │ └── utils.js ├── store.js └── vite-env.d.ts ├── svelte.config.js ├── tailwind.config.js └── vite.config.js /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy to GitHub Pages 2 | 3 | on: 4 | push: 5 | branches: [main] 6 | 7 | jobs: 8 | build-and-deploy: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | 15 | - name: Setup Node.js 16 | uses: actions/setup-node@v4 17 | with: 18 | node-version: '20' 19 | 20 | - name: Install dependencies 21 | run: npm ci 22 | 23 | - name: Build 24 | run: npm run build 25 | 26 | - name: Deploy to GitHub Pages 27 | uses: JamesIves/github-pages-deploy-action@v4 28 | with: 29 | folder: dist # or your Svelte output folder -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["svelte.svelte-vscode"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | JobsCalc 3 |

4 | 5 |

6 | Tecnologias   |    7 | Projeto   |    8 | Layout   |    9 | Licença 10 |

11 | 12 |

13 | PRs welcome! 14 | 15 | License 16 |

17 | 18 |
19 | 20 |

21 | dev.finances 22 |

23 | 24 | ## 🚀 Tecnologias 25 | 26 | Esse projeto foi desenvolvido com as seguintes tecnologias: 27 | 28 | - HTML 29 | - CSS 30 | - JavaScript 31 | - Svelte 32 | - Tailwind 33 | - Vite 34 | 35 | ## 💻 Projeto 36 | 37 | O JobsCalc é uma aplicação de estimativa de cálculo para projetos freelancer, onde é possível cadastrar e excluir jobs (projetos), obtendo uma estimativa de custo de cada job. Além disso, é possível traçar o valor da hora da pessoa que estará usando o sistema 💰 38 | 39 | ## 🔖 Layout 40 | 41 | Você pode visualizar o layout do projeto através [desse link](https://www.figma.com/file/s4fytPFbDiSkv4GPSfKaLE/Jobs-Planning). É necessário ter conta no [Figma](https://figma.com) para acessá-lo. 42 | 43 | ## :memo: Licença 44 | 45 | Esse projeto está sob a licença MIT. Veja o arquivo [LICENSE](.github/LICENSE.md) para mais detalhes. 46 | 47 | --- 48 | 49 | Feito com ♥ by Rocketseat :wave: [Participe da nossa comunidade!](https://discordapp.com/invite/gCRAFhc) 50 | 51 | 52 | 53 |
54 |
55 | 56 |

57 | 58 | banner 59 | 60 |

61 | 62 | 63 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | JobsCalc 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "moduleResolution": "bundler", 4 | "target": "ESNext", 5 | "module": "ESNext", 6 | /** 7 | * svelte-preprocess cannot figure out whether you have 8 | * a value or a type, so tell TypeScript to enforce using 9 | * `import type` instead of `import` for Types. 10 | */ 11 | "verbatimModuleSyntax": true, 12 | "isolatedModules": true, 13 | "resolveJsonModule": true, 14 | /** 15 | * To have warnings / errors of the Svelte compiler at the 16 | * correct position, enable source maps by default. 17 | */ 18 | "sourceMap": true, 19 | "esModuleInterop": true, 20 | "skipLibCheck": true, 21 | /** 22 | * Typecheck JS in `.svelte` and `.js` files by default. 23 | * Disable this if you'd like to use dynamic types. 24 | */ 25 | "checkJs": true 26 | }, 27 | /** 28 | * Use global.d.ts instead of compilerOptions.types 29 | * to avoid limiting type declarations. 30 | */ 31 | "include": ["src/**/*.d.ts", "src/**/*.js", "src/**/*.svelte"] 32 | } 33 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jobscalc-svelte-tailwindcss", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "jobscalc-svelte-tailwindcss", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "dayjs": "^1.11.12" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/vite-plugin-svelte": "^3.1.1", 15 | "autoprefixer": "^10.4.20", 16 | "postcss": "^8.4.41", 17 | "svelte": "^4.2.18", 18 | "tailwindcss": "^3.4.8", 19 | "vite": "^5.4.0" 20 | } 21 | }, 22 | "node_modules/@alloc/quick-lru": { 23 | "version": "5.2.0", 24 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", 25 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", 26 | "dev": true, 27 | "engines": { 28 | "node": ">=10" 29 | }, 30 | "funding": { 31 | "url": "https://github.com/sponsors/sindresorhus" 32 | } 33 | }, 34 | "node_modules/@ampproject/remapping": { 35 | "version": "2.3.0", 36 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", 37 | "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", 38 | "dev": true, 39 | "dependencies": { 40 | "@jridgewell/gen-mapping": "^0.3.5", 41 | "@jridgewell/trace-mapping": "^0.3.24" 42 | }, 43 | "engines": { 44 | "node": ">=6.0.0" 45 | } 46 | }, 47 | "node_modules/@esbuild/aix-ppc64": { 48 | "version": "0.21.5", 49 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", 50 | "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", 51 | "cpu": [ 52 | "ppc64" 53 | ], 54 | "dev": true, 55 | "optional": true, 56 | "os": [ 57 | "aix" 58 | ], 59 | "engines": { 60 | "node": ">=12" 61 | } 62 | }, 63 | "node_modules/@esbuild/android-arm": { 64 | "version": "0.21.5", 65 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", 66 | "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", 67 | "cpu": [ 68 | "arm" 69 | ], 70 | "dev": true, 71 | "optional": true, 72 | "os": [ 73 | "android" 74 | ], 75 | "engines": { 76 | "node": ">=12" 77 | } 78 | }, 79 | "node_modules/@esbuild/android-arm64": { 80 | "version": "0.21.5", 81 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", 82 | "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", 83 | "cpu": [ 84 | "arm64" 85 | ], 86 | "dev": true, 87 | "optional": true, 88 | "os": [ 89 | "android" 90 | ], 91 | "engines": { 92 | "node": ">=12" 93 | } 94 | }, 95 | "node_modules/@esbuild/android-x64": { 96 | "version": "0.21.5", 97 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", 98 | "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", 99 | "cpu": [ 100 | "x64" 101 | ], 102 | "dev": true, 103 | "optional": true, 104 | "os": [ 105 | "android" 106 | ], 107 | "engines": { 108 | "node": ">=12" 109 | } 110 | }, 111 | "node_modules/@esbuild/darwin-arm64": { 112 | "version": "0.21.5", 113 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", 114 | "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", 115 | "cpu": [ 116 | "arm64" 117 | ], 118 | "dev": true, 119 | "optional": true, 120 | "os": [ 121 | "darwin" 122 | ], 123 | "engines": { 124 | "node": ">=12" 125 | } 126 | }, 127 | "node_modules/@esbuild/darwin-x64": { 128 | "version": "0.21.5", 129 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", 130 | "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", 131 | "cpu": [ 132 | "x64" 133 | ], 134 | "dev": true, 135 | "optional": true, 136 | "os": [ 137 | "darwin" 138 | ], 139 | "engines": { 140 | "node": ">=12" 141 | } 142 | }, 143 | "node_modules/@esbuild/freebsd-arm64": { 144 | "version": "0.21.5", 145 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", 146 | "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", 147 | "cpu": [ 148 | "arm64" 149 | ], 150 | "dev": true, 151 | "optional": true, 152 | "os": [ 153 | "freebsd" 154 | ], 155 | "engines": { 156 | "node": ">=12" 157 | } 158 | }, 159 | "node_modules/@esbuild/freebsd-x64": { 160 | "version": "0.21.5", 161 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", 162 | "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", 163 | "cpu": [ 164 | "x64" 165 | ], 166 | "dev": true, 167 | "optional": true, 168 | "os": [ 169 | "freebsd" 170 | ], 171 | "engines": { 172 | "node": ">=12" 173 | } 174 | }, 175 | "node_modules/@esbuild/linux-arm": { 176 | "version": "0.21.5", 177 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", 178 | "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", 179 | "cpu": [ 180 | "arm" 181 | ], 182 | "dev": true, 183 | "optional": true, 184 | "os": [ 185 | "linux" 186 | ], 187 | "engines": { 188 | "node": ">=12" 189 | } 190 | }, 191 | "node_modules/@esbuild/linux-arm64": { 192 | "version": "0.21.5", 193 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", 194 | "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", 195 | "cpu": [ 196 | "arm64" 197 | ], 198 | "dev": true, 199 | "optional": true, 200 | "os": [ 201 | "linux" 202 | ], 203 | "engines": { 204 | "node": ">=12" 205 | } 206 | }, 207 | "node_modules/@esbuild/linux-ia32": { 208 | "version": "0.21.5", 209 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", 210 | "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", 211 | "cpu": [ 212 | "ia32" 213 | ], 214 | "dev": true, 215 | "optional": true, 216 | "os": [ 217 | "linux" 218 | ], 219 | "engines": { 220 | "node": ">=12" 221 | } 222 | }, 223 | "node_modules/@esbuild/linux-loong64": { 224 | "version": "0.21.5", 225 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", 226 | "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", 227 | "cpu": [ 228 | "loong64" 229 | ], 230 | "dev": true, 231 | "optional": true, 232 | "os": [ 233 | "linux" 234 | ], 235 | "engines": { 236 | "node": ">=12" 237 | } 238 | }, 239 | "node_modules/@esbuild/linux-mips64el": { 240 | "version": "0.21.5", 241 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", 242 | "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", 243 | "cpu": [ 244 | "mips64el" 245 | ], 246 | "dev": true, 247 | "optional": true, 248 | "os": [ 249 | "linux" 250 | ], 251 | "engines": { 252 | "node": ">=12" 253 | } 254 | }, 255 | "node_modules/@esbuild/linux-ppc64": { 256 | "version": "0.21.5", 257 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", 258 | "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", 259 | "cpu": [ 260 | "ppc64" 261 | ], 262 | "dev": true, 263 | "optional": true, 264 | "os": [ 265 | "linux" 266 | ], 267 | "engines": { 268 | "node": ">=12" 269 | } 270 | }, 271 | "node_modules/@esbuild/linux-riscv64": { 272 | "version": "0.21.5", 273 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", 274 | "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", 275 | "cpu": [ 276 | "riscv64" 277 | ], 278 | "dev": true, 279 | "optional": true, 280 | "os": [ 281 | "linux" 282 | ], 283 | "engines": { 284 | "node": ">=12" 285 | } 286 | }, 287 | "node_modules/@esbuild/linux-s390x": { 288 | "version": "0.21.5", 289 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", 290 | "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", 291 | "cpu": [ 292 | "s390x" 293 | ], 294 | "dev": true, 295 | "optional": true, 296 | "os": [ 297 | "linux" 298 | ], 299 | "engines": { 300 | "node": ">=12" 301 | } 302 | }, 303 | "node_modules/@esbuild/linux-x64": { 304 | "version": "0.21.5", 305 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", 306 | "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", 307 | "cpu": [ 308 | "x64" 309 | ], 310 | "dev": true, 311 | "optional": true, 312 | "os": [ 313 | "linux" 314 | ], 315 | "engines": { 316 | "node": ">=12" 317 | } 318 | }, 319 | "node_modules/@esbuild/netbsd-x64": { 320 | "version": "0.21.5", 321 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", 322 | "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", 323 | "cpu": [ 324 | "x64" 325 | ], 326 | "dev": true, 327 | "optional": true, 328 | "os": [ 329 | "netbsd" 330 | ], 331 | "engines": { 332 | "node": ">=12" 333 | } 334 | }, 335 | "node_modules/@esbuild/openbsd-x64": { 336 | "version": "0.21.5", 337 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", 338 | "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", 339 | "cpu": [ 340 | "x64" 341 | ], 342 | "dev": true, 343 | "optional": true, 344 | "os": [ 345 | "openbsd" 346 | ], 347 | "engines": { 348 | "node": ">=12" 349 | } 350 | }, 351 | "node_modules/@esbuild/sunos-x64": { 352 | "version": "0.21.5", 353 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", 354 | "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", 355 | "cpu": [ 356 | "x64" 357 | ], 358 | "dev": true, 359 | "optional": true, 360 | "os": [ 361 | "sunos" 362 | ], 363 | "engines": { 364 | "node": ">=12" 365 | } 366 | }, 367 | "node_modules/@esbuild/win32-arm64": { 368 | "version": "0.21.5", 369 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", 370 | "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", 371 | "cpu": [ 372 | "arm64" 373 | ], 374 | "dev": true, 375 | "optional": true, 376 | "os": [ 377 | "win32" 378 | ], 379 | "engines": { 380 | "node": ">=12" 381 | } 382 | }, 383 | "node_modules/@esbuild/win32-ia32": { 384 | "version": "0.21.5", 385 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", 386 | "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", 387 | "cpu": [ 388 | "ia32" 389 | ], 390 | "dev": true, 391 | "optional": true, 392 | "os": [ 393 | "win32" 394 | ], 395 | "engines": { 396 | "node": ">=12" 397 | } 398 | }, 399 | "node_modules/@esbuild/win32-x64": { 400 | "version": "0.21.5", 401 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", 402 | "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", 403 | "cpu": [ 404 | "x64" 405 | ], 406 | "dev": true, 407 | "optional": true, 408 | "os": [ 409 | "win32" 410 | ], 411 | "engines": { 412 | "node": ">=12" 413 | } 414 | }, 415 | "node_modules/@isaacs/cliui": { 416 | "version": "8.0.2", 417 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 418 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 419 | "dev": true, 420 | "dependencies": { 421 | "string-width": "^5.1.2", 422 | "string-width-cjs": "npm:string-width@^4.2.0", 423 | "strip-ansi": "^7.0.1", 424 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 425 | "wrap-ansi": "^8.1.0", 426 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 427 | }, 428 | "engines": { 429 | "node": ">=12" 430 | } 431 | }, 432 | "node_modules/@jridgewell/gen-mapping": { 433 | "version": "0.3.5", 434 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", 435 | "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", 436 | "dev": true, 437 | "dependencies": { 438 | "@jridgewell/set-array": "^1.2.1", 439 | "@jridgewell/sourcemap-codec": "^1.4.10", 440 | "@jridgewell/trace-mapping": "^0.3.24" 441 | }, 442 | "engines": { 443 | "node": ">=6.0.0" 444 | } 445 | }, 446 | "node_modules/@jridgewell/resolve-uri": { 447 | "version": "3.1.2", 448 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 449 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 450 | "dev": true, 451 | "engines": { 452 | "node": ">=6.0.0" 453 | } 454 | }, 455 | "node_modules/@jridgewell/set-array": { 456 | "version": "1.2.1", 457 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", 458 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", 459 | "dev": true, 460 | "engines": { 461 | "node": ">=6.0.0" 462 | } 463 | }, 464 | "node_modules/@jridgewell/sourcemap-codec": { 465 | "version": "1.5.0", 466 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 467 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 468 | "dev": true 469 | }, 470 | "node_modules/@jridgewell/trace-mapping": { 471 | "version": "0.3.25", 472 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 473 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 474 | "dev": true, 475 | "dependencies": { 476 | "@jridgewell/resolve-uri": "^3.1.0", 477 | "@jridgewell/sourcemap-codec": "^1.4.14" 478 | } 479 | }, 480 | "node_modules/@nodelib/fs.scandir": { 481 | "version": "2.1.5", 482 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 483 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 484 | "dev": true, 485 | "dependencies": { 486 | "@nodelib/fs.stat": "2.0.5", 487 | "run-parallel": "^1.1.9" 488 | }, 489 | "engines": { 490 | "node": ">= 8" 491 | } 492 | }, 493 | "node_modules/@nodelib/fs.stat": { 494 | "version": "2.0.5", 495 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 496 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 497 | "dev": true, 498 | "engines": { 499 | "node": ">= 8" 500 | } 501 | }, 502 | "node_modules/@nodelib/fs.walk": { 503 | "version": "1.2.8", 504 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 505 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 506 | "dev": true, 507 | "dependencies": { 508 | "@nodelib/fs.scandir": "2.1.5", 509 | "fastq": "^1.6.0" 510 | }, 511 | "engines": { 512 | "node": ">= 8" 513 | } 514 | }, 515 | "node_modules/@pkgjs/parseargs": { 516 | "version": "0.11.0", 517 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 518 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 519 | "dev": true, 520 | "optional": true, 521 | "engines": { 522 | "node": ">=14" 523 | } 524 | }, 525 | "node_modules/@rollup/rollup-android-arm-eabi": { 526 | "version": "4.20.0", 527 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz", 528 | "integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==", 529 | "cpu": [ 530 | "arm" 531 | ], 532 | "dev": true, 533 | "optional": true, 534 | "os": [ 535 | "android" 536 | ] 537 | }, 538 | "node_modules/@rollup/rollup-android-arm64": { 539 | "version": "4.20.0", 540 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz", 541 | "integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==", 542 | "cpu": [ 543 | "arm64" 544 | ], 545 | "dev": true, 546 | "optional": true, 547 | "os": [ 548 | "android" 549 | ] 550 | }, 551 | "node_modules/@rollup/rollup-darwin-arm64": { 552 | "version": "4.20.0", 553 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz", 554 | "integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==", 555 | "cpu": [ 556 | "arm64" 557 | ], 558 | "dev": true, 559 | "optional": true, 560 | "os": [ 561 | "darwin" 562 | ] 563 | }, 564 | "node_modules/@rollup/rollup-darwin-x64": { 565 | "version": "4.20.0", 566 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz", 567 | "integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==", 568 | "cpu": [ 569 | "x64" 570 | ], 571 | "dev": true, 572 | "optional": true, 573 | "os": [ 574 | "darwin" 575 | ] 576 | }, 577 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 578 | "version": "4.20.0", 579 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz", 580 | "integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==", 581 | "cpu": [ 582 | "arm" 583 | ], 584 | "dev": true, 585 | "optional": true, 586 | "os": [ 587 | "linux" 588 | ] 589 | }, 590 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 591 | "version": "4.20.0", 592 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz", 593 | "integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==", 594 | "cpu": [ 595 | "arm" 596 | ], 597 | "dev": true, 598 | "optional": true, 599 | "os": [ 600 | "linux" 601 | ] 602 | }, 603 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 604 | "version": "4.20.0", 605 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz", 606 | "integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==", 607 | "cpu": [ 608 | "arm64" 609 | ], 610 | "dev": true, 611 | "optional": true, 612 | "os": [ 613 | "linux" 614 | ] 615 | }, 616 | "node_modules/@rollup/rollup-linux-arm64-musl": { 617 | "version": "4.20.0", 618 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz", 619 | "integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==", 620 | "cpu": [ 621 | "arm64" 622 | ], 623 | "dev": true, 624 | "optional": true, 625 | "os": [ 626 | "linux" 627 | ] 628 | }, 629 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 630 | "version": "4.20.0", 631 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz", 632 | "integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==", 633 | "cpu": [ 634 | "ppc64" 635 | ], 636 | "dev": true, 637 | "optional": true, 638 | "os": [ 639 | "linux" 640 | ] 641 | }, 642 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 643 | "version": "4.20.0", 644 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz", 645 | "integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==", 646 | "cpu": [ 647 | "riscv64" 648 | ], 649 | "dev": true, 650 | "optional": true, 651 | "os": [ 652 | "linux" 653 | ] 654 | }, 655 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 656 | "version": "4.20.0", 657 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz", 658 | "integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==", 659 | "cpu": [ 660 | "s390x" 661 | ], 662 | "dev": true, 663 | "optional": true, 664 | "os": [ 665 | "linux" 666 | ] 667 | }, 668 | "node_modules/@rollup/rollup-linux-x64-gnu": { 669 | "version": "4.20.0", 670 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz", 671 | "integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==", 672 | "cpu": [ 673 | "x64" 674 | ], 675 | "dev": true, 676 | "optional": true, 677 | "os": [ 678 | "linux" 679 | ] 680 | }, 681 | "node_modules/@rollup/rollup-linux-x64-musl": { 682 | "version": "4.20.0", 683 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz", 684 | "integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==", 685 | "cpu": [ 686 | "x64" 687 | ], 688 | "dev": true, 689 | "optional": true, 690 | "os": [ 691 | "linux" 692 | ] 693 | }, 694 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 695 | "version": "4.20.0", 696 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz", 697 | "integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==", 698 | "cpu": [ 699 | "arm64" 700 | ], 701 | "dev": true, 702 | "optional": true, 703 | "os": [ 704 | "win32" 705 | ] 706 | }, 707 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 708 | "version": "4.20.0", 709 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz", 710 | "integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==", 711 | "cpu": [ 712 | "ia32" 713 | ], 714 | "dev": true, 715 | "optional": true, 716 | "os": [ 717 | "win32" 718 | ] 719 | }, 720 | "node_modules/@rollup/rollup-win32-x64-msvc": { 721 | "version": "4.20.0", 722 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz", 723 | "integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==", 724 | "cpu": [ 725 | "x64" 726 | ], 727 | "dev": true, 728 | "optional": true, 729 | "os": [ 730 | "win32" 731 | ] 732 | }, 733 | "node_modules/@sveltejs/vite-plugin-svelte": { 734 | "version": "3.1.1", 735 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.1.1.tgz", 736 | "integrity": "sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==", 737 | "dev": true, 738 | "dependencies": { 739 | "@sveltejs/vite-plugin-svelte-inspector": "^2.1.0", 740 | "debug": "^4.3.4", 741 | "deepmerge": "^4.3.1", 742 | "kleur": "^4.1.5", 743 | "magic-string": "^0.30.10", 744 | "svelte-hmr": "^0.16.0", 745 | "vitefu": "^0.2.5" 746 | }, 747 | "engines": { 748 | "node": "^18.0.0 || >=20" 749 | }, 750 | "peerDependencies": { 751 | "svelte": "^4.0.0 || ^5.0.0-next.0", 752 | "vite": "^5.0.0" 753 | } 754 | }, 755 | "node_modules/@sveltejs/vite-plugin-svelte-inspector": { 756 | "version": "2.1.0", 757 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.1.0.tgz", 758 | "integrity": "sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==", 759 | "dev": true, 760 | "dependencies": { 761 | "debug": "^4.3.4" 762 | }, 763 | "engines": { 764 | "node": "^18.0.0 || >=20" 765 | }, 766 | "peerDependencies": { 767 | "@sveltejs/vite-plugin-svelte": "^3.0.0", 768 | "svelte": "^4.0.0 || ^5.0.0-next.0", 769 | "vite": "^5.0.0" 770 | } 771 | }, 772 | "node_modules/@types/estree": { 773 | "version": "1.0.5", 774 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", 775 | "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", 776 | "dev": true 777 | }, 778 | "node_modules/acorn": { 779 | "version": "8.12.1", 780 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", 781 | "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", 782 | "dev": true, 783 | "bin": { 784 | "acorn": "bin/acorn" 785 | }, 786 | "engines": { 787 | "node": ">=0.4.0" 788 | } 789 | }, 790 | "node_modules/ansi-regex": { 791 | "version": "6.0.1", 792 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 793 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 794 | "dev": true, 795 | "engines": { 796 | "node": ">=12" 797 | }, 798 | "funding": { 799 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 800 | } 801 | }, 802 | "node_modules/ansi-styles": { 803 | "version": "6.2.1", 804 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 805 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 806 | "dev": true, 807 | "engines": { 808 | "node": ">=12" 809 | }, 810 | "funding": { 811 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 812 | } 813 | }, 814 | "node_modules/any-promise": { 815 | "version": "1.3.0", 816 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", 817 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", 818 | "dev": true 819 | }, 820 | "node_modules/anymatch": { 821 | "version": "3.1.3", 822 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 823 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 824 | "dev": true, 825 | "dependencies": { 826 | "normalize-path": "^3.0.0", 827 | "picomatch": "^2.0.4" 828 | }, 829 | "engines": { 830 | "node": ">= 8" 831 | } 832 | }, 833 | "node_modules/arg": { 834 | "version": "5.0.2", 835 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", 836 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 837 | "dev": true 838 | }, 839 | "node_modules/aria-query": { 840 | "version": "5.3.0", 841 | "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", 842 | "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", 843 | "dev": true, 844 | "dependencies": { 845 | "dequal": "^2.0.3" 846 | } 847 | }, 848 | "node_modules/autoprefixer": { 849 | "version": "10.4.20", 850 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", 851 | "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", 852 | "dev": true, 853 | "funding": [ 854 | { 855 | "type": "opencollective", 856 | "url": "https://opencollective.com/postcss/" 857 | }, 858 | { 859 | "type": "tidelift", 860 | "url": "https://tidelift.com/funding/github/npm/autoprefixer" 861 | }, 862 | { 863 | "type": "github", 864 | "url": "https://github.com/sponsors/ai" 865 | } 866 | ], 867 | "dependencies": { 868 | "browserslist": "^4.23.3", 869 | "caniuse-lite": "^1.0.30001646", 870 | "fraction.js": "^4.3.7", 871 | "normalize-range": "^0.1.2", 872 | "picocolors": "^1.0.1", 873 | "postcss-value-parser": "^4.2.0" 874 | }, 875 | "bin": { 876 | "autoprefixer": "bin/autoprefixer" 877 | }, 878 | "engines": { 879 | "node": "^10 || ^12 || >=14" 880 | }, 881 | "peerDependencies": { 882 | "postcss": "^8.1.0" 883 | } 884 | }, 885 | "node_modules/axobject-query": { 886 | "version": "4.1.0", 887 | "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", 888 | "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", 889 | "dev": true, 890 | "engines": { 891 | "node": ">= 0.4" 892 | } 893 | }, 894 | "node_modules/balanced-match": { 895 | "version": "1.0.2", 896 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 897 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 898 | "dev": true 899 | }, 900 | "node_modules/binary-extensions": { 901 | "version": "2.3.0", 902 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 903 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 904 | "dev": true, 905 | "engines": { 906 | "node": ">=8" 907 | }, 908 | "funding": { 909 | "url": "https://github.com/sponsors/sindresorhus" 910 | } 911 | }, 912 | "node_modules/brace-expansion": { 913 | "version": "2.0.1", 914 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 915 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 916 | "dev": true, 917 | "dependencies": { 918 | "balanced-match": "^1.0.0" 919 | } 920 | }, 921 | "node_modules/braces": { 922 | "version": "3.0.3", 923 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 924 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 925 | "dev": true, 926 | "dependencies": { 927 | "fill-range": "^7.1.1" 928 | }, 929 | "engines": { 930 | "node": ">=8" 931 | } 932 | }, 933 | "node_modules/browserslist": { 934 | "version": "4.23.3", 935 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", 936 | "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", 937 | "dev": true, 938 | "funding": [ 939 | { 940 | "type": "opencollective", 941 | "url": "https://opencollective.com/browserslist" 942 | }, 943 | { 944 | "type": "tidelift", 945 | "url": "https://tidelift.com/funding/github/npm/browserslist" 946 | }, 947 | { 948 | "type": "github", 949 | "url": "https://github.com/sponsors/ai" 950 | } 951 | ], 952 | "dependencies": { 953 | "caniuse-lite": "^1.0.30001646", 954 | "electron-to-chromium": "^1.5.4", 955 | "node-releases": "^2.0.18", 956 | "update-browserslist-db": "^1.1.0" 957 | }, 958 | "bin": { 959 | "browserslist": "cli.js" 960 | }, 961 | "engines": { 962 | "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 963 | } 964 | }, 965 | "node_modules/camelcase-css": { 966 | "version": "2.0.1", 967 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 968 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", 969 | "dev": true, 970 | "engines": { 971 | "node": ">= 6" 972 | } 973 | }, 974 | "node_modules/caniuse-lite": { 975 | "version": "1.0.30001651", 976 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", 977 | "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", 978 | "dev": true, 979 | "funding": [ 980 | { 981 | "type": "opencollective", 982 | "url": "https://opencollective.com/browserslist" 983 | }, 984 | { 985 | "type": "tidelift", 986 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 987 | }, 988 | { 989 | "type": "github", 990 | "url": "https://github.com/sponsors/ai" 991 | } 992 | ] 993 | }, 994 | "node_modules/chokidar": { 995 | "version": "3.6.0", 996 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 997 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 998 | "dev": true, 999 | "dependencies": { 1000 | "anymatch": "~3.1.2", 1001 | "braces": "~3.0.2", 1002 | "glob-parent": "~5.1.2", 1003 | "is-binary-path": "~2.1.0", 1004 | "is-glob": "~4.0.1", 1005 | "normalize-path": "~3.0.0", 1006 | "readdirp": "~3.6.0" 1007 | }, 1008 | "engines": { 1009 | "node": ">= 8.10.0" 1010 | }, 1011 | "funding": { 1012 | "url": "https://paulmillr.com/funding/" 1013 | }, 1014 | "optionalDependencies": { 1015 | "fsevents": "~2.3.2" 1016 | } 1017 | }, 1018 | "node_modules/chokidar/node_modules/glob-parent": { 1019 | "version": "5.1.2", 1020 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1021 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1022 | "dev": true, 1023 | "dependencies": { 1024 | "is-glob": "^4.0.1" 1025 | }, 1026 | "engines": { 1027 | "node": ">= 6" 1028 | } 1029 | }, 1030 | "node_modules/code-red": { 1031 | "version": "1.0.4", 1032 | "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", 1033 | "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", 1034 | "dev": true, 1035 | "dependencies": { 1036 | "@jridgewell/sourcemap-codec": "^1.4.15", 1037 | "@types/estree": "^1.0.1", 1038 | "acorn": "^8.10.0", 1039 | "estree-walker": "^3.0.3", 1040 | "periscopic": "^3.1.0" 1041 | } 1042 | }, 1043 | "node_modules/color-convert": { 1044 | "version": "2.0.1", 1045 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1046 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "color-name": "~1.1.4" 1050 | }, 1051 | "engines": { 1052 | "node": ">=7.0.0" 1053 | } 1054 | }, 1055 | "node_modules/color-name": { 1056 | "version": "1.1.4", 1057 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1058 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1059 | "dev": true 1060 | }, 1061 | "node_modules/commander": { 1062 | "version": "4.1.1", 1063 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1064 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", 1065 | "dev": true, 1066 | "engines": { 1067 | "node": ">= 6" 1068 | } 1069 | }, 1070 | "node_modules/cross-spawn": { 1071 | "version": "7.0.3", 1072 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 1073 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 1074 | "dev": true, 1075 | "dependencies": { 1076 | "path-key": "^3.1.0", 1077 | "shebang-command": "^2.0.0", 1078 | "which": "^2.0.1" 1079 | }, 1080 | "engines": { 1081 | "node": ">= 8" 1082 | } 1083 | }, 1084 | "node_modules/css-tree": { 1085 | "version": "2.3.1", 1086 | "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", 1087 | "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", 1088 | "dev": true, 1089 | "dependencies": { 1090 | "mdn-data": "2.0.30", 1091 | "source-map-js": "^1.0.1" 1092 | }, 1093 | "engines": { 1094 | "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" 1095 | } 1096 | }, 1097 | "node_modules/cssesc": { 1098 | "version": "3.0.0", 1099 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 1100 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", 1101 | "dev": true, 1102 | "bin": { 1103 | "cssesc": "bin/cssesc" 1104 | }, 1105 | "engines": { 1106 | "node": ">=4" 1107 | } 1108 | }, 1109 | "node_modules/dayjs": { 1110 | "version": "1.11.12", 1111 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", 1112 | "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" 1113 | }, 1114 | "node_modules/debug": { 1115 | "version": "4.3.6", 1116 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 1117 | "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 1118 | "dev": true, 1119 | "dependencies": { 1120 | "ms": "2.1.2" 1121 | }, 1122 | "engines": { 1123 | "node": ">=6.0" 1124 | }, 1125 | "peerDependenciesMeta": { 1126 | "supports-color": { 1127 | "optional": true 1128 | } 1129 | } 1130 | }, 1131 | "node_modules/deepmerge": { 1132 | "version": "4.3.1", 1133 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 1134 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 1135 | "dev": true, 1136 | "engines": { 1137 | "node": ">=0.10.0" 1138 | } 1139 | }, 1140 | "node_modules/dequal": { 1141 | "version": "2.0.3", 1142 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", 1143 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", 1144 | "dev": true, 1145 | "engines": { 1146 | "node": ">=6" 1147 | } 1148 | }, 1149 | "node_modules/didyoumean": { 1150 | "version": "1.2.2", 1151 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 1152 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", 1153 | "dev": true 1154 | }, 1155 | "node_modules/dlv": { 1156 | "version": "1.1.3", 1157 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 1158 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 1159 | "dev": true 1160 | }, 1161 | "node_modules/eastasianwidth": { 1162 | "version": "0.2.0", 1163 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1164 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1165 | "dev": true 1166 | }, 1167 | "node_modules/electron-to-chromium": { 1168 | "version": "1.5.8", 1169 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.8.tgz", 1170 | "integrity": "sha512-4Nx0gP2tPNBLTrFxBMHpkQbtn2hidPVr/+/FTtcCiBYTucqc70zRyVZiOLj17Ui3wTO7SQ1/N+hkHYzJjBzt6A==", 1171 | "dev": true 1172 | }, 1173 | "node_modules/emoji-regex": { 1174 | "version": "9.2.2", 1175 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 1176 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 1177 | "dev": true 1178 | }, 1179 | "node_modules/esbuild": { 1180 | "version": "0.21.5", 1181 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", 1182 | "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", 1183 | "dev": true, 1184 | "hasInstallScript": true, 1185 | "bin": { 1186 | "esbuild": "bin/esbuild" 1187 | }, 1188 | "engines": { 1189 | "node": ">=12" 1190 | }, 1191 | "optionalDependencies": { 1192 | "@esbuild/aix-ppc64": "0.21.5", 1193 | "@esbuild/android-arm": "0.21.5", 1194 | "@esbuild/android-arm64": "0.21.5", 1195 | "@esbuild/android-x64": "0.21.5", 1196 | "@esbuild/darwin-arm64": "0.21.5", 1197 | "@esbuild/darwin-x64": "0.21.5", 1198 | "@esbuild/freebsd-arm64": "0.21.5", 1199 | "@esbuild/freebsd-x64": "0.21.5", 1200 | "@esbuild/linux-arm": "0.21.5", 1201 | "@esbuild/linux-arm64": "0.21.5", 1202 | "@esbuild/linux-ia32": "0.21.5", 1203 | "@esbuild/linux-loong64": "0.21.5", 1204 | "@esbuild/linux-mips64el": "0.21.5", 1205 | "@esbuild/linux-ppc64": "0.21.5", 1206 | "@esbuild/linux-riscv64": "0.21.5", 1207 | "@esbuild/linux-s390x": "0.21.5", 1208 | "@esbuild/linux-x64": "0.21.5", 1209 | "@esbuild/netbsd-x64": "0.21.5", 1210 | "@esbuild/openbsd-x64": "0.21.5", 1211 | "@esbuild/sunos-x64": "0.21.5", 1212 | "@esbuild/win32-arm64": "0.21.5", 1213 | "@esbuild/win32-ia32": "0.21.5", 1214 | "@esbuild/win32-x64": "0.21.5" 1215 | } 1216 | }, 1217 | "node_modules/escalade": { 1218 | "version": "3.1.2", 1219 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1220 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1221 | "dev": true, 1222 | "engines": { 1223 | "node": ">=6" 1224 | } 1225 | }, 1226 | "node_modules/estree-walker": { 1227 | "version": "3.0.3", 1228 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", 1229 | "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", 1230 | "dev": true, 1231 | "dependencies": { 1232 | "@types/estree": "^1.0.0" 1233 | } 1234 | }, 1235 | "node_modules/fast-glob": { 1236 | "version": "3.3.2", 1237 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", 1238 | "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", 1239 | "dev": true, 1240 | "dependencies": { 1241 | "@nodelib/fs.stat": "^2.0.2", 1242 | "@nodelib/fs.walk": "^1.2.3", 1243 | "glob-parent": "^5.1.2", 1244 | "merge2": "^1.3.0", 1245 | "micromatch": "^4.0.4" 1246 | }, 1247 | "engines": { 1248 | "node": ">=8.6.0" 1249 | } 1250 | }, 1251 | "node_modules/fast-glob/node_modules/glob-parent": { 1252 | "version": "5.1.2", 1253 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1254 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1255 | "dev": true, 1256 | "dependencies": { 1257 | "is-glob": "^4.0.1" 1258 | }, 1259 | "engines": { 1260 | "node": ">= 6" 1261 | } 1262 | }, 1263 | "node_modules/fastq": { 1264 | "version": "1.17.1", 1265 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", 1266 | "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", 1267 | "dev": true, 1268 | "dependencies": { 1269 | "reusify": "^1.0.4" 1270 | } 1271 | }, 1272 | "node_modules/fill-range": { 1273 | "version": "7.1.1", 1274 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1275 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1276 | "dev": true, 1277 | "dependencies": { 1278 | "to-regex-range": "^5.0.1" 1279 | }, 1280 | "engines": { 1281 | "node": ">=8" 1282 | } 1283 | }, 1284 | "node_modules/foreground-child": { 1285 | "version": "3.3.0", 1286 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 1287 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 1288 | "dev": true, 1289 | "dependencies": { 1290 | "cross-spawn": "^7.0.0", 1291 | "signal-exit": "^4.0.1" 1292 | }, 1293 | "engines": { 1294 | "node": ">=14" 1295 | }, 1296 | "funding": { 1297 | "url": "https://github.com/sponsors/isaacs" 1298 | } 1299 | }, 1300 | "node_modules/fraction.js": { 1301 | "version": "4.3.7", 1302 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", 1303 | "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", 1304 | "dev": true, 1305 | "engines": { 1306 | "node": "*" 1307 | }, 1308 | "funding": { 1309 | "type": "patreon", 1310 | "url": "https://github.com/sponsors/rawify" 1311 | } 1312 | }, 1313 | "node_modules/fsevents": { 1314 | "version": "2.3.3", 1315 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1316 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1317 | "dev": true, 1318 | "hasInstallScript": true, 1319 | "optional": true, 1320 | "os": [ 1321 | "darwin" 1322 | ], 1323 | "engines": { 1324 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1325 | } 1326 | }, 1327 | "node_modules/function-bind": { 1328 | "version": "1.1.2", 1329 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", 1330 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", 1331 | "dev": true, 1332 | "funding": { 1333 | "url": "https://github.com/sponsors/ljharb" 1334 | } 1335 | }, 1336 | "node_modules/glob": { 1337 | "version": "10.4.5", 1338 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1339 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1340 | "dev": true, 1341 | "dependencies": { 1342 | "foreground-child": "^3.1.0", 1343 | "jackspeak": "^3.1.2", 1344 | "minimatch": "^9.0.4", 1345 | "minipass": "^7.1.2", 1346 | "package-json-from-dist": "^1.0.0", 1347 | "path-scurry": "^1.11.1" 1348 | }, 1349 | "bin": { 1350 | "glob": "dist/esm/bin.mjs" 1351 | }, 1352 | "funding": { 1353 | "url": "https://github.com/sponsors/isaacs" 1354 | } 1355 | }, 1356 | "node_modules/glob-parent": { 1357 | "version": "6.0.2", 1358 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 1359 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 1360 | "dev": true, 1361 | "dependencies": { 1362 | "is-glob": "^4.0.3" 1363 | }, 1364 | "engines": { 1365 | "node": ">=10.13.0" 1366 | } 1367 | }, 1368 | "node_modules/hasown": { 1369 | "version": "2.0.2", 1370 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 1371 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", 1372 | "dev": true, 1373 | "dependencies": { 1374 | "function-bind": "^1.1.2" 1375 | }, 1376 | "engines": { 1377 | "node": ">= 0.4" 1378 | } 1379 | }, 1380 | "node_modules/is-binary-path": { 1381 | "version": "2.1.0", 1382 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1383 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1384 | "dev": true, 1385 | "dependencies": { 1386 | "binary-extensions": "^2.0.0" 1387 | }, 1388 | "engines": { 1389 | "node": ">=8" 1390 | } 1391 | }, 1392 | "node_modules/is-core-module": { 1393 | "version": "2.15.0", 1394 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", 1395 | "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", 1396 | "dev": true, 1397 | "dependencies": { 1398 | "hasown": "^2.0.2" 1399 | }, 1400 | "engines": { 1401 | "node": ">= 0.4" 1402 | }, 1403 | "funding": { 1404 | "url": "https://github.com/sponsors/ljharb" 1405 | } 1406 | }, 1407 | "node_modules/is-extglob": { 1408 | "version": "2.1.1", 1409 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1410 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1411 | "dev": true, 1412 | "engines": { 1413 | "node": ">=0.10.0" 1414 | } 1415 | }, 1416 | "node_modules/is-fullwidth-code-point": { 1417 | "version": "3.0.0", 1418 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1419 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1420 | "dev": true, 1421 | "engines": { 1422 | "node": ">=8" 1423 | } 1424 | }, 1425 | "node_modules/is-glob": { 1426 | "version": "4.0.3", 1427 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1428 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1429 | "dev": true, 1430 | "dependencies": { 1431 | "is-extglob": "^2.1.1" 1432 | }, 1433 | "engines": { 1434 | "node": ">=0.10.0" 1435 | } 1436 | }, 1437 | "node_modules/is-number": { 1438 | "version": "7.0.0", 1439 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1440 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1441 | "dev": true, 1442 | "engines": { 1443 | "node": ">=0.12.0" 1444 | } 1445 | }, 1446 | "node_modules/is-reference": { 1447 | "version": "3.0.2", 1448 | "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", 1449 | "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", 1450 | "dev": true, 1451 | "dependencies": { 1452 | "@types/estree": "*" 1453 | } 1454 | }, 1455 | "node_modules/isexe": { 1456 | "version": "2.0.0", 1457 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1458 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1459 | "dev": true 1460 | }, 1461 | "node_modules/jackspeak": { 1462 | "version": "3.4.3", 1463 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1464 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1465 | "dev": true, 1466 | "dependencies": { 1467 | "@isaacs/cliui": "^8.0.2" 1468 | }, 1469 | "funding": { 1470 | "url": "https://github.com/sponsors/isaacs" 1471 | }, 1472 | "optionalDependencies": { 1473 | "@pkgjs/parseargs": "^0.11.0" 1474 | } 1475 | }, 1476 | "node_modules/jiti": { 1477 | "version": "1.21.6", 1478 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", 1479 | "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", 1480 | "dev": true, 1481 | "bin": { 1482 | "jiti": "bin/jiti.js" 1483 | } 1484 | }, 1485 | "node_modules/kleur": { 1486 | "version": "4.1.5", 1487 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1488 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1489 | "dev": true, 1490 | "engines": { 1491 | "node": ">=6" 1492 | } 1493 | }, 1494 | "node_modules/lilconfig": { 1495 | "version": "2.1.0", 1496 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", 1497 | "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", 1498 | "dev": true, 1499 | "engines": { 1500 | "node": ">=10" 1501 | } 1502 | }, 1503 | "node_modules/lines-and-columns": { 1504 | "version": "1.2.4", 1505 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1506 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", 1507 | "dev": true 1508 | }, 1509 | "node_modules/locate-character": { 1510 | "version": "3.0.0", 1511 | "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", 1512 | "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==", 1513 | "dev": true 1514 | }, 1515 | "node_modules/lru-cache": { 1516 | "version": "10.4.3", 1517 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 1518 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 1519 | "dev": true 1520 | }, 1521 | "node_modules/magic-string": { 1522 | "version": "0.30.11", 1523 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", 1524 | "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", 1525 | "dev": true, 1526 | "dependencies": { 1527 | "@jridgewell/sourcemap-codec": "^1.5.0" 1528 | } 1529 | }, 1530 | "node_modules/mdn-data": { 1531 | "version": "2.0.30", 1532 | "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", 1533 | "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", 1534 | "dev": true 1535 | }, 1536 | "node_modules/merge2": { 1537 | "version": "1.4.1", 1538 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1539 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1540 | "dev": true, 1541 | "engines": { 1542 | "node": ">= 8" 1543 | } 1544 | }, 1545 | "node_modules/micromatch": { 1546 | "version": "4.0.7", 1547 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", 1548 | "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", 1549 | "dev": true, 1550 | "dependencies": { 1551 | "braces": "^3.0.3", 1552 | "picomatch": "^2.3.1" 1553 | }, 1554 | "engines": { 1555 | "node": ">=8.6" 1556 | } 1557 | }, 1558 | "node_modules/minimatch": { 1559 | "version": "9.0.5", 1560 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1561 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1562 | "dev": true, 1563 | "dependencies": { 1564 | "brace-expansion": "^2.0.1" 1565 | }, 1566 | "engines": { 1567 | "node": ">=16 || 14 >=14.17" 1568 | }, 1569 | "funding": { 1570 | "url": "https://github.com/sponsors/isaacs" 1571 | } 1572 | }, 1573 | "node_modules/minipass": { 1574 | "version": "7.1.2", 1575 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 1576 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 1577 | "dev": true, 1578 | "engines": { 1579 | "node": ">=16 || 14 >=14.17" 1580 | } 1581 | }, 1582 | "node_modules/ms": { 1583 | "version": "2.1.2", 1584 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1585 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1586 | "dev": true 1587 | }, 1588 | "node_modules/mz": { 1589 | "version": "2.7.0", 1590 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 1591 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", 1592 | "dev": true, 1593 | "dependencies": { 1594 | "any-promise": "^1.0.0", 1595 | "object-assign": "^4.0.1", 1596 | "thenify-all": "^1.0.0" 1597 | } 1598 | }, 1599 | "node_modules/nanoid": { 1600 | "version": "3.3.7", 1601 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1602 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 1603 | "dev": true, 1604 | "funding": [ 1605 | { 1606 | "type": "github", 1607 | "url": "https://github.com/sponsors/ai" 1608 | } 1609 | ], 1610 | "bin": { 1611 | "nanoid": "bin/nanoid.cjs" 1612 | }, 1613 | "engines": { 1614 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1615 | } 1616 | }, 1617 | "node_modules/node-releases": { 1618 | "version": "2.0.18", 1619 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", 1620 | "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", 1621 | "dev": true 1622 | }, 1623 | "node_modules/normalize-path": { 1624 | "version": "3.0.0", 1625 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1626 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1627 | "dev": true, 1628 | "engines": { 1629 | "node": ">=0.10.0" 1630 | } 1631 | }, 1632 | "node_modules/normalize-range": { 1633 | "version": "0.1.2", 1634 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 1635 | "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", 1636 | "dev": true, 1637 | "engines": { 1638 | "node": ">=0.10.0" 1639 | } 1640 | }, 1641 | "node_modules/object-assign": { 1642 | "version": "4.1.1", 1643 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1644 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 1645 | "dev": true, 1646 | "engines": { 1647 | "node": ">=0.10.0" 1648 | } 1649 | }, 1650 | "node_modules/object-hash": { 1651 | "version": "3.0.0", 1652 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", 1653 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", 1654 | "dev": true, 1655 | "engines": { 1656 | "node": ">= 6" 1657 | } 1658 | }, 1659 | "node_modules/package-json-from-dist": { 1660 | "version": "1.0.0", 1661 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 1662 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", 1663 | "dev": true 1664 | }, 1665 | "node_modules/path-key": { 1666 | "version": "3.1.1", 1667 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1668 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1669 | "dev": true, 1670 | "engines": { 1671 | "node": ">=8" 1672 | } 1673 | }, 1674 | "node_modules/path-parse": { 1675 | "version": "1.0.7", 1676 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1677 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1678 | "dev": true 1679 | }, 1680 | "node_modules/path-scurry": { 1681 | "version": "1.11.1", 1682 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1683 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1684 | "dev": true, 1685 | "dependencies": { 1686 | "lru-cache": "^10.2.0", 1687 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1688 | }, 1689 | "engines": { 1690 | "node": ">=16 || 14 >=14.18" 1691 | }, 1692 | "funding": { 1693 | "url": "https://github.com/sponsors/isaacs" 1694 | } 1695 | }, 1696 | "node_modules/periscopic": { 1697 | "version": "3.1.0", 1698 | "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", 1699 | "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", 1700 | "dev": true, 1701 | "dependencies": { 1702 | "@types/estree": "^1.0.0", 1703 | "estree-walker": "^3.0.0", 1704 | "is-reference": "^3.0.0" 1705 | } 1706 | }, 1707 | "node_modules/picocolors": { 1708 | "version": "1.0.1", 1709 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", 1710 | "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", 1711 | "dev": true 1712 | }, 1713 | "node_modules/picomatch": { 1714 | "version": "2.3.1", 1715 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1716 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1717 | "dev": true, 1718 | "engines": { 1719 | "node": ">=8.6" 1720 | }, 1721 | "funding": { 1722 | "url": "https://github.com/sponsors/jonschlinkert" 1723 | } 1724 | }, 1725 | "node_modules/pify": { 1726 | "version": "2.3.0", 1727 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1728 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", 1729 | "dev": true, 1730 | "engines": { 1731 | "node": ">=0.10.0" 1732 | } 1733 | }, 1734 | "node_modules/pirates": { 1735 | "version": "4.0.6", 1736 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 1737 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 1738 | "dev": true, 1739 | "engines": { 1740 | "node": ">= 6" 1741 | } 1742 | }, 1743 | "node_modules/postcss": { 1744 | "version": "8.4.41", 1745 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", 1746 | "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", 1747 | "dev": true, 1748 | "funding": [ 1749 | { 1750 | "type": "opencollective", 1751 | "url": "https://opencollective.com/postcss/" 1752 | }, 1753 | { 1754 | "type": "tidelift", 1755 | "url": "https://tidelift.com/funding/github/npm/postcss" 1756 | }, 1757 | { 1758 | "type": "github", 1759 | "url": "https://github.com/sponsors/ai" 1760 | } 1761 | ], 1762 | "dependencies": { 1763 | "nanoid": "^3.3.7", 1764 | "picocolors": "^1.0.1", 1765 | "source-map-js": "^1.2.0" 1766 | }, 1767 | "engines": { 1768 | "node": "^10 || ^12 || >=14" 1769 | } 1770 | }, 1771 | "node_modules/postcss-import": { 1772 | "version": "15.1.0", 1773 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", 1774 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", 1775 | "dev": true, 1776 | "dependencies": { 1777 | "postcss-value-parser": "^4.0.0", 1778 | "read-cache": "^1.0.0", 1779 | "resolve": "^1.1.7" 1780 | }, 1781 | "engines": { 1782 | "node": ">=14.0.0" 1783 | }, 1784 | "peerDependencies": { 1785 | "postcss": "^8.0.0" 1786 | } 1787 | }, 1788 | "node_modules/postcss-js": { 1789 | "version": "4.0.1", 1790 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", 1791 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", 1792 | "dev": true, 1793 | "dependencies": { 1794 | "camelcase-css": "^2.0.1" 1795 | }, 1796 | "engines": { 1797 | "node": "^12 || ^14 || >= 16" 1798 | }, 1799 | "funding": { 1800 | "type": "opencollective", 1801 | "url": "https://opencollective.com/postcss/" 1802 | }, 1803 | "peerDependencies": { 1804 | "postcss": "^8.4.21" 1805 | } 1806 | }, 1807 | "node_modules/postcss-load-config": { 1808 | "version": "4.0.2", 1809 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", 1810 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", 1811 | "dev": true, 1812 | "funding": [ 1813 | { 1814 | "type": "opencollective", 1815 | "url": "https://opencollective.com/postcss/" 1816 | }, 1817 | { 1818 | "type": "github", 1819 | "url": "https://github.com/sponsors/ai" 1820 | } 1821 | ], 1822 | "dependencies": { 1823 | "lilconfig": "^3.0.0", 1824 | "yaml": "^2.3.4" 1825 | }, 1826 | "engines": { 1827 | "node": ">= 14" 1828 | }, 1829 | "peerDependencies": { 1830 | "postcss": ">=8.0.9", 1831 | "ts-node": ">=9.0.0" 1832 | }, 1833 | "peerDependenciesMeta": { 1834 | "postcss": { 1835 | "optional": true 1836 | }, 1837 | "ts-node": { 1838 | "optional": true 1839 | } 1840 | } 1841 | }, 1842 | "node_modules/postcss-load-config/node_modules/lilconfig": { 1843 | "version": "3.1.2", 1844 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", 1845 | "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", 1846 | "dev": true, 1847 | "engines": { 1848 | "node": ">=14" 1849 | }, 1850 | "funding": { 1851 | "url": "https://github.com/sponsors/antonk52" 1852 | } 1853 | }, 1854 | "node_modules/postcss-nested": { 1855 | "version": "6.2.0", 1856 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", 1857 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", 1858 | "dev": true, 1859 | "funding": [ 1860 | { 1861 | "type": "opencollective", 1862 | "url": "https://opencollective.com/postcss/" 1863 | }, 1864 | { 1865 | "type": "github", 1866 | "url": "https://github.com/sponsors/ai" 1867 | } 1868 | ], 1869 | "dependencies": { 1870 | "postcss-selector-parser": "^6.1.1" 1871 | }, 1872 | "engines": { 1873 | "node": ">=12.0" 1874 | }, 1875 | "peerDependencies": { 1876 | "postcss": "^8.2.14" 1877 | } 1878 | }, 1879 | "node_modules/postcss-selector-parser": { 1880 | "version": "6.1.2", 1881 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", 1882 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", 1883 | "dev": true, 1884 | "dependencies": { 1885 | "cssesc": "^3.0.0", 1886 | "util-deprecate": "^1.0.2" 1887 | }, 1888 | "engines": { 1889 | "node": ">=4" 1890 | } 1891 | }, 1892 | "node_modules/postcss-value-parser": { 1893 | "version": "4.2.0", 1894 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1895 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 1896 | "dev": true 1897 | }, 1898 | "node_modules/queue-microtask": { 1899 | "version": "1.2.3", 1900 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1901 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1902 | "dev": true, 1903 | "funding": [ 1904 | { 1905 | "type": "github", 1906 | "url": "https://github.com/sponsors/feross" 1907 | }, 1908 | { 1909 | "type": "patreon", 1910 | "url": "https://www.patreon.com/feross" 1911 | }, 1912 | { 1913 | "type": "consulting", 1914 | "url": "https://feross.org/support" 1915 | } 1916 | ] 1917 | }, 1918 | "node_modules/read-cache": { 1919 | "version": "1.0.0", 1920 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", 1921 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", 1922 | "dev": true, 1923 | "dependencies": { 1924 | "pify": "^2.3.0" 1925 | } 1926 | }, 1927 | "node_modules/readdirp": { 1928 | "version": "3.6.0", 1929 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1930 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1931 | "dev": true, 1932 | "dependencies": { 1933 | "picomatch": "^2.2.1" 1934 | }, 1935 | "engines": { 1936 | "node": ">=8.10.0" 1937 | } 1938 | }, 1939 | "node_modules/resolve": { 1940 | "version": "1.22.8", 1941 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", 1942 | "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", 1943 | "dev": true, 1944 | "dependencies": { 1945 | "is-core-module": "^2.13.0", 1946 | "path-parse": "^1.0.7", 1947 | "supports-preserve-symlinks-flag": "^1.0.0" 1948 | }, 1949 | "bin": { 1950 | "resolve": "bin/resolve" 1951 | }, 1952 | "funding": { 1953 | "url": "https://github.com/sponsors/ljharb" 1954 | } 1955 | }, 1956 | "node_modules/reusify": { 1957 | "version": "1.0.4", 1958 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1959 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1960 | "dev": true, 1961 | "engines": { 1962 | "iojs": ">=1.0.0", 1963 | "node": ">=0.10.0" 1964 | } 1965 | }, 1966 | "node_modules/rollup": { 1967 | "version": "4.20.0", 1968 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz", 1969 | "integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==", 1970 | "dev": true, 1971 | "dependencies": { 1972 | "@types/estree": "1.0.5" 1973 | }, 1974 | "bin": { 1975 | "rollup": "dist/bin/rollup" 1976 | }, 1977 | "engines": { 1978 | "node": ">=18.0.0", 1979 | "npm": ">=8.0.0" 1980 | }, 1981 | "optionalDependencies": { 1982 | "@rollup/rollup-android-arm-eabi": "4.20.0", 1983 | "@rollup/rollup-android-arm64": "4.20.0", 1984 | "@rollup/rollup-darwin-arm64": "4.20.0", 1985 | "@rollup/rollup-darwin-x64": "4.20.0", 1986 | "@rollup/rollup-linux-arm-gnueabihf": "4.20.0", 1987 | "@rollup/rollup-linux-arm-musleabihf": "4.20.0", 1988 | "@rollup/rollup-linux-arm64-gnu": "4.20.0", 1989 | "@rollup/rollup-linux-arm64-musl": "4.20.0", 1990 | "@rollup/rollup-linux-powerpc64le-gnu": "4.20.0", 1991 | "@rollup/rollup-linux-riscv64-gnu": "4.20.0", 1992 | "@rollup/rollup-linux-s390x-gnu": "4.20.0", 1993 | "@rollup/rollup-linux-x64-gnu": "4.20.0", 1994 | "@rollup/rollup-linux-x64-musl": "4.20.0", 1995 | "@rollup/rollup-win32-arm64-msvc": "4.20.0", 1996 | "@rollup/rollup-win32-ia32-msvc": "4.20.0", 1997 | "@rollup/rollup-win32-x64-msvc": "4.20.0", 1998 | "fsevents": "~2.3.2" 1999 | } 2000 | }, 2001 | "node_modules/run-parallel": { 2002 | "version": "1.2.0", 2003 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 2004 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 2005 | "dev": true, 2006 | "funding": [ 2007 | { 2008 | "type": "github", 2009 | "url": "https://github.com/sponsors/feross" 2010 | }, 2011 | { 2012 | "type": "patreon", 2013 | "url": "https://www.patreon.com/feross" 2014 | }, 2015 | { 2016 | "type": "consulting", 2017 | "url": "https://feross.org/support" 2018 | } 2019 | ], 2020 | "dependencies": { 2021 | "queue-microtask": "^1.2.2" 2022 | } 2023 | }, 2024 | "node_modules/shebang-command": { 2025 | "version": "2.0.0", 2026 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 2027 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 2028 | "dev": true, 2029 | "dependencies": { 2030 | "shebang-regex": "^3.0.0" 2031 | }, 2032 | "engines": { 2033 | "node": ">=8" 2034 | } 2035 | }, 2036 | "node_modules/shebang-regex": { 2037 | "version": "3.0.0", 2038 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 2039 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 2040 | "dev": true, 2041 | "engines": { 2042 | "node": ">=8" 2043 | } 2044 | }, 2045 | "node_modules/signal-exit": { 2046 | "version": "4.1.0", 2047 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 2048 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 2049 | "dev": true, 2050 | "engines": { 2051 | "node": ">=14" 2052 | }, 2053 | "funding": { 2054 | "url": "https://github.com/sponsors/isaacs" 2055 | } 2056 | }, 2057 | "node_modules/source-map-js": { 2058 | "version": "1.2.0", 2059 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", 2060 | "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", 2061 | "dev": true, 2062 | "engines": { 2063 | "node": ">=0.10.0" 2064 | } 2065 | }, 2066 | "node_modules/string-width": { 2067 | "version": "5.1.2", 2068 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 2069 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 2070 | "dev": true, 2071 | "dependencies": { 2072 | "eastasianwidth": "^0.2.0", 2073 | "emoji-regex": "^9.2.2", 2074 | "strip-ansi": "^7.0.1" 2075 | }, 2076 | "engines": { 2077 | "node": ">=12" 2078 | }, 2079 | "funding": { 2080 | "url": "https://github.com/sponsors/sindresorhus" 2081 | } 2082 | }, 2083 | "node_modules/string-width-cjs": { 2084 | "name": "string-width", 2085 | "version": "4.2.3", 2086 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2087 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2088 | "dev": true, 2089 | "dependencies": { 2090 | "emoji-regex": "^8.0.0", 2091 | "is-fullwidth-code-point": "^3.0.0", 2092 | "strip-ansi": "^6.0.1" 2093 | }, 2094 | "engines": { 2095 | "node": ">=8" 2096 | } 2097 | }, 2098 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 2099 | "version": "5.0.1", 2100 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2101 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2102 | "dev": true, 2103 | "engines": { 2104 | "node": ">=8" 2105 | } 2106 | }, 2107 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 2108 | "version": "8.0.0", 2109 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2110 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2111 | "dev": true 2112 | }, 2113 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 2114 | "version": "6.0.1", 2115 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2116 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2117 | "dev": true, 2118 | "dependencies": { 2119 | "ansi-regex": "^5.0.1" 2120 | }, 2121 | "engines": { 2122 | "node": ">=8" 2123 | } 2124 | }, 2125 | "node_modules/strip-ansi": { 2126 | "version": "7.1.0", 2127 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 2128 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 2129 | "dev": true, 2130 | "dependencies": { 2131 | "ansi-regex": "^6.0.1" 2132 | }, 2133 | "engines": { 2134 | "node": ">=12" 2135 | }, 2136 | "funding": { 2137 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 2138 | } 2139 | }, 2140 | "node_modules/strip-ansi-cjs": { 2141 | "name": "strip-ansi", 2142 | "version": "6.0.1", 2143 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2144 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2145 | "dev": true, 2146 | "dependencies": { 2147 | "ansi-regex": "^5.0.1" 2148 | }, 2149 | "engines": { 2150 | "node": ">=8" 2151 | } 2152 | }, 2153 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 2154 | "version": "5.0.1", 2155 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2156 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2157 | "dev": true, 2158 | "engines": { 2159 | "node": ">=8" 2160 | } 2161 | }, 2162 | "node_modules/sucrase": { 2163 | "version": "3.35.0", 2164 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", 2165 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", 2166 | "dev": true, 2167 | "dependencies": { 2168 | "@jridgewell/gen-mapping": "^0.3.2", 2169 | "commander": "^4.0.0", 2170 | "glob": "^10.3.10", 2171 | "lines-and-columns": "^1.1.6", 2172 | "mz": "^2.7.0", 2173 | "pirates": "^4.0.1", 2174 | "ts-interface-checker": "^0.1.9" 2175 | }, 2176 | "bin": { 2177 | "sucrase": "bin/sucrase", 2178 | "sucrase-node": "bin/sucrase-node" 2179 | }, 2180 | "engines": { 2181 | "node": ">=16 || 14 >=14.17" 2182 | } 2183 | }, 2184 | "node_modules/supports-preserve-symlinks-flag": { 2185 | "version": "1.0.0", 2186 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 2187 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 2188 | "dev": true, 2189 | "engines": { 2190 | "node": ">= 0.4" 2191 | }, 2192 | "funding": { 2193 | "url": "https://github.com/sponsors/ljharb" 2194 | } 2195 | }, 2196 | "node_modules/svelte": { 2197 | "version": "4.2.18", 2198 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.18.tgz", 2199 | "integrity": "sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==", 2200 | "dev": true, 2201 | "dependencies": { 2202 | "@ampproject/remapping": "^2.2.1", 2203 | "@jridgewell/sourcemap-codec": "^1.4.15", 2204 | "@jridgewell/trace-mapping": "^0.3.18", 2205 | "@types/estree": "^1.0.1", 2206 | "acorn": "^8.9.0", 2207 | "aria-query": "^5.3.0", 2208 | "axobject-query": "^4.0.0", 2209 | "code-red": "^1.0.3", 2210 | "css-tree": "^2.3.1", 2211 | "estree-walker": "^3.0.3", 2212 | "is-reference": "^3.0.1", 2213 | "locate-character": "^3.0.0", 2214 | "magic-string": "^0.30.4", 2215 | "periscopic": "^3.1.0" 2216 | }, 2217 | "engines": { 2218 | "node": ">=16" 2219 | } 2220 | }, 2221 | "node_modules/svelte-hmr": { 2222 | "version": "0.16.0", 2223 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", 2224 | "integrity": "sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==", 2225 | "dev": true, 2226 | "engines": { 2227 | "node": "^12.20 || ^14.13.1 || >= 16" 2228 | }, 2229 | "peerDependencies": { 2230 | "svelte": "^3.19.0 || ^4.0.0" 2231 | } 2232 | }, 2233 | "node_modules/tailwindcss": { 2234 | "version": "3.4.10", 2235 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", 2236 | "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", 2237 | "dev": true, 2238 | "dependencies": { 2239 | "@alloc/quick-lru": "^5.2.0", 2240 | "arg": "^5.0.2", 2241 | "chokidar": "^3.5.3", 2242 | "didyoumean": "^1.2.2", 2243 | "dlv": "^1.1.3", 2244 | "fast-glob": "^3.3.0", 2245 | "glob-parent": "^6.0.2", 2246 | "is-glob": "^4.0.3", 2247 | "jiti": "^1.21.0", 2248 | "lilconfig": "^2.1.0", 2249 | "micromatch": "^4.0.5", 2250 | "normalize-path": "^3.0.0", 2251 | "object-hash": "^3.0.0", 2252 | "picocolors": "^1.0.0", 2253 | "postcss": "^8.4.23", 2254 | "postcss-import": "^15.1.0", 2255 | "postcss-js": "^4.0.1", 2256 | "postcss-load-config": "^4.0.1", 2257 | "postcss-nested": "^6.0.1", 2258 | "postcss-selector-parser": "^6.0.11", 2259 | "resolve": "^1.22.2", 2260 | "sucrase": "^3.32.0" 2261 | }, 2262 | "bin": { 2263 | "tailwind": "lib/cli.js", 2264 | "tailwindcss": "lib/cli.js" 2265 | }, 2266 | "engines": { 2267 | "node": ">=14.0.0" 2268 | } 2269 | }, 2270 | "node_modules/thenify": { 2271 | "version": "3.3.1", 2272 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", 2273 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", 2274 | "dev": true, 2275 | "dependencies": { 2276 | "any-promise": "^1.0.0" 2277 | } 2278 | }, 2279 | "node_modules/thenify-all": { 2280 | "version": "1.6.0", 2281 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", 2282 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", 2283 | "dev": true, 2284 | "dependencies": { 2285 | "thenify": ">= 3.1.0 < 4" 2286 | }, 2287 | "engines": { 2288 | "node": ">=0.8" 2289 | } 2290 | }, 2291 | "node_modules/to-regex-range": { 2292 | "version": "5.0.1", 2293 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 2294 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 2295 | "dev": true, 2296 | "dependencies": { 2297 | "is-number": "^7.0.0" 2298 | }, 2299 | "engines": { 2300 | "node": ">=8.0" 2301 | } 2302 | }, 2303 | "node_modules/ts-interface-checker": { 2304 | "version": "0.1.13", 2305 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", 2306 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", 2307 | "dev": true 2308 | }, 2309 | "node_modules/update-browserslist-db": { 2310 | "version": "1.1.0", 2311 | "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", 2312 | "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", 2313 | "dev": true, 2314 | "funding": [ 2315 | { 2316 | "type": "opencollective", 2317 | "url": "https://opencollective.com/browserslist" 2318 | }, 2319 | { 2320 | "type": "tidelift", 2321 | "url": "https://tidelift.com/funding/github/npm/browserslist" 2322 | }, 2323 | { 2324 | "type": "github", 2325 | "url": "https://github.com/sponsors/ai" 2326 | } 2327 | ], 2328 | "dependencies": { 2329 | "escalade": "^3.1.2", 2330 | "picocolors": "^1.0.1" 2331 | }, 2332 | "bin": { 2333 | "update-browserslist-db": "cli.js" 2334 | }, 2335 | "peerDependencies": { 2336 | "browserslist": ">= 4.21.0" 2337 | } 2338 | }, 2339 | "node_modules/util-deprecate": { 2340 | "version": "1.0.2", 2341 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2342 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", 2343 | "dev": true 2344 | }, 2345 | "node_modules/vite": { 2346 | "version": "5.4.1", 2347 | "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz", 2348 | "integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==", 2349 | "dev": true, 2350 | "dependencies": { 2351 | "esbuild": "^0.21.3", 2352 | "postcss": "^8.4.41", 2353 | "rollup": "^4.13.0" 2354 | }, 2355 | "bin": { 2356 | "vite": "bin/vite.js" 2357 | }, 2358 | "engines": { 2359 | "node": "^18.0.0 || >=20.0.0" 2360 | }, 2361 | "funding": { 2362 | "url": "https://github.com/vitejs/vite?sponsor=1" 2363 | }, 2364 | "optionalDependencies": { 2365 | "fsevents": "~2.3.3" 2366 | }, 2367 | "peerDependencies": { 2368 | "@types/node": "^18.0.0 || >=20.0.0", 2369 | "less": "*", 2370 | "lightningcss": "^1.21.0", 2371 | "sass": "*", 2372 | "sass-embedded": "*", 2373 | "stylus": "*", 2374 | "sugarss": "*", 2375 | "terser": "^5.4.0" 2376 | }, 2377 | "peerDependenciesMeta": { 2378 | "@types/node": { 2379 | "optional": true 2380 | }, 2381 | "less": { 2382 | "optional": true 2383 | }, 2384 | "lightningcss": { 2385 | "optional": true 2386 | }, 2387 | "sass": { 2388 | "optional": true 2389 | }, 2390 | "sass-embedded": { 2391 | "optional": true 2392 | }, 2393 | "stylus": { 2394 | "optional": true 2395 | }, 2396 | "sugarss": { 2397 | "optional": true 2398 | }, 2399 | "terser": { 2400 | "optional": true 2401 | } 2402 | } 2403 | }, 2404 | "node_modules/vitefu": { 2405 | "version": "0.2.5", 2406 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", 2407 | "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", 2408 | "dev": true, 2409 | "peerDependencies": { 2410 | "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" 2411 | }, 2412 | "peerDependenciesMeta": { 2413 | "vite": { 2414 | "optional": true 2415 | } 2416 | } 2417 | }, 2418 | "node_modules/which": { 2419 | "version": "2.0.2", 2420 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 2421 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 2422 | "dev": true, 2423 | "dependencies": { 2424 | "isexe": "^2.0.0" 2425 | }, 2426 | "bin": { 2427 | "node-which": "bin/node-which" 2428 | }, 2429 | "engines": { 2430 | "node": ">= 8" 2431 | } 2432 | }, 2433 | "node_modules/wrap-ansi": { 2434 | "version": "8.1.0", 2435 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 2436 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 2437 | "dev": true, 2438 | "dependencies": { 2439 | "ansi-styles": "^6.1.0", 2440 | "string-width": "^5.0.1", 2441 | "strip-ansi": "^7.0.1" 2442 | }, 2443 | "engines": { 2444 | "node": ">=12" 2445 | }, 2446 | "funding": { 2447 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2448 | } 2449 | }, 2450 | "node_modules/wrap-ansi-cjs": { 2451 | "name": "wrap-ansi", 2452 | "version": "7.0.0", 2453 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2454 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2455 | "dev": true, 2456 | "dependencies": { 2457 | "ansi-styles": "^4.0.0", 2458 | "string-width": "^4.1.0", 2459 | "strip-ansi": "^6.0.0" 2460 | }, 2461 | "engines": { 2462 | "node": ">=10" 2463 | }, 2464 | "funding": { 2465 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2466 | } 2467 | }, 2468 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 2469 | "version": "5.0.1", 2470 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 2471 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 2472 | "dev": true, 2473 | "engines": { 2474 | "node": ">=8" 2475 | } 2476 | }, 2477 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 2478 | "version": "4.3.0", 2479 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 2480 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 2481 | "dev": true, 2482 | "dependencies": { 2483 | "color-convert": "^2.0.1" 2484 | }, 2485 | "engines": { 2486 | "node": ">=8" 2487 | }, 2488 | "funding": { 2489 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 2490 | } 2491 | }, 2492 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 2493 | "version": "8.0.0", 2494 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 2495 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 2496 | "dev": true 2497 | }, 2498 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 2499 | "version": "4.2.3", 2500 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2501 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2502 | "dev": true, 2503 | "dependencies": { 2504 | "emoji-regex": "^8.0.0", 2505 | "is-fullwidth-code-point": "^3.0.0", 2506 | "strip-ansi": "^6.0.1" 2507 | }, 2508 | "engines": { 2509 | "node": ">=8" 2510 | } 2511 | }, 2512 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 2513 | "version": "6.0.1", 2514 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2515 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2516 | "dev": true, 2517 | "dependencies": { 2518 | "ansi-regex": "^5.0.1" 2519 | }, 2520 | "engines": { 2521 | "node": ">=8" 2522 | } 2523 | }, 2524 | "node_modules/yaml": { 2525 | "version": "2.5.0", 2526 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", 2527 | "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", 2528 | "dev": true, 2529 | "bin": { 2530 | "yaml": "bin.mjs" 2531 | }, 2532 | "engines": { 2533 | "node": ">= 14" 2534 | } 2535 | } 2536 | } 2537 | } 2538 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jobscalc-svelte-tailwindcss", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "devDependencies": { 12 | "@sveltejs/vite-plugin-svelte": "^3.1.1", 13 | "autoprefixer": "^10.4.20", 14 | "postcss": "^8.4.41", 15 | "svelte": "^4.2.18", 16 | "tailwindcss": "^3.4.8", 17 | "vite": "^5.4.0" 18 | }, 19 | "dependencies": { 20 | "dayjs": "^1.11.12" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/images/alert-octagon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/back.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/edit-24.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maykbrito/jobscalc-svelte-tailwindcss/e6697a1760bffe689a8ad629ce5625e17bd5232b/public/images/favicon.png -------------------------------------------------------------------------------- /public/images/logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /public/images/money-color.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /public/images/money-gray.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /public/images/play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /public/images/plus-24.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/plus-orange.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /public/images/trash-24.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/trash-48.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/App.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | {#if $app.page == "home"} 10 | 11 | {:else if $app.page == "profile"} 12 | 13 | {:else} 14 | 15 | {/if} 16 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; -------------------------------------------------------------------------------- /src/home/Card.svelte: -------------------------------------------------------------------------------- 1 | 25 | 26 |
47 |
48 | {project.name} 49 |
50 |
51 | Prazo 52 | 53 | {#if project.status == "em andamento"} 54 | 55 | {project.remainingDays} 56 | {project.remainingDays == "1" ? "dia" : "dias"} 57 | 58 | {:else} 59 | Esgotado 60 | {/if} 61 |
62 |
63 | Valor 64 | {projectValue} 65 |
66 |
69 | {#if project.status === "encerrado"} 70 |
Encerrado
71 | {:else} 72 |
Em andamento
73 | {/if} 74 |
75 |
76 |

Ações

77 | 84 | 91 |
92 |
93 | 94 | -------------------------------------------------------------------------------- /src/home/Header.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 90 | -------------------------------------------------------------------------------- /src/home/Home.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 |
9 |
-------------------------------------------------------------------------------- /src/home/Main.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 |

Trabalhos

13 | 14 |
15 | {#each $app.projects as project (project.id)} 16 | 17 | {/each} 18 |
19 | 20 |
21 |
22 | 23 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import './app.css' 2 | import App from './App.svelte' 3 | 4 | const app = new App({ 5 | target: document.getElementById('app'), 6 | }) 7 | 8 | export default app 9 | -------------------------------------------------------------------------------- /src/parts/Aside.svelte: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/parts/Header.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 |
12 | 15 |

{title}

16 |
17 |
18 | -------------------------------------------------------------------------------- /src/profile/Main.svelte: -------------------------------------------------------------------------------- 1 | 11 | 12 |
15 | 29 | 30 |
31 |

32 | Dados do perfil 33 |

34 | 35 |
36 |
37 | 38 | 45 |
46 | 47 |
48 | 51 | 59 |
60 |
61 | 62 |

63 | Planejamento 64 |

65 | 66 |
67 |
68 | 71 | 80 |
81 | 82 |
83 | 87 | 94 |
95 |
96 | 97 |
98 |
99 | 102 | 109 |
110 | 111 |
112 | 116 | 123 |
124 |
125 |
126 |
127 | 128 | -------------------------------------------------------------------------------- /src/profile/Profile.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 |
7 |
8 |
9 |
-------------------------------------------------------------------------------- /src/project/Main.svelte: -------------------------------------------------------------------------------- 1 | 6 | 7 |
8 |

9 | Dados do projeto 10 |

11 | 12 |
13 |
14 | 17 | 24 |
25 | 26 |
27 |
28 | 31 | 39 |
40 | 41 |
42 | 45 | 52 |
53 |
54 |
55 |
56 | -------------------------------------------------------------------------------- /src/project/Project.svelte: -------------------------------------------------------------------------------- 1 | 13 | 14 |
15 |
16 |
17 |
18 |
19 |
20 | 21 |
22 | 32 |
33 |
34 |
35 | -------------------------------------------------------------------------------- /src/scripts/calculate.js: -------------------------------------------------------------------------------- 1 | export class Calculate { 2 | constructor(app) { 3 | this.project = app.currentProject 4 | this.planning = app.planning 5 | this.projects = app.projects 6 | } 7 | 8 | get valueHour() { 9 | const weeksPerYear = 52 10 | const weeksPerMonth = (weeksPerYear - this.planning.vacationWeeks) / 12 11 | 12 | const weekTotalHours = this.planning.hoursPerDay * this.planning.daysAWeek 13 | 14 | const monthlyTotalHours = weekTotalHours * weeksPerMonth 15 | 16 | return +this.planning.monthlyIncome / +monthlyTotalHours 17 | } 18 | 19 | get formattedValueHour() { 20 | return Number(this.valueHour).toLocaleString('pt-br', { 21 | currency: 'BRL', style: 'currency' 22 | }) 23 | } 24 | 25 | get projectValue() { 26 | return Number(this.valueHour) * this.project.totalHours 27 | } 28 | 29 | get formattedProjectValue() { 30 | return Number(this.projectValue).toLocaleString('pt-br', { currency: 'BRL', style: 'currency' }) 31 | } 32 | 33 | get projectsTotalHours() { 34 | return this.projects.reduce((acc, project) => { 35 | return project.status === 'em andamento' 36 | ? acc + Number(project.dailyHours) 37 | : acc 38 | }, 0) 39 | } 40 | 41 | get freeHours() { 42 | return this.planning.hoursPerDay - this.projectsTotalHours 43 | } 44 | 45 | get projectsStatus() { 46 | 47 | return { 48 | total: this.projects.length, 49 | progress: this.projects.filter(project => project.status == 'em andamento').length, 50 | done: this.projects.filter(project => project.status == 'encerrado').length, 51 | } 52 | } 53 | } -------------------------------------------------------------------------------- /src/scripts/dayjs.js: -------------------------------------------------------------------------------- 1 | import dayjs from "dayjs"; 2 | // import ptBr from 'dayjs/locale/pt-br' 3 | 4 | // dayjs.locale(ptBr) 5 | 6 | export { dayjs } -------------------------------------------------------------------------------- /src/scripts/db.js: -------------------------------------------------------------------------------- 1 | export const DB = { 2 | init(initialData) { 3 | const data = DB.get() 4 | 5 | if (Object.keys(data).length === 0) { 6 | return DB.set(initialData) 7 | } 8 | 9 | return data 10 | }, 11 | 12 | get() { 13 | return JSON.parse(localStorage.getItem("@jobscalc:app")) || {} 14 | }, 15 | set(app = {}) { 16 | localStorage.setItem('@jobscalc:app', 17 | JSON.stringify(app)) 18 | 19 | return DB.get() 20 | } 21 | } -------------------------------------------------------------------------------- /src/scripts/project.js: -------------------------------------------------------------------------------- 1 | import { dayjs } from './dayjs.js' 2 | 3 | export class Project { 4 | constructor(name, dailyHours, totalHours) { 5 | this.id = crypto.randomUUID() 6 | this.name = name || 'Novo projeto' 7 | this.dailyHours = dailyHours || 1 8 | this.totalHours = totalHours || 2 9 | this.createdAt = new Date() 10 | } 11 | 12 | get remainingDays() { 13 | const totalDays = Math.ceil(this.totalHours / this.dailyHours) 14 | const daysPassed = dayjs().diff(this.createdAt, 'day') 15 | return totalDays - daysPassed 16 | } 17 | 18 | get status() { 19 | return this.remainingDays < 0 ? 'encerrado' : 'em andamento' 20 | } 21 | 22 | get deadline() { 23 | return dayjs() 24 | .add(this.remainingDays, 'day') 25 | .diff(this.createdAt, 'day') 26 | } 27 | } -------------------------------------------------------------------------------- /src/scripts/utils.js: -------------------------------------------------------------------------------- 1 | import { DB } from "./db"; 2 | 3 | function debounce(func, delay = 500) { 4 | let timeout; 5 | return function (...args) { 6 | clearTimeout(timeout) 7 | timeout = setTimeout(() => func(...args), delay) 8 | } 9 | } 10 | 11 | function autosave(data) { 12 | DB.set(data) 13 | } 14 | 15 | export const debouncedAutosave = debounce(autosave, 700) -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import { writable } from "svelte/store"; 2 | import { Project } from "./scripts/project"; 3 | import { DB } from "./scripts/db"; 4 | 5 | const createApp = (initialData) => { 6 | const data = DB.init(initialData) 7 | const app = writable(data) 8 | 9 | if (data.projects?.length > 0) { 10 | data.projects = data.projects.map(p => new Project(p.name, p.dailyHours, p.totalHours)) 11 | } 12 | 13 | return app 14 | } 15 | 16 | export const app = createApp({ 17 | user: { 18 | name: "Mayk Brito", 19 | avatar: "https://github.com/maykbrito.png" 20 | }, 21 | planning: { 22 | monthlyIncome: 50000, 23 | hoursPerDay: 12, 24 | daysAWeek: 6, 25 | vacationWeeks: 4, 26 | }, 27 | projects: [ 28 | new Project('Youtube Video', 1, 2), 29 | new Project('Site', 1, 2) 30 | ], 31 | page: "home", 32 | currentProject: new Project() 33 | }) -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import { vitePreprocess } from '@sveltejs/vite-plugin-svelte' 2 | 3 | export default { 4 | // Consult https://svelte.dev/docs#compile-time-svelte-preprocess 5 | // for more information about preprocessors 6 | preprocess: vitePreprocess(), 7 | } 8 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | 3 | const defaultTheme = require('tailwindcss/defaultTheme') 4 | 5 | export default { 6 | content: ['./src/**/*.{html,js,svelte,ts}'], 7 | theme: { 8 | extend: { 9 | fontFamily: { 10 | 'sans': ['"IBM Plex Sans"', ...defaultTheme.fontFamily.sans], 11 | } 12 | }, 13 | }, 14 | plugins: [], 15 | } 16 | 17 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import { svelte } from '@sveltejs/vite-plugin-svelte' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [svelte()], 7 | base: './' 8 | }) 9 | --------------------------------------------------------------------------------