From ce37db39920ed4a6fe341e89d25392f1fb0de91e Mon Sep 17 00:00:00 2001 From: South Drifted Date: Mon, 2 Dec 2024 06:47:37 +0800 Subject: [PATCH] [refactor] use Event Target class to implement fetch() progress (#17) --- ReadMe.md | 51 +- package.json | 29 +- pnpm-lock.yaml | 2029 +++++++++++++++-------------------- source/HTTPClient.ts | 5 +- source/HTTPRequest.ts | 119 +- source/polyfill.ts | 11 +- source/utility.ts | 110 +- test/Client.spec.ts | 68 ++ test/Request-Client.spec.ts | 129 +-- test/XMLHttpRequest.ts | 79 +- test/tsconfig.json | 7 + test/utility.spec.ts | 18 +- tsconfig.json | 12 +- 13 files changed, 1265 insertions(+), 1402 deletions(-) create mode 100644 test/Client.spec.ts create mode 100644 test/tsconfig.json diff --git a/ReadMe.md b/ReadMe.md index 96d36c5..75abd45 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -35,7 +35,7 @@ Automatic Parsed type: #### Installation -```shell +```powershell npm install koajax ``` @@ -55,15 +55,16 @@ npm install koajax #### Installation -```shell -npm install koajax jsdom +```powershell +npm install koajax core-js jsdom ``` #### `index.ts` ```javascript +import { polyfill } from 'koajax/source/polyfill'; + import { HTTPClient } from 'koajax'; -import { polyfill } from 'koajax/source/polyfill' const origin = 'https://your-target-origin.com'; @@ -80,7 +81,7 @@ polyfill(origin).then(() => { #### Execution -```shell +```powershell npx tsx index.ts ``` @@ -141,9 +142,44 @@ document.querySelector('input[type="file"]').onchange = async ({ }; ``` +#### Single HTTP request based on Fetch `duplex` streams + +> This experimental feature has [some limitations][7]. + +```diff +-import { request } from 'koajax'; ++import { requestFetch } from 'koajax'; + +document.querySelector('input[type="file"]').onchange = async ({ + target: { files } +}) => { + for (const file of files) { +- const { upload, download, response } = request({ ++ const { upload, download, response } = requestFetch({ + method: 'POST', + path: '/files', ++ headers: { ++ 'Content-Type': file.type, ++ 'Content-Length': file.size + '' ++ }, +- body: file, ++ body: file.stream(), + responseType: 'json' + }); + + for await (const { loaded } of upload) + console.log(`Upload ${file.name} : ${(loaded / file.size) * 100}%`); + + const { body } = await response; + + console.log(`Upload ${file.name} : ${body.url}`); + } +}; +``` + #### Multiple HTTP requests based on `Range` header -```shell +```powershell npm i native-file-system-adapter # Web standard API polyfill ``` @@ -176,7 +212,7 @@ document.querySelector('#download').onclick = async () => { ### Global Error fallback -```shell +```powershell npm install browser-unhandled-rejection # Web standard API polyfill ``` @@ -226,3 +262,4 @@ document.querySelector('input[type="file"]').onchange = async ({ [4]: https://www.jsdelivr.com/package/npm/koajax [5]: https://nodei.co/npm/koajax/ [6]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for-await...of#Iterating_over_async_generators +[7]: https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests#restrictions diff --git a/package.json b/package.json index 09b55fa..7b33fd5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "koajax", - "version": "3.0.3", + "version": "3.1.0", "license": "LGPL-3.0", "author": "shiy2008@gmail.com", "description": "HTTP Client based on Koa-like middlewares", @@ -25,36 +25,37 @@ "main": "dist/index.js", "module": "dist/index.esm.js", "dependencies": { - "@swc/helpers": "^0.5.13", - "core-js": "^3.38.1", + "@swc/helpers": "^0.5.15", "regenerator-runtime": "^0.14.1", "web-streams-polyfill": "^4.0.0", - "web-utility": "^4.4.1" + "web-utility": "^4.4.2" }, "peerDependencies": { + "core-js": ">=3", "jsdom": ">=21" }, "devDependencies": { - "@parcel/packager-ts": "~2.12.0", - "@parcel/transformer-typescript-types": "~2.12.0", - "@types/core-js": "^2.5.8", + "@parcel/packager-ts": "~2.13.2", + "@parcel/transformer-typescript-types": "~2.13.2", "@types/jest": "^29.5.14", "@types/jsdom": "^21.1.7", - "@types/node": "^20.17.1", + "@types/node": "^20.17.9", + "abortcontroller-polyfill": "^1.7.6", + "core-js": "^3.39.0", "cross-env": "^7.0.3", - "husky": "^9.1.6", + "husky": "^9.1.7", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jsdom": "^25.0.1", "lint-staged": "^15.2.10", "open-cli": "^8.0.0", - "parcel": "~2.12.0", - "prettier": "^3.3.3", + "parcel": "~2.13.2", + "prettier": "^3.4.1", "ts-jest": "^29.2.5", "ts-node": "^10.9.2", - "typedoc": "^0.26.10", - "typedoc-plugin-mdn-links": "^3.3.5", - "typescript": "~5.6.3" + "typedoc": "^0.27.2", + "typedoc-plugin-mdn-links": "^4.0.2", + "typescript": "~5.7.2" }, "prettier": { "singleQuote": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2f7712a..b8323fa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,11 +9,8 @@ importers: .: dependencies: '@swc/helpers': - specifier: ^0.5.13 - version: 0.5.13 - core-js: - specifier: ^3.38.1 - version: 3.38.1 + specifier: ^0.5.15 + version: 0.5.15 regenerator-runtime: specifier: ^0.14.1 version: 0.14.1 @@ -21,18 +18,15 @@ importers: specifier: ^4.0.0 version: 4.0.0 web-utility: - specifier: ^4.4.1 - version: 4.4.1(typescript@5.6.3) + specifier: ^4.4.2 + version: 4.4.2(typescript@5.7.2) devDependencies: '@parcel/packager-ts': - specifier: ~2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + specifier: ~2.13.2 + version: 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/transformer-typescript-types': - specifier: ~2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(typescript@5.6.3) - '@types/core-js': - specifier: ^2.5.8 - version: 2.5.8 + specifier: ~2.13.2 + version: 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(typescript@5.7.2) '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -40,17 +34,23 @@ importers: specifier: ^21.1.7 version: 21.1.7 '@types/node': - specifier: ^20.17.1 - version: 20.17.1 + specifier: ^20.17.9 + version: 20.17.9 + abortcontroller-polyfill: + specifier: ^1.7.6 + version: 1.7.6 + core-js: + specifier: ^3.39.0 + version: 3.39.0 cross-env: specifier: ^7.0.3 version: 7.0.3 husky: - specifier: ^9.1.6 - version: 9.1.6 + specifier: ^9.1.7 + version: 9.1.7 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + version: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -64,26 +64,26 @@ importers: specifier: ^8.0.0 version: 8.0.0 parcel: - specifier: ~2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) + specifier: ~2.13.2 + version: 2.13.2(@swc/helpers@0.5.15)(typescript@5.7.2) prettier: - specifier: ^3.3.3 - version: 3.3.3 + specifier: ^3.4.1 + version: 3.4.1 ts-jest: specifier: ^29.2.5 - version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)))(typescript@5.6.3) + version: 29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)))(typescript@5.7.2) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3) + version: 10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2) typedoc: - specifier: ^0.26.10 - version: 0.26.10(typescript@5.6.3) + specifier: ^0.27.2 + version: 0.27.2(typescript@5.7.2) typedoc-plugin-mdn-links: - specifier: ^3.3.5 - version: 3.3.5(typedoc@0.26.10(typescript@5.6.3)) + specifier: ^4.0.2 + version: 4.0.2(typedoc@0.27.2(typescript@5.7.2)) typescript: - specifier: ~5.6.3 - version: 5.6.3 + specifier: ~5.7.2 + version: 5.7.2 packages: @@ -91,20 +91,20 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@babel/code-frame@7.26.0': - resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.0': - resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.0': - resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} '@babel/helper-compilation-targets@7.25.9': @@ -141,8 +141,8 @@ packages: resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.1': - resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -256,6 +256,9 @@ packages: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} engines: {node: '>=12'} + '@gerrit0/mini-shiki@1.24.1': + resolution: {integrity: sha512-PNP/Gjv3VqU7z7DjRgO3F9Ok5frTKqtpV+LJW1RzMcr2zpRk0ulhEWnbcNGXzPC7BZyWMIHrkfQX2GZRfxrn6Q==} + '@istanbuljs/load-nyc-config@1.1.0': resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} engines: {node: '>=8'} @@ -421,331 +424,338 @@ packages: cpu: [x64] os: [win32] - '@parcel/bundler-default@2.12.0': - resolution: {integrity: sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/bundler-default@2.13.2': + resolution: {integrity: sha512-WY0LB1B7H6zIGXBtwssZRmzk788GzHoOGvMSIqgE/mZ0+jPF5V54zkjbhPBXj1fvoKOGlFy8Bm/gd/GnlQDdIg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/cache@2.12.0': - resolution: {integrity: sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==} - engines: {node: '>= 12.0.0'} + '@parcel/cache@2.13.2': + resolution: {integrity: sha512-Y0nWlCMWDSp1lxiPI5zCWTGD0InnVZ+IfqeyLWmROAqValYyd0QZCvnSljKJ144jWTr0jXxDveir+DVF8sAYaA==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/codeframe@2.12.0': - resolution: {integrity: sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==} - engines: {node: '>= 12.0.0'} + '@parcel/codeframe@2.13.2': + resolution: {integrity: sha512-qFMiS14orb6QSQj5/J/QN+gJElUfedVAKBTNkp9QB4i8ObdLHDqHRUzFb55ZQJI3G4vsxOOWAOUXGirtLwrxGQ==} + engines: {node: '>= 16.0.0'} - '@parcel/compressor-raw@2.12.0': - resolution: {integrity: sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/compressor-raw@2.13.2': + resolution: {integrity: sha512-HX51w7WlgQY2f30p3Le1B5nFsUrtEA1phvWEwQDm1gEC6OPmDrxNsFLWx18JdGlKWTaPYbAGXRMSOjUWU41N9w==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/config-default@2.12.0': - resolution: {integrity: sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==} + '@parcel/config-default@2.13.2': + resolution: {integrity: sha512-oTf69/Ikxb7b8uqdu4SasRnIn7e68dCSNW2PhXuBkHq2GgzTSnpSqCwur70wQwrHKHdNt9RtIjLQgC6oOs5aJQ==} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/core@2.12.0': - resolution: {integrity: sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==} - engines: {node: '>= 12.0.0'} + '@parcel/core@2.13.2': + resolution: {integrity: sha512-1zC5Au4z9or5XyP6ipfvJqHktuB0jD7WuxMcV1CWAZGARHKylLe+0ccl+Wx7HN5O+xAvfCDtTlKrATY8qyrIyw==} + engines: {node: '>= 16.0.0'} - '@parcel/diagnostic@2.12.0': - resolution: {integrity: sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==} - engines: {node: '>= 12.0.0'} + '@parcel/diagnostic@2.13.2': + resolution: {integrity: sha512-6Au0JEJ5SY2gYrY0/m0i0sTuqTvK0k2E9azhBJR+zzCREbUxLiDdLZ+vXAfLW7t/kPAcWtdNU0Bj7pnZcMiMXg==} + engines: {node: '>= 16.0.0'} - '@parcel/events@2.12.0': - resolution: {integrity: sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==} - engines: {node: '>= 12.0.0'} + '@parcel/events@2.13.2': + resolution: {integrity: sha512-BVB9hW1RGh/tMaDHfpa+uIgz5PMULorCnjmWr/KvrlhdUSUQoaPYfRcTDYrKhoKuNIKsWSnTGvXrxE53L5qo0w==} + engines: {node: '>= 16.0.0'} - '@parcel/fs@2.12.0': - resolution: {integrity: sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==} - engines: {node: '>= 12.0.0'} + '@parcel/feature-flags@2.13.2': + resolution: {integrity: sha512-cCwDAKD4Er24EkuQ+loVZXSURpM0gAGRsLJVoBtFiCSbB3nmIJJ6FLRwSBI/5OsOUExiUXDvSpfUCA5ldGTzbw==} + engines: {node: '>= 16.0.0'} + + '@parcel/fs@2.13.2': + resolution: {integrity: sha512-bdeIMuAXhMnROvqV55JWRUmjD438/T7h3r3NsFnkq+Mp4z2nuAn0STxbqDNxIgTMJHNunSDzncqRNMT7xJCe8A==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/graph@3.2.0': - resolution: {integrity: sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==} - engines: {node: '>= 12.0.0'} + '@parcel/graph@3.3.2': + resolution: {integrity: sha512-aAysQLRr8SOonSHWqdKHMJzfcrDFXKK8IYZEurlOzosiSgZXrAK7q8b8JcaJ4r84/jlvQYNYneNZeFQxKjHXkA==} + engines: {node: '>= 16.0.0'} - '@parcel/logger@2.12.0': - resolution: {integrity: sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==} - engines: {node: '>= 12.0.0'} + '@parcel/logger@2.13.2': + resolution: {integrity: sha512-SFVABAMqaT9jIDn4maPgaQQauPDz8fpoKUGEuLF44Q0aQFbBUy7vX7KYs/EvYSWZo4VyJcUDHvIInBlepA0/ZQ==} + engines: {node: '>= 16.0.0'} - '@parcel/markdown-ansi@2.12.0': - resolution: {integrity: sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==} - engines: {node: '>= 12.0.0'} + '@parcel/markdown-ansi@2.13.2': + resolution: {integrity: sha512-MIEoetfT/snk1GqWzBI3AhifV257i2xke9dvyQl14PPiMl+TlVhwnbQyA09WJBvDor+MuxZypHL7xoFdW8ff3A==} + engines: {node: '>= 16.0.0'} - '@parcel/namer-default@2.12.0': - resolution: {integrity: sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/namer-default@2.13.2': + resolution: {integrity: sha512-wHaaJZcZEZUaCylC88PqjN4BybJhnkpP5RYg1xGWBTzdxhZthxvDbeOI+0YZ4jZXrLyVNjPyPRwyx0ETlq8MKA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/node-resolver-core@3.3.0': - resolution: {integrity: sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==} - engines: {node: '>= 12.0.0'} + '@parcel/node-resolver-core@3.4.2': + resolution: {integrity: sha512-SwnKLcZRG1VdB5JeM/Ax5VMWWh2QfXufmMQCKKx0/Kk41nUpie+aIZKj3LH6Z/fJsnKig/vXpeWoxGhmG523qg==} + engines: {node: '>= 16.0.0'} - '@parcel/optimizer-css@2.12.0': - resolution: {integrity: sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-css@2.13.2': + resolution: {integrity: sha512-V9JszWd1Lk3b/9hpfRp6U8lfOIaFPyevGFNTrT+CFMviuipCMWrkUgBa7wtFvqN1i8IJ5NV5FhIlc12qfBBBgA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/optimizer-htmlnano@2.12.0': - resolution: {integrity: sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-htmlnano@2.13.2': + resolution: {integrity: sha512-/ikDOZrnO4tdt99h34OyqnNIhugdeqWgnpfqEQ6Xi7odIn8OIGfwAHBXoyKRyUU8YUTqLhzOhckbSMwFTPRmXg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/optimizer-image@2.12.0': - resolution: {integrity: sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-image@2.13.2': + resolution: {integrity: sha512-1BsQOPoSB0TBJJ40TiN+VS3YK2V4EMDtaOML1Bet2oTLMlL77vJG/xT5QHzhExYK+ZyFh2R0gq7deEKXNScBzg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/optimizer-svgo@2.12.0': - resolution: {integrity: sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-svgo@2.13.2': + resolution: {integrity: sha512-QbuQzGfk5b/p9Yzc8PaSyjwalZbu/5afrKaLYKkiyG+kAVVOGMsxA2WPqPdb8x551AgdQL4OVODS9dE3zdDQOQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/optimizer-swc@2.12.0': - resolution: {integrity: sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/optimizer-swc@2.13.2': + resolution: {integrity: sha512-tyxXn36UAxZkAh+/cjvWwLCBkY+DL7+4G9NHWl5KeFqErc4diBox81Aiu8hnswNzFIg4ljn6f0rNpnWM3yfoMg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/package-manager@2.12.0': - resolution: {integrity: sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==} - engines: {node: '>= 12.0.0'} + '@parcel/package-manager@2.13.2': + resolution: {integrity: sha512-6HjfbdJUjHyNKzYB7GSYnOCtLwqCGW7yT95GlnnTKyFffvXYsqvBSyepMuPRlbX0mFUm4S9l2DH3OVZrk108AA==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/packager-css@2.12.0': - resolution: {integrity: sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-css@2.13.2': + resolution: {integrity: sha512-agao71rIHU1lR776IMwxKvknl1/Yglhkr2qSY0JQC10PRQXHs7nj0GXd69p568W42A3/rkMWrXjWkGzhbAcPRg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-html@2.12.0': - resolution: {integrity: sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-html@2.13.2': + resolution: {integrity: sha512-RHoYR4sp5VZATQbKE2Rn7DrJKK7HnvUTKB0WPFSppWJbJrqrZgvVCqnBMI2FPkbCoznGdt20rQ1R6vs591fuxQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-js@2.12.0': - resolution: {integrity: sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-js@2.13.2': + resolution: {integrity: sha512-/dx19/vTCb4JIx/556hz6KEmwanasUNLAFsZ1PAm5AYDcoxJtHiNITRilA6JTlO+mdsERxOI5eE7tHCTou1ErQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-raw@2.12.0': - resolution: {integrity: sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-raw@2.13.2': + resolution: {integrity: sha512-P+BnMZ3WS4F+Kpd+iv6PCfgyCftPGf8iGSQOCPkWb5fjuNjfvIzsq4WAW41FPbu788JwChev1O4zREYzlQjG2Q==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-svg@2.12.0': - resolution: {integrity: sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-svg@2.13.2': + resolution: {integrity: sha512-K99yyQ1IsbQlGWYOLaxv/GGeWXDq0snbgGrCJvXFS8APZZ2CrXRm2634XLFkY3XA1cKqP47wz+KbibMT/+uaPQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-ts@2.12.0': - resolution: {integrity: sha512-8wR0BNN2NBD+IIU0tjioK+lRD4p2Qi/fKxDH5ixEW912tRV+Vd4kE8k++U6YQIpSlK4FRnjFod5zYYhNSLuiXg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/packager-ts@2.13.2': + resolution: {integrity: sha512-GTFdmHu+hqXghlc810KxaQn4qwmwwcBWVyTNUkp/da+I7+0+qE4NL2E3ELDuRVx/j8tC3AKUeU07ln1adDNjyQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/packager-wasm@2.12.0': - resolution: {integrity: sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==} - engines: {node: '>=12.0.0', parcel: ^2.12.0} + '@parcel/packager-wasm@2.13.2': + resolution: {integrity: sha512-XqFQQcQRgZLPHgLWsQmWHr47ebsu9F7hmpHS+hFNHda4zj7WDtw7r7n6/d8CEXzdI3agpxR3XKVZzx7nB6sQig==} + engines: {node: '>=16.0.0', parcel: ^2.13.2} - '@parcel/plugin@2.12.0': - resolution: {integrity: sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==} - engines: {node: '>= 12.0.0'} + '@parcel/plugin@2.13.2': + resolution: {integrity: sha512-Q+RIENS1B185yLPhrGdzBK1oJrZmh/RXrYMnzJs78Tog8SpihjeNBNR6z4PT85o2F+Gy2y1S9A26fpiGq161qQ==} + engines: {node: '>= 16.0.0'} - '@parcel/profiler@2.12.0': - resolution: {integrity: sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==} - engines: {node: '>= 12.0.0'} + '@parcel/profiler@2.13.2': + resolution: {integrity: sha512-fur6Oq2HkX6AiM8rtqmDvldH5JWz0sqXA1ylz8cE3XOiDZIuvCulZmQ+hH+4odaNH6QocI1MwfV+GDh3HlQoCA==} + engines: {node: '>= 16.0.0'} - '@parcel/reporter-cli@2.12.0': - resolution: {integrity: sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/reporter-cli@2.13.2': + resolution: {integrity: sha512-dIx4d/B+P+7n+lPCnjorM3ygHf3E/P3os3g6BjUe7gOlq/acTwtM0TNXNdRLcsw3K+RzA2VkHLnvdgjIJ18F5g==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/reporter-dev-server@2.12.0': - resolution: {integrity: sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/reporter-dev-server@2.13.2': + resolution: {integrity: sha512-alWCPZiXEy5a1/mVnxQTJwJhWrnjaR+JOHQSu69eBGuWHqhXt2SCyKpczT08nm37GIxkhsiIaVR8sP4lVriApw==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/reporter-tracer@2.12.0': - resolution: {integrity: sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/reporter-tracer@2.13.2': + resolution: {integrity: sha512-QdnyUHrYcb5iIMqqp6nmR0xi63sPLTALsRYMoLpQPXP/SrO4JQIqGeBSdHi+59esDnlbWDtN2RpBJ3cXlOsjsA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/resolver-default@2.12.0': - resolution: {integrity: sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/resolver-default@2.13.2': + resolution: {integrity: sha512-8bMK04AxUmLF0+rsEl9u2LiboAsTjAemer9N/qMnWfsbxvEDunfTR39fwEEXpGAQV2sFb0ZPYtTxOc8bk5ygcQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/runtime-browser-hmr@2.12.0': - resolution: {integrity: sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/runtime-browser-hmr@2.13.2': + resolution: {integrity: sha512-ByF8Ww1g6XbtwqBxNZrUz/j9EG0O7sqefkW7E2IWhlxFiNJakIrgaN5VKCBRRWaDvyAz0Kn6Md9e6GLmioRXkA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/runtime-js@2.12.0': - resolution: {integrity: sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/runtime-js@2.13.2': + resolution: {integrity: sha512-DxRFW30RWM8noK1+yrqa+GYblMJabx6cg5Q7BI1SmTvVflomYVy2KEBVA161VZoxjHS6o0lToziAeVcUJT5GUQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/runtime-react-refresh@2.12.0': - resolution: {integrity: sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/runtime-react-refresh@2.13.2': + resolution: {integrity: sha512-anLQUANkU++brMa7PWBmvbGDgaNMA9BP7vg/g22KI7w6nh9D3f4JBi/Vo4N66zHATpex41gAjGmFXcBtotc5bQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/runtime-service-worker@2.12.0': - resolution: {integrity: sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/runtime-service-worker@2.13.2': + resolution: {integrity: sha512-EWn3eM5d81uL9+hXqAnuXo/6yq/7p1VEOKn83FEsbO4TAb6Pd25bJ0mPnWpewPcJBQUoPX3Wjx7VzVit7eeuYw==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/rust@2.12.0': - resolution: {integrity: sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==} - engines: {node: '>= 12.0.0'} + '@parcel/rust@2.13.2': + resolution: {integrity: sha512-XFIewSwxkrDYOnnSP/XZ1LDLdXTs7L9CjQUWtl46Vir5Pq/rinemwLJeKGIwKLHy7fhUZQjYxquH6fBL+AY8DA==} + engines: {node: '>= 16.0.0'} '@parcel/source-map@2.1.1': resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} engines: {node: ^12.18.3 || >=14} - '@parcel/transformer-babel@2.12.0': - resolution: {integrity: sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-babel@2.13.2': + resolution: {integrity: sha512-2cHXLQ2+jeae+mImoaKTtkKhCKATaPY2+Pao0g3zh1xwhNu/08xj7upnbD548UEyEChUWn6IjWljDsx4y8Oa3w==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-css@2.12.0': - resolution: {integrity: sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-css@2.13.2': + resolution: {integrity: sha512-QR9I4wYc+Tw7eET5ak3BvXLdsmDJGzq+Gd4KaULa0sNKioDUXCi79E5rGICW8E+BbHGKar7boNzk7HrNZX7PLg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-html@2.12.0': - resolution: {integrity: sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-html@2.13.2': + resolution: {integrity: sha512-LlQHODz/R832ZuRkCGlOQe+TF1BR9nriUcVSc2Z7q5xQ/HblNPrVvvLDBcXG7xRToawS1y6jXG0Tihv47AykfQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-image@2.12.0': - resolution: {integrity: sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-image@2.13.2': + resolution: {integrity: sha512-sHk9UmJIPEGil+8ulK+Mi4BArbSuMPTXrY1z3EP4pKGHPCMABNKIRiricngvxCW1eVZrxSokeHQe2jYWJ4tAtA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/transformer-js@2.12.0': - resolution: {integrity: sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-js@2.13.2': + resolution: {integrity: sha512-mn5DL+59x0FHeHKWOstZuKcz4rcVnZUAkXMPtERgXa0ggjJ1CgVOc26VD68sszC/aiF6yathz/LJtJpyluniLQ==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} peerDependencies: - '@parcel/core': ^2.12.0 + '@parcel/core': ^2.13.2 - '@parcel/transformer-json@2.12.0': - resolution: {integrity: sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-json@2.13.2': + resolution: {integrity: sha512-AiLyWPnHaNvO9sGykYF15S3jzyQY0vSw3xQPj/xhDRv7IXQyt3y1zTtJmQsp/ri9vIzf2CruD42UXiaSPpbA8A==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-postcss@2.12.0': - resolution: {integrity: sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-postcss@2.13.2': + resolution: {integrity: sha512-srcKQcTaaCGutcvpWeTue4/bScPJK3nXyql2QVNneufqxTQsOZcZg8lFaMc3ma6WjQn/m2emQC26eivr3MOhDg==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-posthtml@2.12.0': - resolution: {integrity: sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-posthtml@2.13.2': + resolution: {integrity: sha512-pNvxKp7GWLKSbyV2xRaGWZNV/ut8uetMfbwpcGxboxgq5TV9dqnHxRGzsTvZTo7yHqQ3N6hycoGh+w8L/8sg8Q==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-raw@2.12.0': - resolution: {integrity: sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-raw@2.13.2': + resolution: {integrity: sha512-KsTasFp+jwkGjBLrHO6oiqIIwOeiyNPx5NawmIzXUuGvQv6UhTSayk3NnFxteOVXzy5C9GfrQ5W+IBrHe6JWaw==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-react-refresh-wrap@2.12.0': - resolution: {integrity: sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-react-refresh-wrap@2.13.2': + resolution: {integrity: sha512-2UuuzHzpUx8Z0muoM3cETa7PDRJIG9a5nxPaTBZttT5ucprskITakky5pzsd4gabmNzWfZ5raRG5ixV3zOSL5A==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-svg@2.12.0': - resolution: {integrity: sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-svg@2.13.2': + resolution: {integrity: sha512-ANwWE4/n4rXrlbmY3iT18ndlxlLP1ubapR1wYL9bpp2cKA8ny2tCe5wlzLxBAfwcZx8cd15N/5v/ZwS6xt6BXw==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} - '@parcel/transformer-typescript-types@2.12.0': - resolution: {integrity: sha512-uxF4UBMYvbjiV3zHTWMrZX8cFD92VUvD3ArcGi5WEtuVROUm9Sc47o0mOzxKfMFlJu2KOfZVHYlzK9f/UKA2kQ==} - engines: {node: '>= 12.0.0', parcel: ^2.12.0} + '@parcel/transformer-typescript-types@2.13.2': + resolution: {integrity: sha512-EUtWLnvZuw1CiOhlgU0WEo7QHE7G0RTPyWpmMHWJljCsvpTeAlfU12V2ko2tmtFNp9F8JiwBhP0+od5+f5LlBA==} + engines: {node: '>= 16.0.0', parcel: ^2.13.2} peerDependencies: typescript: '>=3.0.0' - '@parcel/ts-utils@2.12.0': - resolution: {integrity: sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==} - engines: {node: '>= 12.0.0'} + '@parcel/ts-utils@2.13.2': + resolution: {integrity: sha512-wj6trzSaZ7nHDzx5zVQfs467WrA3p7g6bos7Opr8nTw5V1qACXa03C9ccRiEUmR0i+Bk8kEZKUunswhjBiPuHg==} + engines: {node: '>= 16.0.0'} peerDependencies: typescript: '>=3.0.0' - '@parcel/types@2.12.0': - resolution: {integrity: sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==} + '@parcel/types-internal@2.13.2': + resolution: {integrity: sha512-j0zb3WNM8O/+d8CArll7/4w4AyBED3Jbo32/unz89EPVN0VklmgBrRCAI5QXDKuJAGdAZSL5/a8bNYbwl7/Wxw==} - '@parcel/utils@2.12.0': - resolution: {integrity: sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==} - engines: {node: '>= 12.0.0'} + '@parcel/types@2.13.2': + resolution: {integrity: sha512-6ixqjk2pjKELn4sQ/jdvpbCVTeH6xXQTdotkN8Wzk68F2K2MtSPIRAEocumlexScfffbRQplr2MdIf1JJWLogA==} + + '@parcel/utils@2.13.2': + resolution: {integrity: sha512-BkFtRo5xenmonwnBy+X4sVbHIRrx+ZHMPpS/6hFqyTvoUUFq2yTFQnfRGVVOOvscVUxpGom+kewnrTG3HHbZoA==} + engines: {node: '>= 16.0.0'} - '@parcel/watcher-android-arm64@2.4.1': - resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [android] - '@parcel/watcher-darwin-arm64@2.4.1': - resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [darwin] - '@parcel/watcher-darwin-x64@2.4.1': - resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [darwin] - '@parcel/watcher-freebsd-x64@2.4.1': - resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [freebsd] - '@parcel/watcher-linux-arm-glibc@2.4.1': - resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - '@parcel/watcher-linux-arm64-glibc@2.4.1': - resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-arm64-musl@2.4.1': - resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - '@parcel/watcher-linux-x64-glibc@2.4.1': - resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-linux-x64-musl@2.4.1': - resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - '@parcel/watcher-win32-arm64@2.4.1': - resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [win32] - '@parcel/watcher-win32-ia32@2.4.1': - resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} engines: {node: '>= 10.0.0'} cpu: [ia32] os: [win32] - '@parcel/watcher-win32-x64@2.4.1': - resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [win32] - '@parcel/watcher@2.4.1': - resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} engines: {node: '>= 10.0.0'} - '@parcel/workers@2.12.0': - resolution: {integrity: sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==} - engines: {node: '>= 12.0.0'} + '@parcel/workers@2.13.2': + resolution: {integrity: sha512-P78BpH0yTT9KK09wgK4eabtlb5OlcWAmZebOToN5UYuwWEylKt0gWZx1+d+LPQupvK84/iZ+AutDScsATjgUMw==} + engines: {node: '>= 16.0.0'} peerDependencies: - '@parcel/core': ^2.12.0 - - '@shikijs/core@1.22.1': - resolution: {integrity: sha512-bqAhT/Ri5ixV4oYsvJNH8UJjpjbINWlWyXY6tBTsP4OmD6XnFv43nRJ+lTdxd2rmG5pgam/x+zGR6kLRXrpEKA==} - - '@shikijs/engine-javascript@1.22.1': - resolution: {integrity: sha512-540pyoy0LWe4jj2BVbgELwOFu1uFvRI7lg4hdsExrSXA9x7gqfzZ/Nnh4RfX86aDAgJ647gx4TCmRwACbnQSvw==} + '@parcel/core': ^2.13.2 - '@shikijs/engine-oniguruma@1.22.1': - resolution: {integrity: sha512-L+1Vmd+a2kk8HtogUFymQS6BjUfJnzcWoUp1BUgxoDiklbKSMvrsMuLZGevTOP1m0rEjgnC5MsDmsr8lX1lC+Q==} + '@shikijs/engine-oniguruma@1.24.0': + resolution: {integrity: sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==} - '@shikijs/types@1.22.1': - resolution: {integrity: sha512-+45f8mu/Hxqs6Kyhfm98Nld5n7Q7lwhjU8UtdQwrOPs7BnM4VAb929O3IQ2ce+4D7SlNFlZGd8CnKRSnwbQreQ==} + '@shikijs/types@1.24.0': + resolution: {integrity: sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==} '@shikijs/vscode-textmate@9.3.0': resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==} @@ -759,68 +769,68 @@ packages: '@sinonjs/fake-timers@10.3.0': resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} - '@swc/core-darwin-arm64@1.7.40': - resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==} + '@swc/core-darwin-arm64@1.9.3': + resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.7.40': - resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==} + '@swc/core-darwin-x64@1.9.3': + resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.40': - resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==} + '@swc/core-linux-arm-gnueabihf@1.9.3': + resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.40': - resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==} + '@swc/core-linux-arm64-gnu@1.9.3': + resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.40': - resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==} + '@swc/core-linux-arm64-musl@1.9.3': + resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.40': - resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==} + '@swc/core-linux-x64-gnu@1.9.3': + resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.40': - resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==} + '@swc/core-linux-x64-musl@1.9.3': + resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.7.40': - resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==} + '@swc/core-win32-arm64-msvc@1.9.3': + resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.40': - resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==} + '@swc/core-win32-ia32-msvc@1.9.3': + resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.7.40': - resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==} + '@swc/core-win32-x64-msvc@1.9.3': + resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.7.40': - resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==} + '@swc/core@1.9.3': + resolution: {integrity: sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -831,11 +841,11 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - '@swc/helpers@0.5.13': - resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} - '@swc/types@0.1.13': - resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} + '@swc/types@0.1.17': + resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} @@ -844,10 +854,6 @@ packages: resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} - '@trysound/sax@0.2.0': - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} - engines: {node: '>=10.13.0'} - '@tsconfig/node10@1.0.11': resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} @@ -872,9 +878,6 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} - '@types/core-js@2.5.8': - resolution: {integrity: sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==} - '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -899,11 +902,8 @@ packages: '@types/jsdom@21.1.7': resolution: {integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==} - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/node@20.17.1': - resolution: {integrity: sha512-j2VlPv1NnwPJbaCNv69FO/1z4lId0QmGvpT41YxitRtWlg96g/j8qcv2RKsLKe2F6OJgyXhupN1Xo17b2m139Q==} + '@types/node@20.17.9': + resolution: {integrity: sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==} '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -920,15 +920,12 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@ungap/structured-clone@1.2.0': - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - abab@2.0.6: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead - abortcontroller-polyfill@1.7.5: - resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + abortcontroller-polyfill@1.7.6: + resolution: {integrity: sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q==} acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -1028,9 +1025,6 @@ packages: base-x@3.0.10: resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} - boolbase@1.0.0: - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} - brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -1072,11 +1066,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001673: - resolution: {integrity: sha512-WTrjUCSMp3LYX0nE12ECkV0a+e6LC85E0Auz75555/qr78Oc8YWhEPNfDd6SHdtlCMSzqtuXY0uyEMNRcsKpKw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + caniuse-lite@1.0.30001684: + resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1090,12 +1081,6 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -1144,25 +1129,18 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} - commander@7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - core-js@3.38.1: - resolution: {integrity: sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==} + core-js@3.39.0: + resolution: {integrity: sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==} cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} @@ -1186,29 +1164,14 @@ packages: engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} hasBin: true - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} crypto-random-string@4.0.0: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} - css-select@4.3.0: - resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} - - css-tree@1.1.3: - resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} - engines: {node: '>=8.0.0'} - - css-what@6.1.0: - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} - engines: {node: '>= 6'} - - csso@4.2.0: - resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} - engines: {node: '>=8.0.0'} - cssom@0.3.8: resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} @@ -1271,10 +1234,6 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} engines: {node: '>=0.10'} @@ -1288,9 +1247,6 @@ packages: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1302,6 +1258,9 @@ packages: dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} @@ -1314,23 +1273,31 @@ packages: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} - dotenv-expand@5.1.0: - resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dotenv@7.0.0: - resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} - engines: {node: '>=6'} + dotenv-expand@11.0.7: + resolution: {integrity: sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==} + engines: {node: '>=12'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.47: - resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + electron-to-chromium@1.5.67: + resolution: {integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==} element-internals-polyfill@1.3.12: resolution: {integrity: sha512-KW1k+cMGwXlx3X9nqhgmuElAfR/c/ccFt0pG4KpwK++Mx9Y+mPExxJW+jgQnqux/NQrJejgOxxg4Naf3f6y67Q==} @@ -1503,12 +1470,6 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hast-util-to-html@9.0.3: - resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} @@ -1520,9 +1481,6 @@ packages: html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - htmlnano@2.1.1: resolution: {integrity: sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==} peerDependencies: @@ -1555,6 +1513,9 @@ packages: htmlparser2@7.2.0: resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -1579,8 +1540,8 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - husky@9.1.6: - resolution: {integrity: sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==} + husky@9.1.7: + resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} engines: {node: '>=18'} hasBin: true @@ -1894,68 +1855,68 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - lightningcss-darwin-arm64@1.27.0: - resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + lightningcss-darwin-arm64@1.28.2: + resolution: {integrity: sha512-/8cPSqZiusHSS+WQz0W4NuaqFjquys1x+NsdN/XOHb+idGHJSoJ7SoQTVl3DZuAgtPZwFZgRfb/vd1oi8uX6+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [darwin] - lightningcss-darwin-x64@1.27.0: - resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + lightningcss-darwin-x64@1.28.2: + resolution: {integrity: sha512-R7sFrXlgKjvoEG8umpVt/yutjxOL0z8KWf0bfPT3cYMOW4470xu5qSHpFdIOpRWwl3FKNMUdbKtMUjYt0h2j4g==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [darwin] - lightningcss-freebsd-x64@1.27.0: - resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + lightningcss-freebsd-x64@1.28.2: + resolution: {integrity: sha512-l2qrCT+x7crAY+lMIxtgvV10R8VurzHAoUZJaVFSlHrN8kRLTvEg9ObojIDIexqWJQvJcVVV3vfzsEynpiuvgA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [freebsd] - lightningcss-linux-arm-gnueabihf@1.27.0: - resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + lightningcss-linux-arm-gnueabihf@1.28.2: + resolution: {integrity: sha512-DKMzpICBEKnL53X14rF7hFDu8KKALUJtcKdFUCW5YOlGSiwRSgVoRjM97wUm/E0NMPkzrTi/rxfvt7ruNK8meg==} engines: {node: '>= 12.0.0'} cpu: [arm] os: [linux] - lightningcss-linux-arm64-gnu@1.27.0: - resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + lightningcss-linux-arm64-gnu@1.28.2: + resolution: {integrity: sha512-nhfjYkfymWZSxdtTNMWyhFk2ImUm0X7NAgJWFwnsYPOfmtWQEapzG/DXZTfEfMjSzERNUNJoQjPAbdqgB+sjiw==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-arm64-musl@1.27.0: - resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + lightningcss-linux-arm64-musl@1.28.2: + resolution: {integrity: sha512-1SPG1ZTNnphWvAv8RVOymlZ8BDtAg69Hbo7n4QxARvkFVCJAt0cgjAw1Fox0WEhf4PwnyoOBaVH0Z5YNgzt4dA==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] - lightningcss-linux-x64-gnu@1.27.0: - resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + lightningcss-linux-x64-gnu@1.28.2: + resolution: {integrity: sha512-ZhQy0FcO//INWUdo/iEdbefntTdpPVQ0XJwwtdbBuMQe+uxqZoytm9M+iqR9O5noWFaxK+nbS2iR/I80Q2Ofpg==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-linux-x64-musl@1.27.0: - resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + lightningcss-linux-x64-musl@1.28.2: + resolution: {integrity: sha512-alb/j1NMrgQmSFyzTbN1/pvMPM+gdDw7YBuQ5VSgcFDypN3Ah0BzC2dTZbzwzaMdUVDszX6zH5MzjfVN1oGuww==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] - lightningcss-win32-arm64-msvc@1.27.0: - resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + lightningcss-win32-arm64-msvc@1.28.2: + resolution: {integrity: sha512-WnwcjcBeAt0jGdjlgbT9ANf30pF0C/QMb1XnLnH272DQU8QXh+kmpi24R55wmWBwaTtNAETZ+m35ohyeMiNt+g==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [win32] - lightningcss-win32-x64-msvc@1.27.0: - resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + lightningcss-win32-x64-msvc@1.28.2: + resolution: {integrity: sha512-3piBifyT3avz22o6mDKywQC/OisH2yDK+caHWkiMsF82i3m5wDBadyCjlCQ5VNgzYkxrWZgiaxHDdd5uxsi0/A==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [win32] - lightningcss@1.27.0: - resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + lightningcss@1.28.2: + resolution: {integrity: sha512-ePLRrbt3fgjXI5VFZOLbvkLD5ZRuxGKm+wJ3ujCqBtL3NanDHPo/5zicR5uEKAPiIjBYF99BM4K4okvMznjkVA==} engines: {node: '>= 12.0.0'} lilconfig@3.1.2: @@ -2012,12 +1973,6 @@ packages: resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} hasBin: true - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} - - mdn-data@2.0.14: - resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} - mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -2028,21 +1983,6 @@ packages: merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - micromark-util-character@2.1.0: - resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} - - micromark-util-encode@2.0.0: - resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} - - micromark-util-sanitize-uri@2.0.0: - resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} - - micromark-util-symbol@2.0.0: - resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} - - micromark-util-types@2.0.0: - resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} - micromatch@4.0.8: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} @@ -2085,8 +2025,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.0: - resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + msgpackr@1.11.2: + resolution: {integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==} natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -2123,14 +2063,11 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - nth-check@2.1.1: - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - nwsapi@2.2.13: - resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} + nwsapi@2.2.16: + resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -2147,9 +2084,6 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - oniguruma-to-js@0.4.3: - resolution: {integrity: sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==} - open-cli@8.0.0: resolution: {integrity: sha512-3muD3BbfLyzl+aMVSEfn2FfOqGdPYR0O4KNnxXsLEPE2q9OSjBfJAaB6XKbrUzLgymoSMejvb5jpXJfru/Ko2A==} engines: {node: '>=18'} @@ -2159,8 +2093,8 @@ packages: resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} engines: {node: '>=18'} - ordered-binary@1.5.2: - resolution: {integrity: sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==} + ordered-binary@1.5.3: + resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} @@ -2178,9 +2112,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - parcel@2.12.0: - resolution: {integrity: sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==} - engines: {node: '>= 12.0.0'} + parcel@2.13.2: + resolution: {integrity: sha512-ROp1Lf6cihWYzdkieXH+KWVkjlqiUMqW18MBMNZQ3sQitnXWGozTgSYIfpUFLQqaHLgBfm5inOwdqmbzExdpYA==} + engines: {node: '>= 16.0.0'} hasBin: true parent-module@1.0.1: @@ -2240,14 +2174,14 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - posthtml-parser@0.10.2: - resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} - engines: {node: '>=12'} - posthtml-parser@0.11.0: resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} engines: {node: '>=12'} + posthtml-parser@0.12.1: + resolution: {integrity: sha512-rYFmsDLfYm+4Ts2Oh4DCDSZPtdC1BLnRXAobypVzX9alj28KGl65dIFtgDY9zB57D0TC4Qxqrawuq/2et1P0GA==} + engines: {node: '>=16'} + posthtml-render@3.0.0: resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} engines: {node: '>=12'} @@ -2256,8 +2190,8 @@ packages: resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} engines: {node: '>=12.0.0'} - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.4.1: + resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} engines: {node: '>=14'} hasBin: true @@ -2269,11 +2203,8 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} - property-information@6.5.0: - resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==} - - psl@1.9.0: - resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + psl@1.14.0: + resolution: {integrity: sha512-Syk1bnf6fRZ9wQs03AtKJHcM12cKbOLo9L8JtCCdYj5/DTsHmTyXM4BK5ouWeG2P6kZ4nmFvuNTdtaqfobCOCg==} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -2295,8 +2226,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-refresh@0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} readable-stream@3.6.2: @@ -2307,15 +2238,9 @@ packages: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} - regenerator-runtime@0.13.11: - resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} - regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex@4.3.3: - resolution: {integrity: sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -2384,9 +2309,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@1.22.1: - resolution: {integrity: sha512-PbJ6XxrWLMwB2rm3qdjIHNm3zq4SfFnOx0B3rEoi4AN8AUngsdyZ1tRe5slMPtn6jQkbUURLNZPpLR7Do3k78g==} - signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2416,9 +2338,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -2426,10 +2345,6 @@ packages: resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} engines: {node: '>=12'} - stable@0.1.8: - resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} - deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -2453,9 +2368,6 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2496,11 +2408,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svgo@2.8.0: - resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} - engines: {node: '>=10.13.0'} - hasBin: true - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -2523,11 +2430,11 @@ packages: timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} - tldts-core@6.1.56: - resolution: {integrity: sha512-Ihxv/Bwiyj73icTYVgBUkQ3wstlCglLoegSgl64oSrGUBX1hc7Qmf/CnrnJLaQdZrCnTaLqMYOwKMKlkfkFrxQ==} + tldts-core@6.1.64: + resolution: {integrity: sha512-uqnl8vGV16KsyflHOzqrYjjArjfXaU6rMPXYy2/ZWoRKCkXtghgB4VwTDXUG+t0OTGeSewNAG31/x1gCTfLt+Q==} - tldts@6.1.56: - resolution: {integrity: sha512-2PT1oRZCxtsbLi5R2SQjE/v4vvgRggAtVcYj+3Rrcnu2nPZvu7m64+gDa/EsVSWd3QzEc0U0xN+rbEKsJC47kA==} + tldts@6.1.64: + resolution: {integrity: sha512-ph4AE5BXWIOsSy9stpoeo7bYe/Cy7VfpciIH4RhVZUPItCJmhqWCN0EVzxd8BOHiyNb42vuJc6NWTjJkg91Tuw==} hasBin: true tmpl@1.0.5: @@ -2557,9 +2464,6 @@ packages: resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==} engines: {node: '>=18'} - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - ts-jest@29.2.5: resolution: {integrity: sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==} engines: {node: ^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0} @@ -2598,8 +2502,8 @@ packages: '@swc/wasm': optional: true - tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} @@ -2621,20 +2525,20 @@ packages: resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} engines: {node: '>=12.20'} - typedoc-plugin-mdn-links@3.3.5: - resolution: {integrity: sha512-EsOmQ23eBYqFFEkjo/prud/h2O2QIPQwdVvpyocwn3SWWFCP1YfuTCs94/dDQG6Ikte7gik88ic7Md8fDvEmtw==} + typedoc-plugin-mdn-links@4.0.2: + resolution: {integrity: sha512-AsfhvYIYsTVfIXr5ZMTjYw0LlCIPiSLglnd2Q09DVthZBa1qfYDGZgnwOekTrF8q0RSDWTCY/ZM6LERRScoA9w==} peerDependencies: - typedoc: '>= 0.23.14 || 0.24.x || 0.25.x || 0.26.x' + typedoc: 0.26.x || 0.27.x - typedoc@0.26.10: - resolution: {integrity: sha512-xLmVKJ8S21t+JeuQLNueebEuTVphx6IrP06CdV7+0WVflUSW3SPmR+h1fnWVdAR/FQePEgsSWCUHXqKKjzuUAw==} + typedoc@0.27.2: + resolution: {integrity: sha512-C2ima5TZJHU3ecnRIz50lKd1BsYck5LhYQIy7MRPmjuSEJreUEAt+uAVcZgY7wZsSORzEI7xW8miZIdxv/cbmw==} engines: {node: '>= 18'} hasBin: true peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x + typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true @@ -2648,21 +2552,6 @@ packages: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} - unist-util-is@6.0.0: - resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.1: - resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} - - unist-util-visit@5.0.0: - resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} @@ -2690,12 +2579,6 @@ packages: resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} engines: {node: '>=10.12.0'} - vfile-message@4.0.2: - resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} @@ -2714,8 +2597,8 @@ packages: resolution: {integrity: sha512-0zJXHRAYEjM2tUfZ2DiSOHAa2aw1tisnnhU3ufD57R8iefL+DcdJyRBRyJpG+NUimDgbTI/lH+gAE1PAvV3Cgw==} engines: {node: '>= 8'} - web-utility@4.4.1: - resolution: {integrity: sha512-MGmMMjSdsKWHDBpiEHa4Rve6gzFz/aB7RHYyJEKk7cwh+M5/dEjIG2kj/299PXLvHOAMxoywTBhY/d0k2lTgUA==} + web-utility@4.4.2: + resolution: {integrity: sha512-mpUh9jQ4SGSRKehfQKsvMMItzeRb5SPvYbbyksvWy5HPVsKh8VOS6ijVD0PiwaFGuv729Dg+oXzWyiibSZVCBw==} peerDependencies: typescript: '>=4.1' @@ -2802,8 +2685,8 @@ packages: engines: {node: '>= 14'} hasBin: true - yaml@2.6.0: - resolution: {integrity: sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==} + yaml@2.6.1: + resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} engines: {node: '>= 14'} hasBin: true @@ -2823,9 +2706,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - snapshots: '@ampproject/remapping@2.3.0': @@ -2833,23 +2713,23 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@babel/code-frame@7.26.0': + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.0': {} + '@babel/compat-data@7.26.2': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -2861,9 +2741,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.0': + '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -2871,7 +2751,7 @@ snapshots: '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -2906,7 +2786,7 @@ snapshots: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - '@babel/parser@7.26.1': + '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 @@ -2997,15 +2877,15 @@ snapshots: '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.7 @@ -3024,6 +2904,12 @@ snapshots: dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@gerrit0/mini-shiki@1.24.1': + dependencies: + '@shikijs/engine-oniguruma': 1.24.0 + '@shikijs/types': 1.24.0 + '@shikijs/vscode-textmate': 9.3.0 + '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -3037,27 +2923,27 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -3082,7 +2968,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -3100,7 +2986,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -3122,7 +3008,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -3192,7 +3078,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.1 + '@types/node': 20.17.9 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -3266,69 +3152,69 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': optional: true - '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/bundler-default@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/graph': 3.2.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/graph': 3.3.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/cache@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/utils': 2.12.0 + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/fs': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/logger': 2.13.2 + '@parcel/utils': 2.13.2 lmdb: 2.8.5 - '@parcel/codeframe@2.12.0': + '@parcel/codeframe@2.13.2': dependencies: chalk: 4.1.2 - '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/compressor-raw@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(typescript@5.6.3) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/config-default@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(typescript@5.7.2)': + dependencies: + '@parcel/bundler-default': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/compressor-raw': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/namer-default': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/optimizer-css': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/optimizer-htmlnano': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(typescript@5.7.2) + '@parcel/optimizer-image': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/optimizer-svgo': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/optimizer-swc': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/packager-css': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/packager-html': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/packager-js': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/packager-raw': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/packager-svg': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/packager-wasm': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/reporter-dev-server': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/resolver-default': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/runtime-browser-hmr': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/runtime-js': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/runtime-react-refresh': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/runtime-service-worker': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-babel': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-css': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-html': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-image': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-js': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-json': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-postcss': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-posthtml': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-raw': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-react-refresh-wrap': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/transformer-svg': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@swc/helpers' - cssnano @@ -3336,110 +3222,114 @@ snapshots: - purgecss - relateurl - srcset + - svgo - terser - typescript - uncss - '@parcel/core@2.12.0(@swc/helpers@0.5.13)': + '@parcel/core@2.13.2(@swc/helpers@0.5.15)': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/graph': 3.2.0 - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/profiler': 2.12.0 - '@parcel/rust': 2.12.0 + '@parcel/cache': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/diagnostic': 2.13.2 + '@parcel/events': 2.13.2 + '@parcel/feature-flags': 2.13.2 + '@parcel/fs': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/graph': 3.3.2 + '@parcel/logger': 2.13.2 + '@parcel/package-manager': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/profiler': 2.13.2 + '@parcel/rust': 2.13.2 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - abortcontroller-polyfill: 1.7.5 + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) base-x: 3.0.10 browserslist: 4.24.2 clone: 2.1.2 - dotenv: 7.0.0 - dotenv-expand: 5.1.0 + dotenv: 16.4.5 + dotenv-expand: 11.0.7 json5: 2.2.3 - msgpackr: 1.11.0 + msgpackr: 1.11.2 nullthrows: 1.1.1 semver: 7.6.3 transitivePeerDependencies: - '@swc/helpers' - '@parcel/diagnostic@2.12.0': + '@parcel/diagnostic@2.13.2': dependencies: '@mischnic/json-sourcemap': 0.1.1 nullthrows: 1.1.1 - '@parcel/events@2.12.0': {} + '@parcel/events@2.13.2': {} + + '@parcel/feature-flags@2.13.2': {} - '@parcel/fs@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/fs@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/rust': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/feature-flags': 2.13.2 + '@parcel/rust': 2.13.2 + '@parcel/types-internal': 2.13.2 + '@parcel/utils': 2.13.2 + '@parcel/watcher': 2.5.0 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) - '@parcel/graph@3.2.0': + '@parcel/graph@3.3.2': dependencies: + '@parcel/feature-flags': 2.13.2 nullthrows: 1.1.1 - '@parcel/logger@2.12.0': + '@parcel/logger@2.13.2': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/events': 2.13.2 - '@parcel/markdown-ansi@2.12.0': + '@parcel/markdown-ansi@2.13.2': dependencies: chalk: 4.1.2 - '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/namer-default@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/node-resolver-core@3.4.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: '@mischnic/json-sourcemap': 0.1.1 - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/fs': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/optimizer-css@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 + '@parcel/utils': 2.13.2 browserslist: 4.24.2 - lightningcss: 1.27.0 + lightningcss: 1.28.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(typescript@5.6.3)': + '@parcel/optimizer-htmlnano@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(typescript@5.7.2)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - htmlnano: 2.1.1(svgo@2.8.0)(typescript@5.6.3) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 + htmlnano: 2.1.1(typescript@5.7.2) nullthrows: 1.1.1 posthtml: 0.16.6 - svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' - cssnano @@ -3447,206 +3337,207 @@ snapshots: - purgecss - relateurl - srcset + - svgo - terser - typescript - uncss - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/optimizer-image@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 + '@parcel/utils': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/optimizer-svgo@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 - svgo: 2.8.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/optimizer-swc@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@parcel/utils': 2.13.2 + '@swc/core': 1.9.3(@swc/helpers@0.5.15) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - '@parcel/package-manager@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@parcel/package-manager@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)': + dependencies: + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/diagnostic': 2.13.2 + '@parcel/fs': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/logger': 2.13.2 + '@parcel/node-resolver-core': 3.4.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@swc/core': 1.9.3(@swc/helpers@0.5.15) semver: 7.6.3 transitivePeerDependencies: - '@swc/helpers' - '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-css@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - lightningcss: 1.27.0 + '@parcel/utils': 2.13.2 + lightningcss: 1.28.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-html@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-js@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 '@parcel/source-map': 2.1.1 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 globals: 13.24.0 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-raw@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-svg@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 posthtml: 0.16.6 transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-ts@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-ts@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/packager-wasm@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/plugin@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/profiler@2.12.0': + '@parcel/profiler@2.13.2': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/events': 2.13.2 + '@parcel/types-internal': 2.13.2 chrome-trace-event: 1.0.4 - '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/reporter-cli@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/types': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 chalk: 4.1.2 term-size: 2.2.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/reporter-dev-server@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/reporter-tracer@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 chrome-trace-event: 1.0.4 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/resolver-default@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/node-resolver-core': 3.4.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/runtime-browser-hmr@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/runtime-js@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/runtime-react-refresh@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 react-error-overlay: 6.0.9 - react-refresh: 0.9.0 + react-refresh: 0.14.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/runtime-service-worker@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/rust@2.12.0': {} + '@parcel/rust@2.13.2': {} '@parcel/source-map@2.1.1': dependencies: detect-libc: 1.0.3 - '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-babel@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 + '@parcel/utils': 2.13.2 browserslist: 4.24.2 json5: 2.2.3 nullthrows: 1.1.1 @@ -3654,68 +3545,68 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-css@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 + '@parcel/utils': 2.13.2 browserslist: 4.24.2 - lightningcss: 1.27.0 + lightningcss: 1.28.2 nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-html@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 nullthrows: 1.1.1 posthtml: 0.16.6 - posthtml-parser: 0.10.2 + posthtml-parser: 0.12.1 posthtml-render: 3.0.0 semver: 7.6.3 srcset: 4.0.0 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-image@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) nullthrows: 1.1.1 - '@parcel/transformer-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-js@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 '@parcel/source-map': 2.1.1 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@swc/helpers': 0.5.13 + '@parcel/utils': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@swc/helpers': 0.5.15 browserslist: 4.24.2 nullthrows: 1.1.1 - regenerator-runtime: 0.13.11 + regenerator-runtime: 0.14.1 semver: 7.6.3 - '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-json@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) json5: 2.2.3 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-postcss@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 + '@parcel/utils': 2.13.2 clone: 2.1.2 nullthrows: 1.1.1 postcss-value-parser: 4.2.0 @@ -3723,175 +3614,163 @@ snapshots: transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-posthtml@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 posthtml: 0.16.6 - posthtml-parser: 0.10.2 + posthtml-parser: 0.12.1 posthtml-render: 3.0.0 semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-raw@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-react-refresh-wrap@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 - react-refresh: 0.9.0 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 + react-refresh: 0.14.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/transformer-svg@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/rust': 2.12.0 + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/rust': 2.13.2 nullthrows: 1.1.1 posthtml: 0.16.6 - posthtml-parser: 0.10.2 + posthtml-parser: 0.12.1 posthtml-render: 3.0.0 semver: 7.6.3 transitivePeerDependencies: - '@parcel/core' - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(typescript@5.6.3)': + '@parcel/transformer-typescript-types@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(typescript@5.7.2)': dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/diagnostic': 2.13.2 + '@parcel/plugin': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.6.3) - '@parcel/utils': 2.12.0 + '@parcel/ts-utils': 2.13.2(typescript@5.7.2) + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - '@parcel/core' - '@parcel/ts-utils@2.12.0(typescript@5.6.3)': + '@parcel/ts-utils@2.13.2(typescript@5.7.2)': dependencies: nullthrows: 1.1.1 - typescript: 5.6.3 + typescript: 5.7.2 - '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/types-internal@2.13.2': dependencies: - '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/diagnostic': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.13.2 + '@parcel/feature-flags': 2.13.2 '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) utility-types: 3.11.0 + + '@parcel/types@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': + dependencies: + '@parcel/types-internal': 2.13.2 + '@parcel/workers': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' - '@parcel/utils@2.12.0': + '@parcel/utils@2.13.2': dependencies: - '@parcel/codeframe': 2.12.0 - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/markdown-ansi': 2.12.0 - '@parcel/rust': 2.12.0 + '@parcel/codeframe': 2.13.2 + '@parcel/diagnostic': 2.13.2 + '@parcel/logger': 2.13.2 + '@parcel/markdown-ansi': 2.13.2 + '@parcel/rust': 2.13.2 '@parcel/source-map': 2.1.1 chalk: 4.1.2 nullthrows: 1.1.1 - '@parcel/watcher-android-arm64@2.4.1': + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': optional: true - '@parcel/watcher-darwin-arm64@2.4.1': + '@parcel/watcher-darwin-x64@2.5.0': optional: true - '@parcel/watcher-darwin-x64@2.4.1': + '@parcel/watcher-freebsd-x64@2.5.0': optional: true - '@parcel/watcher-freebsd-x64@2.4.1': + '@parcel/watcher-linux-arm-glibc@2.5.0': optional: true - '@parcel/watcher-linux-arm-glibc@2.4.1': + '@parcel/watcher-linux-arm-musl@2.5.0': optional: true - '@parcel/watcher-linux-arm64-glibc@2.4.1': + '@parcel/watcher-linux-arm64-glibc@2.5.0': optional: true - '@parcel/watcher-linux-arm64-musl@2.4.1': + '@parcel/watcher-linux-arm64-musl@2.5.0': optional: true - '@parcel/watcher-linux-x64-glibc@2.4.1': + '@parcel/watcher-linux-x64-glibc@2.5.0': optional: true - '@parcel/watcher-linux-x64-musl@2.4.1': + '@parcel/watcher-linux-x64-musl@2.5.0': optional: true - '@parcel/watcher-win32-arm64@2.4.1': + '@parcel/watcher-win32-arm64@2.5.0': optional: true - '@parcel/watcher-win32-ia32@2.4.1': + '@parcel/watcher-win32-ia32@2.5.0': optional: true - '@parcel/watcher-win32-x64@2.4.1': + '@parcel/watcher-win32-x64@2.5.0': optional: true - '@parcel/watcher@2.4.1': + '@parcel/watcher@2.5.0': dependencies: detect-libc: 1.0.3 is-glob: 4.0.3 micromatch: 4.0.8 node-addon-api: 7.1.1 optionalDependencies: - '@parcel/watcher-android-arm64': 2.4.1 - '@parcel/watcher-darwin-arm64': 2.4.1 - '@parcel/watcher-darwin-x64': 2.4.1 - '@parcel/watcher-freebsd-x64': 2.4.1 - '@parcel/watcher-linux-arm-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-glibc': 2.4.1 - '@parcel/watcher-linux-arm64-musl': 2.4.1 - '@parcel/watcher-linux-x64-glibc': 2.4.1 - '@parcel/watcher-linux-x64-musl': 2.4.1 - '@parcel/watcher-win32-arm64': 2.4.1 - '@parcel/watcher-win32-ia32': 2.4.1 - '@parcel/watcher-win32-x64': 2.4.1 - - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + + '@parcel/workers@2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))': + dependencies: + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/diagnostic': 2.13.2 + '@parcel/logger': 2.13.2 + '@parcel/profiler': 2.13.2 + '@parcel/types-internal': 2.13.2 + '@parcel/utils': 2.13.2 nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - - '@shikijs/core@1.22.1': - dependencies: - '@shikijs/engine-javascript': 1.22.1 - '@shikijs/engine-oniguruma': 1.22.1 - '@shikijs/types': 1.22.1 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - hast-util-to-html: 9.0.3 - '@shikijs/engine-javascript@1.22.1': + '@shikijs/engine-oniguruma@1.24.0': dependencies: - '@shikijs/types': 1.22.1 + '@shikijs/types': 1.24.0 '@shikijs/vscode-textmate': 9.3.0 - oniguruma-to-js: 0.4.3 - '@shikijs/engine-oniguruma@1.22.1': - dependencies: - '@shikijs/types': 1.22.1 - '@shikijs/vscode-textmate': 9.3.0 - - '@shikijs/types@1.22.1': + '@shikijs/types@1.24.0': dependencies: '@shikijs/vscode-textmate': 9.3.0 '@types/hast': 3.0.4 @@ -3908,60 +3787,60 @@ snapshots: dependencies: '@sinonjs/commons': 3.0.1 - '@swc/core-darwin-arm64@1.7.40': + '@swc/core-darwin-arm64@1.9.3': optional: true - '@swc/core-darwin-x64@1.7.40': + '@swc/core-darwin-x64@1.9.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.40': + '@swc/core-linux-arm-gnueabihf@1.9.3': optional: true - '@swc/core-linux-arm64-gnu@1.7.40': + '@swc/core-linux-arm64-gnu@1.9.3': optional: true - '@swc/core-linux-arm64-musl@1.7.40': + '@swc/core-linux-arm64-musl@1.9.3': optional: true - '@swc/core-linux-x64-gnu@1.7.40': + '@swc/core-linux-x64-gnu@1.9.3': optional: true - '@swc/core-linux-x64-musl@1.7.40': + '@swc/core-linux-x64-musl@1.9.3': optional: true - '@swc/core-win32-arm64-msvc@1.7.40': + '@swc/core-win32-arm64-msvc@1.9.3': optional: true - '@swc/core-win32-ia32-msvc@1.7.40': + '@swc/core-win32-ia32-msvc@1.9.3': optional: true - '@swc/core-win32-x64-msvc@1.7.40': + '@swc/core-win32-x64-msvc@1.9.3': optional: true - '@swc/core@1.7.40(@swc/helpers@0.5.13)': + '@swc/core@1.9.3(@swc/helpers@0.5.15)': dependencies: '@swc/counter': 0.1.3 - '@swc/types': 0.1.13 + '@swc/types': 0.1.17 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.40 - '@swc/core-darwin-x64': 1.7.40 - '@swc/core-linux-arm-gnueabihf': 1.7.40 - '@swc/core-linux-arm64-gnu': 1.7.40 - '@swc/core-linux-arm64-musl': 1.7.40 - '@swc/core-linux-x64-gnu': 1.7.40 - '@swc/core-linux-x64-musl': 1.7.40 - '@swc/core-win32-arm64-msvc': 1.7.40 - '@swc/core-win32-ia32-msvc': 1.7.40 - '@swc/core-win32-x64-msvc': 1.7.40 - '@swc/helpers': 0.5.13 + '@swc/core-darwin-arm64': 1.9.3 + '@swc/core-darwin-x64': 1.9.3 + '@swc/core-linux-arm-gnueabihf': 1.9.3 + '@swc/core-linux-arm64-gnu': 1.9.3 + '@swc/core-linux-arm64-musl': 1.9.3 + '@swc/core-linux-x64-gnu': 1.9.3 + '@swc/core-linux-x64-musl': 1.9.3 + '@swc/core-win32-arm64-msvc': 1.9.3 + '@swc/core-win32-ia32-msvc': 1.9.3 + '@swc/core-win32-x64-msvc': 1.9.3 + '@swc/helpers': 0.5.15 '@swc/counter@0.1.3': {} - '@swc/helpers@0.5.13': + '@swc/helpers@0.5.15': dependencies: - tslib: 2.8.0 + tslib: 2.8.1 - '@swc/types@0.1.13': + '@swc/types@0.1.17': dependencies: '@swc/counter': 0.1.3 @@ -3969,8 +3848,6 @@ snapshots: '@tootallnate/once@2.0.0': {} - '@trysound/sax@0.2.0': {} - '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -3981,7 +3858,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -3993,18 +3870,16 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__traverse@7.20.6': dependencies: '@babel/types': 7.26.0 - '@types/core-js@2.5.8': {} - '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.1 + '@types/node': 20.17.9 '@types/hast@3.0.4': dependencies: @@ -4027,21 +3902,17 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 20.17.1 + '@types/node': 20.17.9 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 '@types/jsdom@21.1.7': dependencies: - '@types/node': 20.17.1 + '@types/node': 20.17.9 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/node@20.17.1': + '@types/node@20.17.9': dependencies: undici-types: 6.19.8 @@ -4057,11 +3928,9 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@ungap/structured-clone@1.2.0': {} - abab@2.0.6: {} - abortcontroller-polyfill@1.7.5: {} + abortcontroller-polyfill@1.7.6: {} acorn-globals@7.0.1: dependencies: @@ -4184,8 +4053,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - boolbase@1.0.0: {} - brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -4201,8 +4068,8 @@ snapshots: browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001673 - electron-to-chromium: 1.5.47 + caniuse-lite: 1.0.30001684 + electron-to-chromium: 1.5.67 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -4226,9 +4093,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001673: {} - - ccount@2.0.1: {} + caniuse-lite@1.0.30001684: {} chalk@4.1.2: dependencies: @@ -4239,10 +4104,6 @@ snapshots: char-regex@1.0.2: {} - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - chrome-trace-event@1.0.4: {} ci-info@3.9.0: {} @@ -4282,34 +4143,30 @@ snapshots: dependencies: delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} - commander@12.1.0: {} - commander@7.2.0: {} - concat-map@0.0.1: {} convert-source-map@2.0.0: {} - core-js@3.38.1: {} + core-js@3.39.0: {} - cosmiconfig@9.0.0(typescript@5.6.3): + cosmiconfig@9.0.0(typescript@5.7.2): dependencies: env-paths: 2.2.1 import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 - create-jest@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)): + create-jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -4322,9 +4179,9 @@ snapshots: cross-env@7.0.3: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -4334,25 +4191,6 @@ snapshots: dependencies: type-fest: 1.4.0 - css-select@4.3.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 4.3.1 - domutils: 2.8.0 - nth-check: 2.1.1 - - css-tree@1.1.3: - dependencies: - mdn-data: 2.0.14 - source-map: 0.6.1 - - css-what@6.1.0: {} - - csso@4.2.0: - dependencies: - css-tree: 1.1.3 - cssom@0.3.8: {} cssom@0.5.0: {} @@ -4397,18 +4235,12 @@ snapshots: delayed-stream@1.0.0: {} - dequal@2.0.3: {} - detect-libc@1.0.3: {} detect-libc@2.0.3: {} detect-newline@3.1.0: {} - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - diff-sequences@29.6.3: {} diff@4.0.2: {} @@ -4419,6 +4251,12 @@ snapshots: domhandler: 4.3.1 entities: 2.2.0 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + domelementtype@2.3.0: {} domexception@4.0.0: @@ -4429,21 +4267,33 @@ snapshots: dependencies: domelementtype: 2.3.0 + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 - dotenv-expand@5.1.0: {} + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + + dotenv-expand@11.0.7: + dependencies: + dotenv: 16.4.5 - dotenv@7.0.0: {} + dotenv@16.4.5: {} ejs@3.1.10: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.47: {} + electron-to-chromium@1.5.67: {} element-internals-polyfill@1.3.12: {} @@ -4489,7 +4339,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -4501,7 +4351,7 @@ snapshots: execa@8.0.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 8.0.1 human-signals: 5.0.0 is-stream: 3.0.0 @@ -4598,24 +4448,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hast-util-to-html@9.0.3: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 - property-information: 6.5.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.4 - html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 @@ -4626,15 +4458,11 @@ snapshots: html-escaper@2.0.2: {} - html-void-elements@3.0.0: {} - - htmlnano@2.1.1(svgo@2.8.0)(typescript@5.6.3): + htmlnano@2.1.1(typescript@5.7.2): dependencies: - cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig: 9.0.0(typescript@5.7.2) posthtml: 0.16.6 timsort: 0.3.0 - optionalDependencies: - svgo: 2.8.0 transitivePeerDependencies: - typescript @@ -4645,6 +4473,13 @@ snapshots: domutils: 2.8.0 entities: 3.0.1 + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -4678,7 +4513,7 @@ snapshots: human-signals@5.0.0: {} - husky@9.1.6: {} + husky@9.1.7: {} iconv-lite@0.6.3: dependencies: @@ -4754,7 +4589,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -4764,7 +4599,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 7.6.3 @@ -4809,7 +4644,7 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.3 @@ -4829,16 +4664,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)): + jest-cli@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + create-jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + jest-config: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -4848,7 +4683,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)): + jest-config@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)): dependencies: '@babel/core': 7.26.0 '@jest/test-sequencer': 29.7.0 @@ -4873,8 +4708,8 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 20.17.1 - ts-node: 10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3) + '@types/node': 20.17.9 + ts-node: 10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -4904,7 +4739,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -4918,7 +4753,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -4928,7 +4763,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.1 + '@types/node': 20.17.9 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -4954,7 +4789,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -4967,7 +4802,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -5002,7 +4837,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -5030,7 +4865,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 cjs-module-lexer: 1.4.1 collect-v8-coverage: 1.0.2 @@ -5051,7 +4886,7 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/generator': 7.26.2 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) '@babel/types': 7.26.0 @@ -5076,7 +4911,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -5095,7 +4930,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.1 + '@types/node': 20.17.9 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -5104,17 +4939,17 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 20.17.1 + '@types/node': 20.17.9 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)): + jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + jest-cli: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -5148,7 +4983,7 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 + nwsapi: 2.2.16 parse5: 7.2.1 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -5175,7 +5010,7 @@ snapshots: http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.5 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.13 + nwsapi: 2.2.16 parse5: 7.2.1 rrweb-cssom: 0.7.1 saxes: 6.0.0 @@ -5203,50 +5038,50 @@ snapshots: leven@3.1.0: {} - lightningcss-darwin-arm64@1.27.0: + lightningcss-darwin-arm64@1.28.2: optional: true - lightningcss-darwin-x64@1.27.0: + lightningcss-darwin-x64@1.28.2: optional: true - lightningcss-freebsd-x64@1.27.0: + lightningcss-freebsd-x64@1.28.2: optional: true - lightningcss-linux-arm-gnueabihf@1.27.0: + lightningcss-linux-arm-gnueabihf@1.28.2: optional: true - lightningcss-linux-arm64-gnu@1.27.0: + lightningcss-linux-arm64-gnu@1.28.2: optional: true - lightningcss-linux-arm64-musl@1.27.0: + lightningcss-linux-arm64-musl@1.28.2: optional: true - lightningcss-linux-x64-gnu@1.27.0: + lightningcss-linux-x64-gnu@1.28.2: optional: true - lightningcss-linux-x64-musl@1.27.0: + lightningcss-linux-x64-musl@1.28.2: optional: true - lightningcss-win32-arm64-msvc@1.27.0: + lightningcss-win32-arm64-msvc@1.28.2: optional: true - lightningcss-win32-x64-msvc@1.27.0: + lightningcss-win32-x64-msvc@1.28.2: optional: true - lightningcss@1.27.0: + lightningcss@1.28.2: dependencies: detect-libc: 1.0.3 optionalDependencies: - lightningcss-darwin-arm64: 1.27.0 - lightningcss-darwin-x64: 1.27.0 - lightningcss-freebsd-x64: 1.27.0 - lightningcss-linux-arm-gnueabihf: 1.27.0 - lightningcss-linux-arm64-gnu: 1.27.0 - lightningcss-linux-arm64-musl: 1.27.0 - lightningcss-linux-x64-gnu: 1.27.0 - lightningcss-linux-x64-musl: 1.27.0 - lightningcss-win32-arm64-msvc: 1.27.0 - lightningcss-win32-x64-msvc: 1.27.0 + lightningcss-darwin-arm64: 1.28.2 + lightningcss-darwin-x64: 1.28.2 + lightningcss-freebsd-x64: 1.28.2 + lightningcss-linux-arm-gnueabihf: 1.28.2 + lightningcss-linux-arm64-gnu: 1.28.2 + lightningcss-linux-arm64-musl: 1.28.2 + lightningcss-linux-x64-gnu: 1.28.2 + lightningcss-linux-x64-musl: 1.28.2 + lightningcss-win32-arm64-msvc: 1.28.2 + lightningcss-win32-x64-msvc: 1.28.2 lilconfig@3.1.2: {} @@ -5282,10 +5117,10 @@ snapshots: lmdb@2.8.5: dependencies: - msgpackr: 1.11.0 + msgpackr: 1.11.2 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 - ordered-binary: 1.5.2 + ordered-binary: 1.5.3 weak-lru-cache: 1.2.2 optionalDependencies: '@lmdb/lmdb-darwin-arm64': 2.8.5 @@ -5334,43 +5169,12 @@ snapshots: punycode.js: 2.3.1 uc.micro: 2.1.0 - mdast-util-to-hast@13.2.0: - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.2.0 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.0 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.0.0 - vfile: 6.0.3 - - mdn-data@2.0.14: {} - mdurl@2.0.0: {} meow@12.1.1: {} merge-stream@2.0.0: {} - micromark-util-character@2.1.0: - dependencies: - micromark-util-symbol: 2.0.0 - micromark-util-types: 2.0.0 - - micromark-util-encode@2.0.0: {} - - micromark-util-sanitize-uri@2.0.0: - dependencies: - micromark-util-character: 2.1.0 - micromark-util-encode: 2.0.0 - micromark-util-symbol: 2.0.0 - - micromark-util-symbol@2.0.0: {} - - micromark-util-types@2.0.0: {} - micromatch@4.0.8: dependencies: braces: 3.0.3 @@ -5414,7 +5218,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.0: + msgpackr@1.11.2: optionalDependencies: msgpackr-extract: 3.0.3 @@ -5447,13 +5251,9 @@ snapshots: dependencies: path-key: 4.0.0 - nth-check@2.1.1: - dependencies: - boolbase: 1.0.0 - nullthrows@1.1.1: {} - nwsapi@2.2.13: {} + nwsapi@2.2.16: {} once@1.4.0: dependencies: @@ -5471,10 +5271,6 @@ snapshots: dependencies: mimic-function: 5.0.1 - oniguruma-to-js@0.4.3: - dependencies: - regex: 4.3.3 - open-cli@8.0.0: dependencies: file-type: 18.7.0 @@ -5490,7 +5286,7 @@ snapshots: is-inside-container: 1.0.0 is-wsl: 3.1.0 - ordered-binary@1.5.2: {} + ordered-binary@1.5.3: {} p-limit@2.3.0: dependencies: @@ -5506,21 +5302,22 @@ snapshots: p-try@2.2.0: {} - parcel@2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/utils': 2.12.0 + parcel@2.13.2(@swc/helpers@0.5.15)(typescript@5.7.2): + dependencies: + '@parcel/config-default': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15)(typescript@5.7.2) + '@parcel/core': 2.13.2(@swc/helpers@0.5.15) + '@parcel/diagnostic': 2.13.2 + '@parcel/events': 2.13.2 + '@parcel/feature-flags': 2.13.2 + '@parcel/fs': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/logger': 2.13.2 + '@parcel/package-manager': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15))(@swc/helpers@0.5.15) + '@parcel/reporter-cli': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/reporter-dev-server': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/reporter-tracer': 2.13.2(@parcel/core@2.13.2(@swc/helpers@0.5.15)) + '@parcel/utils': 2.13.2 chalk: 4.1.2 - commander: 7.2.0 + commander: 12.1.0 get-port: 4.2.0 transitivePeerDependencies: - '@swc/helpers' @@ -5529,6 +5326,7 @@ snapshots: - purgecss - relateurl - srcset + - svgo - terser - typescript - uncss @@ -5539,7 +5337,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5574,13 +5372,13 @@ snapshots: postcss-value-parser@4.2.0: {} - posthtml-parser@0.10.2: + posthtml-parser@0.11.0: dependencies: htmlparser2: 7.2.0 - posthtml-parser@0.11.0: + posthtml-parser@0.12.1: dependencies: - htmlparser2: 7.2.0 + htmlparser2: 9.1.0 posthtml-render@3.0.0: dependencies: @@ -5591,7 +5389,7 @@ snapshots: posthtml-parser: 0.11.0 posthtml-render: 3.0.0 - prettier@3.3.3: {} + prettier@3.4.1: {} pretty-format@29.7.0: dependencies: @@ -5604,9 +5402,9 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 - property-information@6.5.0: {} - - psl@1.9.0: {} + psl@1.14.0: + dependencies: + punycode: 2.3.1 punycode.js@2.3.1: {} @@ -5620,7 +5418,7 @@ snapshots: react-is@18.3.1: {} - react-refresh@0.9.0: {} + react-refresh@0.14.2: {} readable-stream@3.6.2: dependencies: @@ -5632,12 +5430,8 @@ snapshots: dependencies: readable-stream: 3.6.2 - regenerator-runtime@0.13.11: {} - regenerator-runtime@0.14.1: {} - regex@4.3.3: {} - require-directory@2.1.1: {} requires-port@1.0.0: {} @@ -5687,15 +5481,6 @@ snapshots: shebang-regex@3.0.0: {} - shiki@1.22.1: - dependencies: - '@shikijs/core': 1.22.1 - '@shikijs/engine-javascript': 1.22.1 - '@shikijs/engine-oniguruma': 1.22.1 - '@shikijs/types': 1.22.1 - '@shikijs/vscode-textmate': 9.3.0 - '@types/hast': 3.0.4 - signal-exit@3.0.7: {} signal-exit@4.1.0: {} @@ -5721,14 +5506,10 @@ snapshots: source-map@0.6.1: {} - space-separated-tokens@2.0.2: {} - sprintf-js@1.0.3: {} srcset@4.0.0: {} - stable@0.1.8: {} - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -5756,11 +5537,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -5792,16 +5568,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svgo@2.8.0: - dependencies: - '@trysound/sax': 0.2.0 - commander: 7.2.0 - css-select: 4.3.0 - css-tree: 1.1.3 - csso: 4.2.0 - picocolors: 1.1.1 - stable: 0.1.8 - symbol-tree@3.2.4: {} temp-dir@3.0.0: {} @@ -5823,11 +5589,11 @@ snapshots: timsort@0.3.0: {} - tldts-core@6.1.56: {} + tldts-core@6.1.64: {} - tldts@6.1.56: + tldts@6.1.64: dependencies: - tldts-core: 6.1.56 + tldts-core: 6.1.64 tmpl@1.0.5: {} @@ -5842,14 +5608,14 @@ snapshots: tough-cookie@4.1.4: dependencies: - psl: 1.9.0 + psl: 1.14.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 tough-cookie@5.0.0: dependencies: - tldts: 6.1.56 + tldts: 6.1.64 tr46@3.0.0: dependencies: @@ -5859,20 +5625,18 @@ snapshots: dependencies: punycode: 2.3.1 - trim-lines@3.0.1: {} - - ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)))(typescript@5.6.3): + ts-jest@29.2.5(@babel/core@7.26.0)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.26.0))(jest@29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)))(typescript@5.7.2): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.17.1)(ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3)) + jest: 29.7.0(@types/node@20.17.9)(ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.6.3 - typescript: 5.6.3 + typescript: 5.7.2 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.26.0 @@ -5880,27 +5644,27 @@ snapshots: '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.26.0) - ts-node@10.9.2(@swc/core@1.7.40(@swc/helpers@0.5.13))(@types/node@20.17.1)(typescript@5.6.3): + ts-node@10.9.2(@swc/core@1.9.3(@swc/helpers@0.5.15))(@types/node@20.17.9)(typescript@5.7.2): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.17.1 + '@types/node': 20.17.9 acorn: 8.14.0 acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.6.3 + typescript: 5.7.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@swc/core': 1.9.3(@swc/helpers@0.5.15) - tslib@2.8.0: {} + tslib@2.8.1: {} type-detect@4.0.8: {} @@ -5912,20 +5676,20 @@ snapshots: type-fest@2.19.0: {} - typedoc-plugin-mdn-links@3.3.5(typedoc@0.26.10(typescript@5.6.3)): + typedoc-plugin-mdn-links@4.0.2(typedoc@0.27.2(typescript@5.7.2)): dependencies: - typedoc: 0.26.10(typescript@5.6.3) + typedoc: 0.27.2(typescript@5.7.2) - typedoc@0.26.10(typescript@5.6.3): + typedoc@0.27.2(typescript@5.7.2): dependencies: + '@gerrit0/mini-shiki': 1.24.1 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - shiki: 1.22.1 - typescript: 5.6.3 - yaml: 2.6.0 + typescript: 5.7.2 + yaml: 2.6.1 - typescript@5.6.3: {} + typescript@5.7.2: {} uc.micro@2.1.0: {} @@ -5935,29 +5699,6 @@ snapshots: dependencies: crypto-random-string: 4.0.0 - unist-util-is@6.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.1: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - - unist-util-visit@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.0 - unist-util-visit-parents: 6.0.1 - universalify@0.2.0: {} update-browserslist-db@1.1.1(browserslist@4.24.2): @@ -5983,16 +5724,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 2.0.0 - vfile-message@4.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.2 - w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 @@ -6009,12 +5740,12 @@ snapshots: web-streams-polyfill@4.0.0: {} - web-utility@4.4.1(typescript@5.6.3): + web-utility@4.4.2(typescript@5.7.2): dependencies: - '@swc/helpers': 0.5.13 + '@swc/helpers': 0.5.15 element-internals-polyfill: 1.3.12 regenerator-runtime: 0.14.1 - typescript: 5.6.3 + typescript: 5.7.2 webidl-conversions@7.0.0: {} @@ -6077,7 +5808,7 @@ snapshots: yaml@2.5.1: {} - yaml@2.6.0: {} + yaml@2.6.1: {} yargs-parser@21.1.1: {} @@ -6094,5 +5825,3 @@ snapshots: yn@3.1.1: {} yocto-queue@0.1.0: {} - - zwitch@2.0.4: {} diff --git a/source/HTTPClient.ts b/source/HTTPClient.ts index 96d24f8..536223d 100644 --- a/source/HTTPClient.ts +++ b/source/HTTPClient.ts @@ -7,7 +7,7 @@ import { BodyRequestMethods, HTTPError } from './HTTPRequest'; -import { serialize } from './utility'; +import { ProgressData, serialize } from './utility'; const { splice } = Array.prototype; @@ -32,8 +32,7 @@ export interface DownloadOptions range?: [number?, number?]; } -export interface TransferProgress - extends Pick { +export interface TransferProgress extends ProgressData { percent: number; buffer: ArrayBuffer; } diff --git a/source/HTTPRequest.ts b/source/HTTPRequest.ts index 88414dd..447d8ae 100644 --- a/source/HTTPRequest.ts +++ b/source/HTTPRequest.ts @@ -1,10 +1,13 @@ -import 'core-js/es/object/from-entries'; -import 'core-js/es/promise/with-resolvers'; -import 'core-js/es/string/match-all'; import type { ReadableStream } from 'web-streams-polyfill'; import { parseJSON } from 'web-utility'; -import { parseDocument, ProgressData, streamFromProgress } from './utility'; +import { + emitStreamProgress, + parseDocument, + ProgressData, + ProgressEventTarget, + streamFromProgress +} from './utility'; export enum BodyRequestMethods { POST = 'POST', @@ -19,11 +22,11 @@ export interface RequestOptions { responseType?: XMLHttpRequestResponseType; } -export interface Request extends RequestOptions { +export interface Request extends RequestOptions { method?: 'HEAD' | 'GET' | keyof typeof BodyRequestMethods; path: string | URL; headers?: HeadersInit; - body?: BodyInit | HTMLFormElement | any; + body?: BodyInit | HTMLFormElement | T; signal?: AbortSignal; } @@ -46,11 +49,7 @@ export class HTTPError extends URIError { export type LinkHeader = Record< string, - { - URI: string; - rel: string; - title?: string; - } + { URI: string; rel: string; title?: string } >; export const headerParser = { @@ -102,13 +101,19 @@ export function requestXHR({ signal, ...rest }: Request): RequestResult { - const request = new XMLHttpRequest(), - header_list = - headers instanceof Array - ? headers - : headers?.[Symbol.iterator] instanceof Function - ? [...(headers as Iterable)] - : Object.entries(headers); + const request = new XMLHttpRequest(); + const header_list = + headers instanceof Array + ? headers + : headers?.[Symbol.iterator] instanceof Function + ? [...(headers as Iterable)] + : Object.entries(headers); + const bodyPromise = + body instanceof globalThis.ReadableStream + ? Array.fromAsync(body as ReadableStream).then( + parts => new Blob(parts) + ) + : Promise.resolve(body); const abort = () => request.abort(); signal?.addEventListener('abort', abort); @@ -138,7 +143,7 @@ export function requestXHR({ Object.assign(request, rest); - request.send(body); + bodyPromise.then(body => request.send(body)); }).then(({ body, ...meta }) => { signal?.throwIfAborted(); @@ -191,28 +196,50 @@ export function requestFetch({ : responseType === 'arraybuffer' || responseType === 'blob' ? { ...headers, Accept: 'application/octet-stream' } : headers; + const isStream = body instanceof globalThis.ReadableStream; + var upload: AsyncGenerator | undefined; + + if (isStream) { + const uploadProgress = new EventTarget(); + + body = globalThis.ReadableStream['from']( + emitStreamProgress( + body as ReadableStream, + +headers['Content-Length'], + uploadProgress + ) + ) as ReadableStream; + + upload = streamFromProgress(uploadProgress); + } + const downloadProgress = new EventTarget(); - const responsePromise = fetch(path + '', { + const response = fetch(path + '', { method, headers, credentials: withCredentials ? 'include' : 'omit', body, - signal: signals[0] && AbortSignal.any(signals) - }); - - return { - response: parseResponse(responsePromise, responseType), - download: iterateFetchBody(responsePromise) - }; + signal: signals[0] && AbortSignal.any(signals), + // @ts-expect-error https://developer.chrome.com/docs/capabilities/web-apis/fetch-streaming-requests + duplex: isStream ? 'half' : undefined + }).then(response => + parseResponse(response, responseType, downloadProgress) + ); + return { response, upload, download: streamFromProgress(downloadProgress) }; } export async function parseResponse( - responsePromise: Promise, - responseType: Request['responseType'] + { status, statusText, headers, body }: globalThis.Response, + responseType: Request['responseType'], + downloadProgress: ProgressEventTarget ): Promise> { - const { status, statusText, headers, body } = ( - await responsePromise - ).clone(); + const stream = globalThis.ReadableStream['from']( + emitStreamProgress( + body as ReadableStream, + +headers.get('Content-Length'), + downloadProgress + ) + ) as ReadableStream; const contentType = headers.get('Content-Type') || ''; @@ -222,11 +249,8 @@ export async function parseResponse( const rBody = status === 204 ? undefined - : await parseFetchBody( - body as ReadableStream, - contentType, - responseType - ); + : await parseFetchBody(stream, contentType, responseType); + return { status, statusText, headers: header, body: rBody }; } @@ -235,11 +259,7 @@ export async function parseFetchBody( contentType: string, responseType: Request['responseType'] ) { - const chunks: Uint8Array[] = []; - - for await (const chunk of stream) chunks.push(chunk); - - const blob = new Blob(chunks, { type: contentType }); + const blob = new Blob(await Array.fromAsync(stream), { type: contentType }); if (responseType === 'blob') return blob as B; @@ -252,20 +272,5 @@ export async function parseFetchBody( return parseBody(text, contentType); } -export async function* iterateFetchBody( - responsePromise: Promise -) { - const { headers, body } = (await responsePromise).clone(); - - const total = +headers.get('Content-Length'); - var loaded = 0; - - for await (const { byteLength } of body as ReadableStream) { - loaded += byteLength; - - yield { total, loaded }; - } -} - export const request = typeof globalThis.XMLHttpRequest === 'function' ? requestXHR : requestFetch; diff --git a/source/polyfill.ts b/source/polyfill.ts index 1baab07..9a470d7 100644 --- a/source/polyfill.ts +++ b/source/polyfill.ts @@ -1,3 +1,8 @@ +import 'core-js/es/object/from-entries'; +import 'core-js/es/promise/with-resolvers'; +import 'core-js/es/string/match-all'; +import 'core-js/full/array/from-async'; + export async function polyfill(origin = 'http://127.0.0.1') { if (globalThis.XMLHttpRequest) return; @@ -16,8 +21,12 @@ export async function polyfill(origin = 'http://127.0.0.1') { 'XMLSerializer', 'FormData', 'TextEncoder', - 'XMLHttpRequest', + 'EventTarget', 'AbortSignal', + 'ReadableStream', + 'ArrayBuffer', + 'Blob', + 'XMLHttpRequest', 'FileReader' ]) globalThis[key] ||= window[key]; diff --git a/source/utility.ts b/source/utility.ts index 4af2117..ae4b072 100644 --- a/source/utility.ts +++ b/source/utility.ts @@ -6,46 +6,26 @@ import { formToJSON } from 'web-utility'; -if (typeof globalThis.AbortSignal === 'function') { - /** - * @see {@link https://github.com/mo/abortcontroller-polyfill/issues/70} - */ - AbortSignal.prototype.throwIfAborted ||= function (this: AbortSignal) { - const { aborted, reason = 'Aborted' } = this; - - if (!aborted) return; - - throw reason instanceof DOMException - ? reason - : new DOMException( - reason instanceof Error ? reason.message : reason + '', - 'AbortError' - ); - }; - - /** - * @see {@link https://github.com/mo/abortcontroller-polyfill/issues/73#issuecomment-2085543258} - */ - AbortSignal.any ||= (iterable: Iterable) => { - const controller = new AbortController(); - - function abort(this: AbortSignal) { - controller.abort(this.reason); - clean(); - } - function clean() { - for (const signal of iterable) - signal.removeEventListener('abort', abort); - } - for (const signal of iterable) - if (signal.aborted) { - controller.abort(signal.reason); - break; - } else signal.addEventListener('abort', abort); - - return controller.signal; - }; -} +globalThis.ProgressEvent ||= class ProgressEvent< + T extends EventTarget = EventTarget +> extends Event { + declare target: T | null; + + lengthComputable: boolean; + total: number; + loaded: number; + + constructor( + type: string, + { lengthComputable, total, loaded, ...meta }: ProgressEventInit = {} + ) { + super(type, meta); + + this.lengthComputable = lengthComputable; + this.total = total; + this.loaded = loaded; + } +}; export async function parseDocument(text: string, contentType = '') { const [type] = contentType?.split(';') || []; @@ -73,7 +53,10 @@ export function makeFormData(data: Record) { return formData; } -export function serializeNode(root: Node) { +export function serializeNode(root: Node): { + contentType: string; + data: string | URLSearchParams | FormData; +} { var contentType: string; if (!(root instanceof HTMLFormElement)) @@ -81,8 +64,7 @@ export function serializeNode(root: Node) { contentType: root instanceof SVGElement ? 'image/svg' - : root instanceof HTMLDocument || - root instanceof HTMLElement + : root instanceof Document || root instanceof HTMLElement ? 'text/html' : 'application/xml', data: stringifyDOM(root) @@ -104,10 +86,7 @@ export function serializeNode(root: Node) { .join('\n') }; case 'application/x-www-form-urlencoded': - return { - contentType, - data: new URLSearchParams(data) + '' - }; + return { contentType, data: new URLSearchParams(data) }; default: return { contentType: 'application/json', @@ -116,7 +95,13 @@ export function serializeNode(root: Node) { } } -export function serialize(data: T, contentType?: string) { +export function serialize( + data: T, + contentType?: string +): { + data: T | BodyInit; + contentType?: string; +} { const [type] = contentType?.split(';') || []; switch (type) { @@ -186,11 +171,9 @@ export const streamFromProgress = (target: T) => createAsyncIterator>( ({ next, complete, error }) => { const handleProgress = ({ loaded, total }: ProgressEvent) => { - if (loaded < total) next({ loaded, total }); - else { - if (loaded === total) next({ loaded, total }); - complete(); - } + next({ loaded, total }); + + if (loaded >= total) complete(); }; target.addEventListener('progress', handleProgress); target.addEventListener('error', error); @@ -201,6 +184,27 @@ export const streamFromProgress = (target: T) => }; } ); +export async function* emitStreamProgress( + stream: import('web-streams-polyfill').ReadableStream, + total: number, + eventTarget: ProgressEventTarget +): AsyncGenerator { + var loaded = 0; + + for await (const chunk of stream) { + yield chunk; + + loaded += (chunk as Uint8Array).byteLength; + + const event = new ProgressEvent('progress', { + lengthComputable: isNaN(total), + loaded, + total + }); + eventTarget.dispatchEvent(event); + } +} + export enum FileMethod { text = 'readAsText', dataURL = 'readAsDataURL', diff --git a/test/Client.spec.ts b/test/Client.spec.ts new file mode 100644 index 0000000..56935e8 --- /dev/null +++ b/test/Client.spec.ts @@ -0,0 +1,68 @@ +import './XMLHttpRequest'; + +import { HTTPClient } from '../source'; + +describe('HTTP Client', () => { + const client = new HTTPClient({ responseType: 'json' }); + + it('should return Data while Status is less then 300', async () => { + const { headers, body } = await client.get('/200'); + + expect(headers).toEqual({ 'Content-Type': 'application/json' }); + expect(body).toEqual({ message: 'Hello, World!' }); + }); + + it('should throw Error while Status is greater then 300', async () => { + try { + await client.get('/404'); + } catch (error) { + expect({ ...error }).toEqual({ + request: { + method: 'GET', + path: 'http://localhost/404', + headers: {} + }, + response: { + status: 404, + statusText: 'Not Found', + headers: { 'Content-Type': 'application/json' }, + body: { message: 'Hello, Error!' } + } + }); + } + }); + + it('should serialize JSON automatically', async () => { + const { body } = await client.post('/201', { test: 'example' }); + + expect(body).toEqual({ test: 'example' }); + }); + + it('should invoke Custom Middlewares', async () => { + const data: any[] = []; + + client.use(async ({ request: { path }, response }, next) => { + data.push(path); + + await next(); + + data.push(response.status); + }); + + await client.get('/200'); + + expect(data).toEqual(['/200', 200]); + }); + + it('should throw Abort Error as Abort Signal emitted', async () => { + const controller = new AbortController(); + + setTimeout(() => controller.abort()); + + try { + await client.get('/200', {}, { signal: controller.signal }); + } catch (error) { + expect(error.message).toBe('This operation was aborted'); + } + }); +}); diff --git a/test/Request-Client.spec.ts b/test/Request-Client.spec.ts index 12835e6..8b2607a 100644 --- a/test/Request-Client.spec.ts +++ b/test/Request-Client.spec.ts @@ -1,34 +1,52 @@ -import { Blob } from 'buffer'; +import { Blob, ReadableStream } from './XMLHttpRequest'; -import { HTTPClient, ProgressData, request, requestFetch } from '../source'; -import { XMLHttpRequest } from './XMLHttpRequest'; -// @ts-ignore -// https://github.com/jsdom/jsdom/issues/2555#issuecomment-1864762292 -global.Blob = Blob; -// @ts-ignore -global.XMLHttpRequest = XMLHttpRequest; +import { requestFetch, requestXHR } from '../source'; describe('HTTP Request', () => { - it('should return a Promise & 2 Observable with fetch()', async () => { - const { download, response } = requestFetch<{ login: string }>({ - path: 'https://api.github.com/users/TechQuery', + it('should return a Promise & an Observable with fetch()', async () => { + const { download, response } = requestFetch<{ id: number }>({ + path: 'https://jsonplaceholder.typicode.com/posts/1', responseType: 'json' }); expect(Symbol.asyncIterator in download).toBeTruthy(); - var progress: ProgressData = { loaded: 0, total: 0 }; + const { loaded, total } = (await Array.fromAsync(download)).at(-1); - for await (const part of download) progress = part; + expect(loaded).toBeGreaterThanOrEqual(total); - expect(progress.loaded).toBeGreaterThanOrEqual(progress.total); + const { body } = await response; + + expect(body).toMatchObject({ id: 1 }); + }); + + it('should return a Promise & 2 Observable with fetch() & Readable Stream', async () => { + const blob = new Blob([JSON.stringify({ title: 'KoAJAX' })], { + type: 'application/json' + }); + const { upload, download, response } = requestFetch<{ title: string }>({ + method: 'POST', + path: 'https://jsonplaceholder.typicode.com/posts', + headers: { + 'Content-Type': blob.type, + 'Content-Length': blob.size + '' + }, + body: ReadableStream.from(blob.stream()), + responseType: 'json' + }); + expect(Symbol.asyncIterator in upload!).toBeTruthy(); + expect(Symbol.asyncIterator in download).toBeTruthy(); + + const { loaded, total } = (await Array.fromAsync(upload!)).at(-1); + + expect(loaded).toBeGreaterThanOrEqual(total); const { body } = await response; - expect(body).toMatchObject({ login: 'TechQuery' }); + expect(body).toMatchObject({ title: 'KoAJAX' }); }); - it('should return a Promise & 2 Observable', async () => { - const { upload, download, response } = request({ + it('should return a Promise & 2 Observable with XHR', async () => { + const { upload, download, response } = requestXHR({ path: '/200', responseType: 'json' }); @@ -43,69 +61,22 @@ describe('HTTP Request', () => { body: { message: 'Hello, World!' } }); }); -}); - -describe('HTTP Client', () => { - const client = new HTTPClient({ responseType: 'json' }); - - it('should return Data while Status is less then 300', async () => { - const { headers, body } = await client.get('/200'); - - expect(headers).toEqual({ 'Content-Type': 'application/json' }); - expect(body).toEqual({ message: 'Hello, World!' }); - }); - - it('should throw Error while Status is greater then 300', async () => { - try { - await client.get('/404'); - } catch (error) { - expect({ ...error }).toEqual({ - request: { - method: 'GET', - path: 'http://localhost/404', - headers: {} - }, - response: { - status: 404, - statusText: 'Not Found', - headers: { 'Content-Type': 'application/json' }, - body: { message: 'Hello, Error!' } - } - }); - } - }); - it('should serialize JSON automatically', async () => { - const { body } = await client.post('/201', { test: 'example' }); - - expect(body).toEqual({ test: 'example' }); - }); - - it('should invoke Custom Middlewares', async () => { - const data: any[] = []; - - client.use(async ({ request: { path }, response }, next) => { - data.push(path); - - await next(); - - data.push(response.status); + it('should send a Readable Stream with XHR', async () => { + const blob = new Blob([JSON.stringify({ name: 'KoAJAX' })], { + type: 'application/json' + }); + const { response } = requestXHR({ + method: 'POST', + path: '/201', + body: ReadableStream.from(blob.stream()), + responseType: 'json' + }); + expect(await response).toEqual({ + status: 201, + statusText: 'Created', + headers: { 'Content-Type': 'application/json' }, + body: { name: 'KoAJAX' } }); - - await client.get('/200'); - - expect(data).toEqual(['/200', 200]); - }); - - it('should throw Abort Error as Abort Signal emitted', async () => { - const controller = new AbortController(); - - setTimeout(() => controller.abort()); - - try { - await client.get('/200', {}, { signal: controller.signal }); - } catch (error) { - expect(error).toBeInstanceOf(DOMException); - } }); }); diff --git a/test/XMLHttpRequest.ts b/test/XMLHttpRequest.ts index e355ec0..1b5d717 100644 --- a/test/XMLHttpRequest.ts +++ b/test/XMLHttpRequest.ts @@ -1,7 +1,13 @@ -import { EventEmitter } from 'events'; +import { AbortController } from 'abortcontroller-polyfill/dist/cjs-ponyfill'; +import { Blob } from 'buffer'; +import { ReadableStream } from 'web-streams-polyfill'; + +export { Blob, ReadableStream }; + +import '../source/polyfill'; import { Request } from '../source'; -export class XMLHttpRequest extends EventEmitter { +export class XMLHttpRequest extends EventTarget { readyState = 0; onreadystatechange?: () => any; @@ -23,7 +29,7 @@ export class XMLHttpRequest extends EventEmitter { setRequestHeader() {} - upload = new EventEmitter(); + upload = new EventTarget(); status: number; statusText: string; @@ -35,35 +41,41 @@ export class XMLHttpRequest extends EventEmitter { setTimeout(() => this.#updateReadyState(3)); - setTimeout(() => { - if (this.readyState > 3) return; - - this.status = Number(this.responseURL.split('/').slice(-1)[0]); - - switch (this.status) { - case 200: { - this.statusText = 'OK'; - this.response = { message: 'Hello, World!' }; - break; - } - case 201: { - this.statusText = 'Created'; - this.response = - typeof body === 'string' ? JSON.parse(body) : ''; - break; - } - case 404: { - this.statusText = 'Not Found'; - this.response = { message: 'Hello, Error!' }; - } + setTimeout(() => this.#mockResponse(body)); + } + + async #mockResponse(body: Request['body']) { + if (this.readyState > 3) return; + + this.status = Number(this.responseURL.split('/').slice(-1)[0]); + + switch (this.status) { + case 200: { + this.statusText = 'OK'; + this.response = { message: 'Hello, World!' }; + break; + } + case 201: { + this.statusText = 'Created'; + this.response = + typeof body === 'string' + ? JSON.parse(body) + : body instanceof Blob + ? await body.text() + : body; + break; + } + case 404: { + this.statusText = 'Not Found'; + this.response = { message: 'Hello, Error!' }; } + } - if (this.responseType === 'json') - this.responseText = JSON.stringify(this.response); - else this.response = JSON.stringify(this.response); + if (this.responseType === 'json') + this.responseText = JSON.stringify(this.response); + else this.response = JSON.stringify(this.response); - this.#updateReadyState(4); - }); + this.#updateReadyState(4); } abort() { @@ -79,3 +91,12 @@ export class XMLHttpRequest extends EventEmitter { return 'content-type: application/json'; } } + +global.AbortController = AbortController; +// @ts-ignore +global.ReadableStream = ReadableStream; +// @ts-ignore +// https://github.com/jsdom/jsdom/issues/2555#issuecomment-1864762292 +global.Blob = Blob; +// @ts-ignore +global.XMLHttpRequest = XMLHttpRequest; diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 0000000..b66a0bb --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "target": "ES6" + }, + "include": ["*.ts"] +} diff --git a/test/utility.spec.ts b/test/utility.spec.ts index 8d41b00..7dff269 100644 --- a/test/utility.spec.ts +++ b/test/utility.spec.ts @@ -70,16 +70,18 @@ describe('HTTP utility', () => { const [form] = document.forms; - expect(serializeNode(form)).toEqual({ - data: 'test=1%2C3&example=4', - contentType: 'application/x-www-form-urlencoded' - }); + const result1 = serializeNode(form); + + expect(result1.data + '').toBe('test=1%2C3&example=4'); + expect(result1.contentType).toBe( + 'application/x-www-form-urlencoded' + ); form.enctype = 'text/plain'; - expect(serializeNode(form)).toEqual({ - data: 'test=1,3\nexample=4', - contentType: 'text/plain' - }); + const result2 = serializeNode(form); + + expect(result2.data + '').toBe('test=1,3\nexample=4'); + expect(result2.contentType).toBe('text/plain'); }); }); diff --git a/tsconfig.json b/tsconfig.json index 636cf12..5ff9f5c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -15,6 +15,16 @@ "excludeExternals": true, "excludePrivate": true, "readme": "./ReadMe.md", - "plugin": ["typedoc-plugin-mdn-links"] + "plugin": ["typedoc-plugin-mdn-links"], + "highlightLanguages": [ + "powershell", + "diff", + "html", + "json", + "javascript", + "jsx", + "typescript", + "tsx" + ] } }