diff --git a/.vscode/settings.json b/.vscode/settings.json
index 8914035..6ac5e03 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,10 +1,5 @@
{
+ "typescript.tsdk": "node_modules/typescript/lib",
"editor.defaultFormatter": "esbenp.prettier-vscode",
- "editor.detectIndentation": false,
- "editor.formatOnSave": true,
- "editor.formatOnType": true,
- "editor.codeActionsOnSave": {
- "source.fixAll": "explicit"
- },
- "typescript.tsdk": "node_modules/typescript/lib"
+ "editor.formatOnSave": true
}
diff --git a/dev/Readonly.tsx b/dev/Readonly.tsx
index 44eb607..96cad35 100644
--- a/dev/Readonly.tsx
+++ b/dev/Readonly.tsx
@@ -17,11 +17,14 @@ export const Component: React.FC = () => {
renderCount: {renderCount}
shallowReadonlyObject = {JSON.stringify(shallowReadonlyObject, null, 2)}
+ {/* @ts-ignore */}
readonlyObject = {JSON.stringify(readonlyObject, null, 2)}
+ {/* @ts-ignore */}
+ {/* @ts-ignore */}
)
diff --git a/package.json b/package.json
index b4e4d71..c6b370c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "veact",
- "version": "1.0.0-beta.2",
+ "version": "1.0.0",
"description": "Mutable state enhancer library for React by @vue/reactivity",
"keywords": [
"React",
@@ -50,7 +50,7 @@
"react-dom": "^16.8.0 || ^17 || ^18 || ^19"
},
"dependencies": {
- "@vue/reactivity": "^3.5.0-beta.2"
+ "@vue/reactivity": ">=3.5"
},
"devDependencies": {
"@eslint/js": "^9.x",
@@ -64,14 +64,14 @@
"eslint-config-prettier": "^9.x",
"eslint-plugin-prettier": "^5.x",
"globals": "^15.9.0",
- "jsdom": "^24.x",
+ "happy-dom": "^15.x",
"prettier": "^3.x",
"react": "^18.x",
"react-dom": "^18.x",
"typescript": "^5.5.4",
"typescript-eslint": "^8.x",
"vite": "^5.x",
- "vite-plugin-dts": "^4.0.3",
+ "vite-plugin-dts": "^4.1.0",
"vitest": "^2.x"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 709dba0..5d20d2b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -9,45 +9,45 @@ importers:
.:
dependencies:
'@vue/reactivity':
- specifier: ^3.5.0-beta.2
- version: 3.5.0-beta.2
+ specifier: '>=3.5'
+ version: 3.5.2
devDependencies:
'@eslint/js':
specifier: ^9.x
- version: 9.9.0
+ version: 9.9.1
'@testing-library/react':
specifier: ^16.x
- version: 16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@types/eslint':
specifier: ^9.x
- version: 9.6.0
+ version: 9.6.1
'@types/react':
specifier: ^18.x
- version: 18.3.3
+ version: 18.3.5
'@types/react-dom':
specifier: ^18.x
version: 18.3.0
'@vitejs/plugin-react':
specifier: ^4.x
- version: 4.3.1(vite@5.4.0)
+ version: 4.3.1(vite@5.4.3)
'@vitest/coverage-v8':
specifier: ^2.0.5
- version: 2.0.5(vitest@2.0.5(jsdom@24.1.1))
+ version: 2.0.5(vitest@2.0.5(happy-dom@15.7.3))
eslint:
specifier: ^9.x
- version: 9.9.0
+ version: 9.9.1
eslint-config-prettier:
specifier: ^9.x
- version: 9.1.0(eslint@9.9.0)
+ version: 9.1.0(eslint@9.9.1)
eslint-plugin-prettier:
specifier: ^5.x
- version: 5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@9.9.0))(eslint@9.9.0)(prettier@3.3.3)
+ version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.9.1))(eslint@9.9.1)(prettier@3.3.3)
globals:
specifier: ^15.9.0
version: 15.9.0
- jsdom:
- specifier: ^24.x
- version: 24.1.1
+ happy-dom:
+ specifier: ^15.x
+ version: 15.7.3
prettier:
specifier: ^3.x
version: 3.3.3
@@ -62,16 +62,16 @@ importers:
version: 5.5.4
typescript-eslint:
specifier: ^8.x
- version: 8.1.0(eslint@9.9.0)(typescript@5.5.4)
+ version: 8.4.0(eslint@9.9.1)(typescript@5.5.4)
vite:
specifier: ^5.x
- version: 5.4.0
+ version: 5.4.3
vite-plugin-dts:
- specifier: ^4.0.3
- version: 4.0.3(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0)
+ specifier: ^4.1.0
+ version: 4.1.0(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3)
vitest:
specifier: ^2.x
- version: 2.0.5(jsdom@24.1.1)
+ version: 2.0.5(happy-dom@15.7.3)
packages:
@@ -83,16 +83,16 @@ packages:
resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==}
engines: {node: '>=6.9.0'}
- '@babel/compat-data@7.25.2':
- resolution: {integrity: sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==}
+ '@babel/compat-data@7.25.4':
+ resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==}
engines: {node: '>=6.9.0'}
'@babel/core@7.25.2':
resolution: {integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==}
engines: {node: '>=6.9.0'}
- '@babel/generator@7.25.0':
- resolution: {integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==}
+ '@babel/generator@7.25.6':
+ resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==}
engines: {node: '>=6.9.0'}
'@babel/helper-compilation-targets@7.25.2':
@@ -129,16 +129,16 @@ packages:
resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==}
engines: {node: '>=6.9.0'}
- '@babel/helpers@7.25.0':
- resolution: {integrity: sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==}
+ '@babel/helpers@7.25.6':
+ resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==}
engines: {node: '>=6.9.0'}
'@babel/highlight@7.24.7':
resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==}
engines: {node: '>=6.9.0'}
- '@babel/parser@7.25.3':
- resolution: {integrity: sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==}
+ '@babel/parser@7.25.6':
+ resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==}
engines: {node: '>=6.0.0'}
hasBin: true
@@ -154,20 +154,20 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/runtime@7.25.0':
- resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==}
+ '@babel/runtime@7.25.6':
+ resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==}
engines: {node: '>=6.9.0'}
'@babel/template@7.25.0':
resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.25.3':
- resolution: {integrity: sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==}
+ '@babel/traverse@7.25.6':
+ resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.25.2':
- resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==}
+ '@babel/types@7.25.6':
+ resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
engines: {node: '>=6.9.0'}
'@bcoe/v8-coverage@0.2.3':
@@ -321,16 +321,16 @@ packages:
resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==}
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
- '@eslint/config-array@0.17.1':
- resolution: {integrity: sha512-BlYOpej8AQ8Ev9xVqroV7a02JK3SkBAaN9GfMMH9W6Ch8FlQlkjGw4Ir7+FgYwfirivAf4t+GtzuAxqfukmISA==}
+ '@eslint/config-array@0.18.0':
+ resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.1.0':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@eslint/js@9.9.0':
- resolution: {integrity: sha512-hhetes6ZHP3BlXLxmd8K2SNgkhNSi+UcecbnwWKwpP7kyi/uC75DJ1lOOBO3xrC4jyojtGE3YxKZPHfk4yrgug==}
+ '@eslint/js@9.9.1':
+ resolution: {integrity: sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.4':
@@ -413,83 +413,83 @@ packages:
rollup:
optional: true
- '@rollup/rollup-android-arm-eabi@4.20.0':
- resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==}
+ '@rollup/rollup-android-arm-eabi@4.21.2':
+ resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.20.0':
- resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==}
+ '@rollup/rollup-android-arm64@4.21.2':
+ resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.20.0':
- resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==}
+ '@rollup/rollup-darwin-arm64@4.21.2':
+ resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.20.0':
- resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==}
+ '@rollup/rollup-darwin-x64@4.21.2':
+ resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
- resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==}
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
+ resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm-musleabihf@4.20.0':
- resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==}
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
+ resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.20.0':
- resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==}
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
+ resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.20.0':
- resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==}
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
+ resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
- resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
+ resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==}
cpu: [ppc64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.20.0':
- resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==}
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
+ resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-s390x-gnu@4.20.0':
- resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==}
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
+ resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==}
cpu: [s390x]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.20.0':
- resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==}
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
+ resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.20.0':
- resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==}
+ '@rollup/rollup-linux-x64-musl@4.21.2':
+ resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.20.0':
- resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==}
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
+ resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.20.0':
- resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==}
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
+ resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.20.0':
- resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==}
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
+ resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==}
cpu: [x64]
os: [win32]
@@ -519,8 +519,8 @@ packages:
resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==}
engines: {node: '>=18'}
- '@testing-library/react@16.0.0':
- resolution: {integrity: sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==}
+ '@testing-library/react@16.0.1':
+ resolution: {integrity: sha512-dSmwJVtJXmku+iocRhWOUFbrERC76TX2Mnf0ATODz8brzAZrMBbzLwQixlBSanZxR6LddK3eiwpSFZgDET1URg==}
engines: {node: '>=18'}
peerDependencies:
'@testing-library/dom': ^10.0.0
@@ -552,8 +552,8 @@ packages:
'@types/babel__traverse@7.20.6':
resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==}
- '@types/eslint@9.6.0':
- resolution: {integrity: sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==}
+ '@types/eslint@9.6.1':
+ resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==}
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
@@ -567,11 +567,11 @@ packages:
'@types/react-dom@18.3.0':
resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==}
- '@types/react@18.3.3':
- resolution: {integrity: sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==}
+ '@types/react@18.3.5':
+ resolution: {integrity: sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==}
- '@typescript-eslint/eslint-plugin@8.1.0':
- resolution: {integrity: sha512-LlNBaHFCEBPHyD4pZXb35mzjGkuGKXU5eeCA1SxvHfiRES0E82dOounfVpL4DCqYvJEKab0bZIA0gCRpdLKkCw==}
+ '@typescript-eslint/eslint-plugin@8.4.0':
+ resolution: {integrity: sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -581,8 +581,8 @@ packages:
typescript:
optional: true
- '@typescript-eslint/parser@8.1.0':
- resolution: {integrity: sha512-U7iTAtGgJk6DPX9wIWPPOlt1gO57097G06gIcl0N0EEnNw8RGD62c+2/DiP/zL7KrkqnnqF7gtFGR7YgzPllTA==}
+ '@typescript-eslint/parser@8.4.0':
+ resolution: {integrity: sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
@@ -591,12 +591,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/scope-manager@8.1.0':
- resolution: {integrity: sha512-DsuOZQji687sQUjm4N6c9xABJa7fjvfIdjqpSIIVOgaENf2jFXiM9hIBZOL3hb6DHK9Nvd2d7zZnoMLf9e0OtQ==}
+ '@typescript-eslint/scope-manager@8.4.0':
+ resolution: {integrity: sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/type-utils@8.1.0':
- resolution: {integrity: sha512-oLYvTxljVvsMnldfl6jIKxTaU7ok7km0KDrwOt1RHYu6nxlhN3TIx8k5Q52L6wR33nOwDgM7VwW1fT1qMNfFIA==}
+ '@typescript-eslint/type-utils@8.4.0':
+ resolution: {integrity: sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -604,12 +604,12 @@ packages:
typescript:
optional: true
- '@typescript-eslint/types@8.1.0':
- resolution: {integrity: sha512-q2/Bxa0gMOu/2/AKALI0tCKbG2zppccnRIRCW6BaaTlRVaPKft4oVYPp7WOPpcnsgbr0qROAVCVKCvIQ0tbWog==}
+ '@typescript-eslint/types@8.4.0':
+ resolution: {integrity: sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- '@typescript-eslint/typescript-estree@8.1.0':
- resolution: {integrity: sha512-NTHhmufocEkMiAord/g++gWKb0Fr34e9AExBRdqgWdVBaKoei2dIyYKD9Q0jBnvfbEA5zaf8plUFMUH6kQ0vGg==}
+ '@typescript-eslint/typescript-estree@8.4.0':
+ resolution: {integrity: sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -617,14 +617,14 @@ packages:
typescript:
optional: true
- '@typescript-eslint/utils@8.1.0':
- resolution: {integrity: sha512-ypRueFNKTIFwqPeJBfeIpxZ895PQhNyH4YID6js0UoBImWYoSjBsahUn9KMiJXh94uOjVBgHD9AmkyPsPnFwJA==}
+ '@typescript-eslint/utils@8.4.0':
+ resolution: {integrity: sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
eslint: ^8.57.0 || ^9.0.0
- '@typescript-eslint/visitor-keys@8.1.0':
- resolution: {integrity: sha512-ba0lNI19awqZ5ZNKh6wCModMwoZs457StTebQ0q1NP58zSi2F6MOZRXwfKZy+jB78JNJ/WH8GSh2IQNzXX8Nag==}
+ '@typescript-eslint/visitor-keys@8.4.0':
+ resolution: {integrity: sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vitejs/plugin-react@4.3.1':
@@ -656,29 +656,20 @@ packages:
'@vitest/utils@2.0.5':
resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==}
- '@volar/language-core@2.3.4':
- resolution: {integrity: sha512-wXBhY11qG6pCDAqDnbBRFIDSIwbqkWI7no+lj5+L7IlA7HRIjRP7YQLGzT0LF4lS6eHkMSsclXqy9DwYJasZTQ==}
-
- '@volar/language-core@2.4.0-alpha.18':
- resolution: {integrity: sha512-JAYeJvYQQROmVRtSBIczaPjP3DX4QW1fOqW1Ebs0d3Y3EwSNRglz03dSv0Dm61dzd0Yx3WgTW3hndDnTQqgmyg==}
+ '@volar/language-core@2.4.2':
+ resolution: {integrity: sha512-sONt5RLvLL1SlBdhyUSthZzuKePbJ7DwFFB9zT0eyWpDl+v7GXGh/RkPxxWaR22bIhYtTzp4Ka1MWatl/53Riw==}
- '@volar/source-map@2.3.4':
- resolution: {integrity: sha512-C+t63nwcblqLIVTYXaVi/+gC8NukDaDIQI72J3R7aXGvtgaVB16c+J8Iz7/VfOy7kjYv7lf5GhBny6ACw9fTGQ==}
+ '@volar/source-map@2.4.2':
+ resolution: {integrity: sha512-qiGfGgeZ5DEarPX3S+HcFktFCjfDrFPCXKeXNbrlB7v8cvtPRm8YVwoXOdGG1NhaL5rMlv5BZPVQyu4EdWWIvA==}
- '@volar/source-map@2.4.0-alpha.18':
- resolution: {integrity: sha512-MTeCV9MUwwsH0sNFiZwKtFrrVZUK6p8ioZs3xFzHc2cvDXHWlYN3bChdQtwKX+FY2HG6H3CfAu1pKijolzIQ8g==}
+ '@volar/typescript@2.4.2':
+ resolution: {integrity: sha512-m2uZduhaHO1SZuagi30OsjI/X1gwkaEAC+9wT/nCNAtJ5FqXEkKvUncHmffG7ESDZPlFFUBK4vJ0D9Hfr+f2EA==}
- '@volar/typescript@2.3.4':
- resolution: {integrity: sha512-acCvt7dZECyKcvO5geNybmrqOsu9u8n5XP1rfiYsOLYGPxvHRav9BVmEdRyZ3vvY6mNyQ1wLL5Hday4IShe17w==}
+ '@vue/compiler-core@3.5.2':
+ resolution: {integrity: sha512-1aP7FL2GkqfcskHWGg3lfWQpJnrmewKc+rNJ/hq9WNaAw4BEyJ5QbNChnqmbw+tJ409zdy1XWmUeXXMrCKJcQQ==}
- '@volar/typescript@2.4.0-alpha.18':
- resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==}
-
- '@vue/compiler-core@3.4.38':
- resolution: {integrity: sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==}
-
- '@vue/compiler-dom@3.4.38':
- resolution: {integrity: sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==}
+ '@vue/compiler-dom@3.5.2':
+ resolution: {integrity: sha512-QY4DpT8ZIUyu/ZA5gErpSEDocGNEbHmpkZIC/d5jbp/rUF0iOJNigAy3HCCKc0PMMhDlrcysO3ufQ6Ab4MpEcQ==}
'@vue/compiler-vue2@2.7.16':
resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==}
@@ -691,14 +682,11 @@ packages:
typescript:
optional: true
- '@vue/reactivity@3.5.0-beta.2':
- resolution: {integrity: sha512-/OMAO+vGHfPAPvofdW9lRJEBNBoLt6vpRYS4TMbbz+wMgQQ23vvOvp6W8s0pkcSsw0mm697Z3WDz1ZZhUW/NzA==}
-
- '@vue/shared@3.4.38':
- resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==}
+ '@vue/reactivity@3.5.2':
+ resolution: {integrity: sha512-lJwWL5bNht+2vIwU/+lnGdH+FKFxzz6z8WkoIJityPLiasWU+HDUvEsC7gm3JFwbTf7Kk+Nr9kJMaPy0HXwwxQ==}
- '@vue/shared@3.5.0-beta.2':
- resolution: {integrity: sha512-cexku/B2Ezno4tBTSfgNwaY+WUAF1rI3S3D9mOOYDn3gEpRn+HR5cLNW3bVC8yxoH4cNd4YMpbELuhMv67+/cw==}
+ '@vue/shared@3.5.2':
+ resolution: {integrity: sha512-Ce89WNFBzcDca/AgFTxgX4/K4iAyF7oFIp8Z5aBbFBNbtpwnQr+5pZOoHndxnjE2h+YFcipVMzs9UL11XB6dwA==}
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
@@ -710,10 +698,6 @@ packages:
engines: {node: '>=0.4.0'}
hasBin: true
- agent-base@7.1.1:
- resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==}
- engines: {node: '>= 14'}
-
ajv-draft-04@1.0.0:
resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==}
peerDependencies:
@@ -772,17 +756,10 @@ packages:
aria-query@5.3.0:
resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
assertion-error@2.0.1:
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
engines: {node: '>=12'}
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -809,8 +786,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'}
- caniuse-lite@1.0.30001651:
- resolution: {integrity: sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==}
+ caniuse-lite@1.0.30001657:
+ resolution: {integrity: sha512-DPbJAlP8/BAXy3IgiWmZKItubb3TYGP0WscQQlVGIfT4s/YlFYVuJgyOsQNP7rJRChx/qdMeLJQJP0Sgg2yjNA==}
chai@5.1.1:
resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==}
@@ -841,10 +818,6 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
compare-versions@6.1.1:
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
@@ -864,17 +837,9 @@ packages:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
- cssstyle@4.0.1:
- resolution: {integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==}
- engines: {node: '>=18'}
-
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
- data-urls@5.0.0:
- resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==}
- engines: {node: '>=18'}
-
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
@@ -887,9 +852,6 @@ packages:
supports-color:
optional: true
- decimal.js@10.4.3:
- resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
-
deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -897,26 +859,18 @@ packages:
deep-is@0.1.4:
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
dom-accessibility-api@0.5.16:
resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==}
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
- electron-to-chromium@1.5.7:
- resolution: {integrity: sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==}
+ electron-to-chromium@1.5.14:
+ resolution: {integrity: sha512-bEfPECb3fJ15eaDnu9LEJ2vPGD6W1vt7vZleSVyFhYuMIKm3vz/g9lt7IvEzgdwj58RjbPKUF2rXTCN/UW47tQ==}
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -933,8 +887,8 @@ packages:
engines: {node: '>=12'}
hasBin: true
- escalade@3.1.2:
- resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==}
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
escape-string-regexp@1.0.5:
@@ -977,8 +931,8 @@ packages:
resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- eslint@9.9.0:
- resolution: {integrity: sha512-JfiKJrbx0506OEerjK2Y1QlldtBxkAlLxT5OEcRF8uaQ86noDe2k31Vw9rnSWv+MXZHj7OOUV/dA0AhdLFcyvA==}
+ eslint@9.9.1:
+ resolution: {integrity: sha512-dHvhrbfr4xFQ9/dq+jcVneZMyRYLjggWjk6RVsIiHsP8Rz6yZ8LvZ//iU4TrZF+SXWG+JkNF2OyiZRvzgRDqMg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true
peerDependencies:
@@ -1059,10 +1013,6 @@ packages:
resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
engines: {node: '>=14'}
- form-data@4.0.0:
- resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
- engines: {node: '>= 6'}
-
fs-extra@7.0.1:
resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
engines: {node: '>=6 <7 || >=8'}
@@ -1110,16 +1060,16 @@ packages:
resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==}
engines: {node: '>=18'}
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
graphemer@1.4.0:
resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
+ happy-dom@15.7.3:
+ resolution: {integrity: sha512-w3RUaYNXFJX5LiNVhOJLK4GqCB1bFj1FvELtpon3HrN8gUpS09V0Vvm4/BBRRj7mLUE1+ch8PKv1JxEp/0IHjA==}
+ engines: {node: '>=18.0.0'}
+
has-flag@3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
engines: {node: '>=4'}
@@ -1136,29 +1086,13 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
- html-encoding-sniffer@4.0.0:
- resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
- engines: {node: '>=18'}
-
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
- http-proxy-agent@7.0.2:
- resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
- engines: {node: '>= 14'}
-
- https-proxy-agent@7.0.5:
- resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==}
- engines: {node: '>= 14'}
-
human-signals@5.0.0:
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
- iconv-lite@0.6.3:
- resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
- engines: {node: '>=0.10.0'}
-
ignore@5.3.2:
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
engines: {node: '>= 4'}
@@ -1175,8 +1109,8 @@ packages:
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
engines: {node: '>=0.8.19'}
- is-core-module@2.15.0:
- resolution: {integrity: sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==}
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
engines: {node: '>= 0.4'}
is-extglob@2.1.1:
@@ -1199,9 +1133,6 @@ packages:
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
engines: {node: '>=8'}
- is-potential-custom-element-name@1.0.1:
- resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
-
is-stream@3.0.0:
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -1238,15 +1169,6 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsdom@24.1.1:
- resolution: {integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==}
- engines: {node: '>=18'}
- peerDependencies:
- canvas: ^2.11.2
- peerDependenciesMeta:
- canvas:
- optional: true
-
jsesc@2.5.2:
resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
engines: {node: '>=4'}
@@ -1320,8 +1242,8 @@ packages:
magic-string@0.30.11:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
- magicast@0.3.4:
- resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==}
+ magicast@0.3.5:
+ resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
make-dir@4.0.0:
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
@@ -1334,18 +1256,10 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
- micromatch@4.0.7:
- resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
mimic-fn@4.0.0:
resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
engines: {node: '>=12'}
@@ -1388,9 +1302,6 @@ packages:
resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- nwsapi@2.2.12:
- resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==}
-
onetime@6.0.0:
resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
engines: {node: '>=12'}
@@ -1414,9 +1325,6 @@ packages:
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
engines: {node: '>=6'}
- parse5@7.1.2:
- resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==}
-
path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
@@ -1439,10 +1347,6 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
pathe@1.1.2:
resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
@@ -1450,18 +1354,18 @@ packages:
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
engines: {node: '>= 14.16'}
- picocolors@1.0.1:
- resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
+ picocolors@1.1.0:
+ resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==}
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
- pkg-types@1.1.3:
- resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==}
+ pkg-types@1.2.0:
+ resolution: {integrity: sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==}
- postcss@8.4.41:
- resolution: {integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==}
+ postcss@8.4.45:
+ resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==}
engines: {node: ^10 || ^12 || >=14}
prelude-ls@1.2.1:
@@ -1481,16 +1385,10 @@ packages:
resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==}
engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0}
- psl@1.9.0:
- resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
-
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
- querystringify@2.2.0:
- resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
-
queue-microtask@1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
@@ -1517,9 +1415,6 @@ packages:
resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
engines: {node: '>=0.10.0'}
- requires-port@1.0.0:
- resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==}
-
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1532,27 +1427,14 @@ packages:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.20.0:
- resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==}
+ rollup@4.21.2:
+ resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
- rrweb-cssom@0.6.0:
- resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==}
-
- rrweb-cssom@0.7.1:
- resolution: {integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==}
-
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- saxes@6.0.0:
- resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
- engines: {node: '>=v12.22.7'}
-
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
@@ -1585,10 +1467,6 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
@@ -1650,9 +1528,6 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
- symbol-tree@3.2.4:
- resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
-
synckit@0.9.1:
resolution: {integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -1667,8 +1542,8 @@ packages:
tinybench@2.9.0:
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
- tinypool@1.0.0:
- resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==}
+ tinypool@1.0.1:
+ resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==}
engines: {node: ^18.0.0 || >=20.0.0}
tinyrainbow@1.2.0:
@@ -1687,29 +1562,21 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
- tough-cookie@4.1.4:
- resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==}
- engines: {node: '>=6'}
-
- tr46@5.0.0:
- resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
- engines: {node: '>=18'}
-
ts-api-utils@1.3.0:
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
engines: {node: '>=16'}
peerDependencies:
typescript: '>=4.2.0'
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
+ tslib@2.7.0:
+ resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
type-check@0.4.0:
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
engines: {node: '>= 0.8.0'}
- typescript-eslint@8.1.0:
- resolution: {integrity: sha512-prB2U3jXPJLpo1iVLN338Lvolh6OrcCZO+9Yv6AR+tvegPPptYCDBIHiEEUdqRi8gAv2bXNKfMUrgAd2ejn/ow==}
+ typescript-eslint@8.4.0:
+ resolution: {integrity: sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '*'
@@ -1734,10 +1601,6 @@ packages:
resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
engines: {node: '>= 4.0.0'}
- universalify@0.2.0:
- resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==}
- engines: {node: '>= 4.0.0'}
-
update-browserslist-db@1.1.0:
resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==}
hasBin: true
@@ -1747,16 +1610,13 @@ packages:
uri-js@4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
- url-parse@1.5.10:
- resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==}
-
vite-node@2.0.5:
resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
- vite-plugin-dts@4.0.3:
- resolution: {integrity: sha512-+xnTsaONwU2kV6zhRjtbRJSGN41uFR/whqmcb4k4fftLFDJElxthp0PP5Fq8gMeM9ytWMt1yk5gGgekLREWYQQ==}
+ vite-plugin-dts@4.1.0:
+ resolution: {integrity: sha512-sRlmt9k2q8MrX4F2058N3KmB6WyJ3Ao6QaExOv1X99F3j0GhPziEz1zscWQ1q2r1PeFc96L7GIUu8Pl2DPr2Hg==}
engines: {node: ^14.18.0 || >=16.0.0}
peerDependencies:
typescript: '*'
@@ -1765,8 +1625,8 @@ packages:
vite:
optional: true
- vite@5.4.0:
- resolution: {integrity: sha512-5xokfMX0PIiwCMCMb9ZJcMyh5wbBun0zUzKib+L65vAZ8GY9ePZMXxFrHbr/Kyll2+LSCY7xtERPpxkBDKngwg==}
+ vite@5.4.3:
+ resolution: {integrity: sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -1830,25 +1690,13 @@ packages:
peerDependencies:
typescript: '>=5.0.0'
- w3c-xmlserializer@5.0.0:
- resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
- engines: {node: '>=18'}
-
webidl-conversions@7.0.0:
resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==}
engines: {node: '>=12'}
- whatwg-encoding@3.1.1:
- resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==}
- engines: {node: '>=18'}
-
- whatwg-mimetype@4.0.0:
- resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==}
- engines: {node: '>=18'}
-
- whatwg-url@14.0.0:
- resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==}
- engines: {node: '>=18'}
+ whatwg-mimetype@3.0.0:
+ resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==}
+ engines: {node: '>=12'}
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
@@ -1872,25 +1720,6 @@ packages:
resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
engines: {node: '>=12'}
- ws@8.18.0:
- resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
- engines: {node: '>=10.0.0'}
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: '>=5.0.2'
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
-
- xml-name-validator@5.0.0:
- resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==}
- engines: {node: '>=18'}
-
- xmlchars@2.2.0:
- resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
-
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -1911,22 +1740,22 @@ snapshots:
'@babel/code-frame@7.24.7':
dependencies:
'@babel/highlight': 7.24.7
- picocolors: 1.0.1
+ picocolors: 1.1.0
- '@babel/compat-data@7.25.2': {}
+ '@babel/compat-data@7.25.4': {}
'@babel/core@7.25.2':
dependencies:
'@ampproject/remapping': 2.3.0
'@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.0
+ '@babel/generator': 7.25.6
'@babel/helper-compilation-targets': 7.25.2
'@babel/helper-module-transforms': 7.25.2(@babel/core@7.25.2)
- '@babel/helpers': 7.25.0
- '@babel/parser': 7.25.3
+ '@babel/helpers': 7.25.6
+ '@babel/parser': 7.25.6
'@babel/template': 7.25.0
- '@babel/traverse': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
convert-source-map: 2.0.0
debug: 4.3.6
gensync: 1.0.0-beta.2
@@ -1935,16 +1764,16 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.25.0':
+ '@babel/generator@7.25.6':
dependencies:
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
'@jridgewell/gen-mapping': 0.3.5
'@jridgewell/trace-mapping': 0.3.25
jsesc: 2.5.2
'@babel/helper-compilation-targets@7.25.2':
dependencies:
- '@babel/compat-data': 7.25.2
+ '@babel/compat-data': 7.25.4
'@babel/helper-validator-option': 7.24.8
browserslist: 4.23.3
lru-cache: 5.1.1
@@ -1952,8 +1781,8 @@ snapshots:
'@babel/helper-module-imports@7.24.7':
dependencies:
- '@babel/traverse': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
transitivePeerDependencies:
- supports-color
@@ -1963,7 +1792,7 @@ snapshots:
'@babel/helper-module-imports': 7.24.7
'@babel/helper-simple-access': 7.24.7
'@babel/helper-validator-identifier': 7.24.7
- '@babel/traverse': 7.25.3
+ '@babel/traverse': 7.25.6
transitivePeerDependencies:
- supports-color
@@ -1971,8 +1800,8 @@ snapshots:
'@babel/helper-simple-access@7.24.7':
dependencies:
- '@babel/traverse': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/traverse': 7.25.6
+ '@babel/types': 7.25.6
transitivePeerDependencies:
- supports-color
@@ -1982,21 +1811,21 @@ snapshots:
'@babel/helper-validator-option@7.24.8': {}
- '@babel/helpers@7.25.0':
+ '@babel/helpers@7.25.6':
dependencies:
'@babel/template': 7.25.0
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
'@babel/highlight@7.24.7':
dependencies:
'@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
- picocolors: 1.0.1
+ picocolors: 1.1.0
- '@babel/parser@7.25.3':
+ '@babel/parser@7.25.6':
dependencies:
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
'@babel/plugin-transform-react-jsx-self@7.24.7(@babel/core@7.25.2)':
dependencies:
@@ -2008,29 +1837,29 @@ snapshots:
'@babel/core': 7.25.2
'@babel/helper-plugin-utils': 7.24.8
- '@babel/runtime@7.25.0':
+ '@babel/runtime@7.25.6':
dependencies:
regenerator-runtime: 0.14.1
'@babel/template@7.25.0':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/parser': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
- '@babel/traverse@7.25.3':
+ '@babel/traverse@7.25.6':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/generator': 7.25.0
- '@babel/parser': 7.25.3
+ '@babel/generator': 7.25.6
+ '@babel/parser': 7.25.6
'@babel/template': 7.25.0
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
debug: 4.3.6
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/types@7.25.2':
+ '@babel/types@7.25.6':
dependencies:
'@babel/helper-string-parser': 7.24.8
'@babel/helper-validator-identifier': 7.24.7
@@ -2107,14 +1936,14 @@ snapshots:
'@esbuild/win32-x64@0.21.5':
optional: true
- '@eslint-community/eslint-utils@4.4.0(eslint@9.9.0)':
+ '@eslint-community/eslint-utils@4.4.0(eslint@9.9.1)':
dependencies:
- eslint: 9.9.0
+ eslint: 9.9.1
eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.0': {}
- '@eslint/config-array@0.17.1':
+ '@eslint/config-array@0.18.0':
dependencies:
'@eslint/object-schema': 2.1.4
debug: 4.3.6
@@ -2136,7 +1965,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@eslint/js@9.9.0': {}
+ '@eslint/js@9.9.1': {}
'@eslint/object-schema@2.1.4': {}
@@ -2224,60 +2053,60 @@ snapshots:
'@pkgr/core@0.1.1': {}
- '@rollup/pluginutils@5.1.0(rollup@4.20.0)':
+ '@rollup/pluginutils@5.1.0(rollup@4.21.2)':
dependencies:
'@types/estree': 1.0.5
estree-walker: 2.0.2
picomatch: 2.3.1
optionalDependencies:
- rollup: 4.20.0
+ rollup: 4.21.2
- '@rollup/rollup-android-arm-eabi@4.20.0':
+ '@rollup/rollup-android-arm-eabi@4.21.2':
optional: true
- '@rollup/rollup-android-arm64@4.20.0':
+ '@rollup/rollup-android-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-arm64@4.20.0':
+ '@rollup/rollup-darwin-arm64@4.21.2':
optional: true
- '@rollup/rollup-darwin-x64@4.20.0':
+ '@rollup/rollup-darwin-x64@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.20.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm-musleabihf@4.20.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.20.0':
+ '@rollup/rollup-linux-arm64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.20.0':
+ '@rollup/rollup-linux-arm64-musl@4.21.2':
optional: true
- '@rollup/rollup-linux-powerpc64le-gnu@4.20.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.20.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-s390x-gnu@4.20.0':
+ '@rollup/rollup-linux-s390x-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.20.0':
+ '@rollup/rollup-linux-x64-gnu@4.21.2':
optional: true
- '@rollup/rollup-linux-x64-musl@4.20.0':
+ '@rollup/rollup-linux-x64-musl@4.21.2':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.20.0':
+ '@rollup/rollup-win32-arm64-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.20.0':
+ '@rollup/rollup-win32-ia32-msvc@4.21.2':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.20.0':
+ '@rollup/rollup-win32-x64-msvc@4.21.2':
optional: true
'@rushstack/node-core-library@5.5.1':
@@ -2313,7 +2142,7 @@ snapshots:
'@testing-library/dom@10.4.0':
dependencies:
'@babel/code-frame': 7.24.7
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@types/aria-query': 5.0.4
aria-query: 5.3.0
chalk: 4.1.2
@@ -2321,14 +2150,14 @@ snapshots:
lz-string: 1.5.0
pretty-format: 27.5.1
- '@testing-library/react@16.0.0(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@testing-library/react@16.0.1(@testing-library/dom@10.4.0)(@types/react-dom@18.3.0)(@types/react@18.3.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.25.0
+ '@babel/runtime': 7.25.6
'@testing-library/dom': 10.4.0
react: 18.3.1
react-dom: 18.3.1(react@18.3.1)
optionalDependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.5
'@types/react-dom': 18.3.0
'@types/argparse@1.0.38': {}
@@ -2337,26 +2166,26 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
- '@babel/parser': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
'@types/babel__generator': 7.6.8
'@types/babel__template': 7.4.4
'@types/babel__traverse': 7.20.6
'@types/babel__generator@7.6.8':
dependencies:
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
'@types/babel__template@7.4.4':
dependencies:
- '@babel/parser': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
'@types/babel__traverse@7.20.6':
dependencies:
- '@babel/types': 7.25.2
+ '@babel/types': 7.25.6
- '@types/eslint@9.6.0':
+ '@types/eslint@9.6.1':
dependencies:
'@types/estree': 1.0.5
'@types/json-schema': 7.0.15
@@ -2369,22 +2198,22 @@ snapshots:
'@types/react-dom@18.3.0':
dependencies:
- '@types/react': 18.3.3
+ '@types/react': 18.3.5
- '@types/react@18.3.3':
+ '@types/react@18.3.5':
dependencies:
'@types/prop-types': 15.7.12
csstype: 3.1.3
- '@typescript-eslint/eslint-plugin@8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4)':
+ '@typescript-eslint/eslint-plugin@8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)':
dependencies:
'@eslint-community/regexpp': 4.11.0
- '@typescript-eslint/parser': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/type-utils': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.1.0
- eslint: 9.9.0
+ '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/type-utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
+ eslint: 9.9.1
graphemer: 1.4.0
ignore: 5.3.2
natural-compare: 1.4.0
@@ -2394,28 +2223,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/parser@8.1.0(eslint@9.9.0)(typescript@5.5.4)':
+ '@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
- '@typescript-eslint/visitor-keys': 8.1.0
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/visitor-keys': 8.4.0
debug: 4.3.6
- eslint: 9.9.0
+ eslint: 9.9.1
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.1.0':
+ '@typescript-eslint/scope-manager@8.4.0':
dependencies:
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/visitor-keys': 8.1.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
- '@typescript-eslint/type-utils@8.1.0(eslint@9.9.0)(typescript@5.5.4)':
+ '@typescript-eslint/type-utils@8.4.0(eslint@9.9.1)(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
- '@typescript-eslint/utils': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
debug: 4.3.6
ts-api-utils: 1.3.0(typescript@5.5.4)
optionalDependencies:
@@ -2424,14 +2253,14 @@ snapshots:
- eslint
- supports-color
- '@typescript-eslint/types@8.1.0': {}
+ '@typescript-eslint/types@8.4.0': {}
- '@typescript-eslint/typescript-estree@8.1.0(typescript@5.5.4)':
+ '@typescript-eslint/typescript-estree@8.4.0(typescript@5.5.4)':
dependencies:
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/visitor-keys': 8.1.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/visitor-keys': 8.4.0
debug: 4.3.6
- globby: 11.1.0
+ fast-glob: 3.3.2
is-glob: 4.0.3
minimatch: 9.0.5
semver: 7.6.3
@@ -2441,34 +2270,34 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.1.0(eslint@9.9.0)(typescript@5.5.4)':
+ '@typescript-eslint/utils@8.4.0(eslint@9.9.1)(typescript@5.5.4)':
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0)
- '@typescript-eslint/scope-manager': 8.1.0
- '@typescript-eslint/types': 8.1.0
- '@typescript-eslint/typescript-estree': 8.1.0(typescript@5.5.4)
- eslint: 9.9.0
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1)
+ '@typescript-eslint/scope-manager': 8.4.0
+ '@typescript-eslint/types': 8.4.0
+ '@typescript-eslint/typescript-estree': 8.4.0(typescript@5.5.4)
+ eslint: 9.9.1
transitivePeerDependencies:
- supports-color
- typescript
- '@typescript-eslint/visitor-keys@8.1.0':
+ '@typescript-eslint/visitor-keys@8.4.0':
dependencies:
- '@typescript-eslint/types': 8.1.0
+ '@typescript-eslint/types': 8.4.0
eslint-visitor-keys: 3.4.3
- '@vitejs/plugin-react@4.3.1(vite@5.4.0)':
+ '@vitejs/plugin-react@4.3.1(vite@5.4.3)':
dependencies:
'@babel/core': 7.25.2
'@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.25.2)
'@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.25.2)
'@types/babel__core': 7.20.5
react-refresh: 0.14.2
- vite: 5.4.0
+ vite: 5.4.3
transitivePeerDependencies:
- supports-color
- '@vitest/coverage-v8@2.0.5(vitest@2.0.5(jsdom@24.1.1))':
+ '@vitest/coverage-v8@2.0.5(vitest@2.0.5(happy-dom@15.7.3))':
dependencies:
'@ampproject/remapping': 2.3.0
'@bcoe/v8-coverage': 0.2.3
@@ -2478,11 +2307,11 @@ snapshots:
istanbul-lib-source-maps: 5.0.6
istanbul-reports: 3.1.7
magic-string: 0.30.11
- magicast: 0.3.4
+ magicast: 0.3.5
std-env: 3.7.0
test-exclude: 7.0.1
tinyrainbow: 1.2.0
- vitest: 2.0.5(jsdom@24.1.1)
+ vitest: 2.0.5(happy-dom@15.7.3)
transitivePeerDependencies:
- supports-color
@@ -2519,42 +2348,30 @@ snapshots:
loupe: 3.1.1
tinyrainbow: 1.2.0
- '@volar/language-core@2.3.4':
+ '@volar/language-core@2.4.2':
dependencies:
- '@volar/source-map': 2.3.4
-
- '@volar/language-core@2.4.0-alpha.18':
- dependencies:
- '@volar/source-map': 2.4.0-alpha.18
-
- '@volar/source-map@2.3.4': {}
+ '@volar/source-map': 2.4.2
- '@volar/source-map@2.4.0-alpha.18': {}
+ '@volar/source-map@2.4.2': {}
- '@volar/typescript@2.3.4':
+ '@volar/typescript@2.4.2':
dependencies:
- '@volar/language-core': 2.3.4
+ '@volar/language-core': 2.4.2
path-browserify: 1.0.1
vscode-uri: 3.0.8
- '@volar/typescript@2.4.0-alpha.18':
+ '@vue/compiler-core@3.5.2':
dependencies:
- '@volar/language-core': 2.4.0-alpha.18
- path-browserify: 1.0.1
- vscode-uri: 3.0.8
-
- '@vue/compiler-core@3.4.38':
- dependencies:
- '@babel/parser': 7.25.3
- '@vue/shared': 3.4.38
+ '@babel/parser': 7.25.6
+ '@vue/shared': 3.5.2
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.0
- '@vue/compiler-dom@3.4.38':
+ '@vue/compiler-dom@3.5.2':
dependencies:
- '@vue/compiler-core': 3.4.38
- '@vue/shared': 3.4.38
+ '@vue/compiler-core': 3.5.2
+ '@vue/shared': 3.5.2
'@vue/compiler-vue2@2.7.16':
dependencies:
@@ -2563,10 +2380,10 @@ snapshots:
'@vue/language-core@2.0.29(typescript@5.5.4)':
dependencies:
- '@volar/language-core': 2.4.0-alpha.18
- '@vue/compiler-dom': 3.4.38
+ '@volar/language-core': 2.4.2
+ '@vue/compiler-dom': 3.5.2
'@vue/compiler-vue2': 2.7.16
- '@vue/shared': 3.4.38
+ '@vue/shared': 3.5.2
computeds: 0.0.1
minimatch: 9.0.5
muggle-string: 0.4.1
@@ -2574,13 +2391,11 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
- '@vue/reactivity@3.5.0-beta.2':
+ '@vue/reactivity@3.5.2':
dependencies:
- '@vue/shared': 3.5.0-beta.2
-
- '@vue/shared@3.4.38': {}
+ '@vue/shared': 3.5.2
- '@vue/shared@3.5.0-beta.2': {}
+ '@vue/shared@3.5.2': {}
acorn-jsx@5.3.2(acorn@8.12.1):
dependencies:
@@ -2588,12 +2403,6 @@ snapshots:
acorn@8.12.1: {}
- agent-base@7.1.1:
- dependencies:
- debug: 4.3.6
- transitivePeerDependencies:
- - supports-color
-
ajv-draft-04@1.0.0(ajv@8.13.0):
optionalDependencies:
ajv: 8.13.0
@@ -2649,12 +2458,8 @@ snapshots:
dependencies:
dequal: 2.0.3
- array-union@2.1.0: {}
-
assertion-error@2.0.1: {}
- asynckit@0.4.0: {}
-
balanced-match@1.0.2: {}
brace-expansion@1.1.11:
@@ -2672,8 +2477,8 @@ snapshots:
browserslist@4.23.3:
dependencies:
- caniuse-lite: 1.0.30001651
- electron-to-chromium: 1.5.7
+ caniuse-lite: 1.0.30001657
+ electron-to-chromium: 1.5.14
node-releases: 2.0.18
update-browserslist-db: 1.1.0(browserslist@4.23.3)
@@ -2681,7 +2486,7 @@ snapshots:
callsites@3.1.0: {}
- caniuse-lite@1.0.30001651: {}
+ caniuse-lite@1.0.30001657: {}
chai@5.1.1:
dependencies:
@@ -2716,10 +2521,6 @@ snapshots:
color-name@1.1.4: {}
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
compare-versions@6.1.1: {}
computeds@0.0.1: {}
@@ -2736,42 +2537,25 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
- cssstyle@4.0.1:
- dependencies:
- rrweb-cssom: 0.6.0
-
csstype@3.1.3: {}
- data-urls@5.0.0:
- dependencies:
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.0.0
-
de-indent@1.0.2: {}
debug@4.3.6:
dependencies:
ms: 2.1.2
- decimal.js@10.4.3: {}
-
deep-eql@5.0.2: {}
deep-is@0.1.4: {}
- delayed-stream@1.0.0: {}
-
dequal@2.0.3: {}
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
dom-accessibility-api@0.5.16: {}
eastasianwidth@0.2.0: {}
- electron-to-chromium@1.5.7: {}
+ electron-to-chromium@1.5.14: {}
emoji-regex@8.0.0: {}
@@ -2805,25 +2589,25 @@ snapshots:
'@esbuild/win32-ia32': 0.21.5
'@esbuild/win32-x64': 0.21.5
- escalade@3.1.2: {}
+ escalade@3.2.0: {}
escape-string-regexp@1.0.5: {}
escape-string-regexp@4.0.0: {}
- eslint-config-prettier@9.1.0(eslint@9.9.0):
+ eslint-config-prettier@9.1.0(eslint@9.9.1):
dependencies:
- eslint: 9.9.0
+ eslint: 9.9.1
- eslint-plugin-prettier@5.2.1(@types/eslint@9.6.0)(eslint-config-prettier@9.1.0(eslint@9.9.0))(eslint@9.9.0)(prettier@3.3.3):
+ eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.9.1))(eslint@9.9.1)(prettier@3.3.3):
dependencies:
- eslint: 9.9.0
+ eslint: 9.9.1
prettier: 3.3.3
prettier-linter-helpers: 1.0.0
synckit: 0.9.1
optionalDependencies:
- '@types/eslint': 9.6.0
- eslint-config-prettier: 9.1.0(eslint@9.9.0)
+ '@types/eslint': 9.6.1
+ eslint-config-prettier: 9.1.0(eslint@9.9.1)
eslint-scope@8.0.2:
dependencies:
@@ -2834,13 +2618,13 @@ snapshots:
eslint-visitor-keys@4.0.0: {}
- eslint@9.9.0:
+ eslint@9.9.1:
dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.0)
+ '@eslint-community/eslint-utils': 4.4.0(eslint@9.9.1)
'@eslint-community/regexpp': 4.11.0
- '@eslint/config-array': 0.17.1
+ '@eslint/config-array': 0.18.0
'@eslint/eslintrc': 3.1.0
- '@eslint/js': 9.9.0
+ '@eslint/js': 9.9.1
'@humanwhocodes/module-importer': 1.0.1
'@humanwhocodes/retry': 0.3.0
'@nodelib/fs.walk': 1.2.8
@@ -2919,7 +2703,7 @@ snapshots:
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.7
+ micromatch: 4.0.8
fast-json-stable-stringify@2.1.0: {}
@@ -2954,12 +2738,6 @@ snapshots:
cross-spawn: 7.0.3
signal-exit: 4.1.0
- form-data@4.0.0:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- mime-types: 2.1.35
-
fs-extra@7.0.1:
dependencies:
graceful-fs: 4.2.11
@@ -3000,19 +2778,16 @@ snapshots:
globals@15.9.0: {}
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.2
- merge2: 1.4.1
- slash: 3.0.0
-
graceful-fs@4.2.11: {}
graphemer@1.4.0: {}
+ happy-dom@15.7.3:
+ dependencies:
+ entities: 4.5.0
+ webidl-conversions: 7.0.0
+ whatwg-mimetype: 3.0.0
+
has-flag@3.0.0: {}
has-flag@4.0.0: {}
@@ -3023,32 +2798,10 @@ snapshots:
he@1.2.0: {}
- html-encoding-sniffer@4.0.0:
- dependencies:
- whatwg-encoding: 3.1.1
-
html-escaper@2.0.2: {}
- http-proxy-agent@7.0.2:
- dependencies:
- agent-base: 7.1.1
- debug: 4.3.6
- transitivePeerDependencies:
- - supports-color
-
- https-proxy-agent@7.0.5:
- dependencies:
- agent-base: 7.1.1
- debug: 4.3.6
- transitivePeerDependencies:
- - supports-color
-
human-signals@5.0.0: {}
- iconv-lite@0.6.3:
- dependencies:
- safer-buffer: 2.1.2
-
ignore@5.3.2: {}
import-fresh@3.3.0:
@@ -3060,7 +2813,7 @@ snapshots:
imurmurhash@0.1.4: {}
- is-core-module@2.15.0:
+ is-core-module@2.15.1:
dependencies:
hasown: 2.0.2
@@ -3076,8 +2829,6 @@ snapshots:
is-path-inside@3.0.3: {}
- is-potential-custom-element-name@1.0.1: {}
-
is-stream@3.0.0: {}
isexe@2.0.0: {}
@@ -3117,34 +2868,6 @@ snapshots:
dependencies:
argparse: 2.0.1
- jsdom@24.1.1:
- dependencies:
- cssstyle: 4.0.1
- data-urls: 5.0.0
- decimal.js: 10.4.3
- form-data: 4.0.0
- html-encoding-sniffer: 4.0.0
- http-proxy-agent: 7.0.2
- https-proxy-agent: 7.0.5
- is-potential-custom-element-name: 1.0.1
- nwsapi: 2.2.12
- parse5: 7.1.2
- rrweb-cssom: 0.7.1
- saxes: 6.0.0
- symbol-tree: 3.2.4
- tough-cookie: 4.1.4
- w3c-xmlserializer: 5.0.0
- webidl-conversions: 7.0.0
- whatwg-encoding: 3.1.1
- whatwg-mimetype: 4.0.0
- whatwg-url: 14.0.0
- ws: 8.18.0
- xml-name-validator: 5.0.0
- transitivePeerDependencies:
- - bufferutil
- - supports-color
- - utf-8-validate
-
jsesc@2.5.2: {}
json-buffer@3.0.1: {}
@@ -3175,7 +2898,7 @@ snapshots:
local-pkg@0.5.0:
dependencies:
mlly: 1.7.1
- pkg-types: 1.1.3
+ pkg-types: 1.2.0
locate-path@6.0.0:
dependencies:
@@ -3209,10 +2932,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
- magicast@0.3.4:
+ magicast@0.3.5:
dependencies:
- '@babel/parser': 7.25.3
- '@babel/types': 7.25.2
+ '@babel/parser': 7.25.6
+ '@babel/types': 7.25.6
source-map-js: 1.2.0
make-dir@4.0.0:
@@ -3223,17 +2946,11 @@ snapshots:
merge2@1.4.1: {}
- micromatch@4.0.7:
+ micromatch@4.0.8:
dependencies:
braces: 3.0.3
picomatch: 2.3.1
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
mimic-fn@4.0.0: {}
minimatch@3.0.8:
@@ -3254,7 +2971,7 @@ snapshots:
dependencies:
acorn: 8.12.1
pathe: 1.1.2
- pkg-types: 1.1.3
+ pkg-types: 1.2.0
ufo: 1.5.4
ms@2.1.2: {}
@@ -3271,8 +2988,6 @@ snapshots:
dependencies:
path-key: 4.0.0
- nwsapi@2.2.12: {}
-
onetime@6.0.0:
dependencies:
mimic-fn: 4.0.0
@@ -3300,10 +3015,6 @@ snapshots:
dependencies:
callsites: 3.1.0
- parse5@7.1.2:
- dependencies:
- entities: 4.5.0
-
path-browserify@1.0.1: {}
path-exists@4.0.0: {}
@@ -3319,26 +3030,24 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
- path-type@4.0.0: {}
-
pathe@1.1.2: {}
pathval@2.0.0: {}
- picocolors@1.0.1: {}
+ picocolors@1.1.0: {}
picomatch@2.3.1: {}
- pkg-types@1.1.3:
+ pkg-types@1.2.0:
dependencies:
confbox: 0.1.7
mlly: 1.7.1
pathe: 1.1.2
- postcss@8.4.41:
+ postcss@8.4.45:
dependencies:
nanoid: 3.3.7
- picocolors: 1.0.1
+ picocolors: 1.1.0
source-map-js: 1.2.0
prelude-ls@1.2.1: {}
@@ -3355,12 +3064,8 @@ snapshots:
ansi-styles: 5.2.0
react-is: 17.0.2
- psl@1.9.0: {}
-
punycode@2.3.1: {}
- querystringify@2.2.0: {}
-
queue-microtask@1.2.3: {}
react-dom@18.3.1(react@18.3.1):
@@ -3381,54 +3086,42 @@ snapshots:
require-from-string@2.0.2: {}
- requires-port@1.0.0: {}
-
resolve-from@4.0.0: {}
resolve@1.22.8:
dependencies:
- is-core-module: 2.15.0
+ is-core-module: 2.15.1
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
reusify@1.0.4: {}
- rollup@4.20.0:
+ rollup@4.21.2:
dependencies:
'@types/estree': 1.0.5
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.20.0
- '@rollup/rollup-android-arm64': 4.20.0
- '@rollup/rollup-darwin-arm64': 4.20.0
- '@rollup/rollup-darwin-x64': 4.20.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.20.0
- '@rollup/rollup-linux-arm-musleabihf': 4.20.0
- '@rollup/rollup-linux-arm64-gnu': 4.20.0
- '@rollup/rollup-linux-arm64-musl': 4.20.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0
- '@rollup/rollup-linux-riscv64-gnu': 4.20.0
- '@rollup/rollup-linux-s390x-gnu': 4.20.0
- '@rollup/rollup-linux-x64-gnu': 4.20.0
- '@rollup/rollup-linux-x64-musl': 4.20.0
- '@rollup/rollup-win32-arm64-msvc': 4.20.0
- '@rollup/rollup-win32-ia32-msvc': 4.20.0
- '@rollup/rollup-win32-x64-msvc': 4.20.0
+ '@rollup/rollup-android-arm-eabi': 4.21.2
+ '@rollup/rollup-android-arm64': 4.21.2
+ '@rollup/rollup-darwin-arm64': 4.21.2
+ '@rollup/rollup-darwin-x64': 4.21.2
+ '@rollup/rollup-linux-arm-gnueabihf': 4.21.2
+ '@rollup/rollup-linux-arm-musleabihf': 4.21.2
+ '@rollup/rollup-linux-arm64-gnu': 4.21.2
+ '@rollup/rollup-linux-arm64-musl': 4.21.2
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2
+ '@rollup/rollup-linux-riscv64-gnu': 4.21.2
+ '@rollup/rollup-linux-s390x-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-gnu': 4.21.2
+ '@rollup/rollup-linux-x64-musl': 4.21.2
+ '@rollup/rollup-win32-arm64-msvc': 4.21.2
+ '@rollup/rollup-win32-ia32-msvc': 4.21.2
+ '@rollup/rollup-win32-x64-msvc': 4.21.2
fsevents: 2.3.3
- rrweb-cssom@0.6.0: {}
-
- rrweb-cssom@0.7.1: {}
-
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
- safer-buffer@2.1.2: {}
-
- saxes@6.0.0:
- dependencies:
- xmlchars: 2.2.0
-
scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0
@@ -3451,8 +3144,6 @@ snapshots:
signal-exit@4.1.0: {}
- slash@3.0.0: {}
-
source-map-js@1.2.0: {}
source-map@0.6.1: {}
@@ -3503,12 +3194,10 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
- symbol-tree@3.2.4: {}
-
synckit@0.9.1:
dependencies:
'@pkgr/core': 0.1.1
- tslib: 2.6.3
+ tslib: 2.7.0
test-exclude@7.0.1:
dependencies:
@@ -3520,7 +3209,7 @@ snapshots:
tinybench@2.9.0: {}
- tinypool@1.0.0: {}
+ tinypool@1.0.1: {}
tinyrainbow@1.2.0: {}
@@ -3532,32 +3221,21 @@ snapshots:
dependencies:
is-number: 7.0.0
- tough-cookie@4.1.4:
- dependencies:
- psl: 1.9.0
- punycode: 2.3.1
- universalify: 0.2.0
- url-parse: 1.5.10
-
- tr46@5.0.0:
- dependencies:
- punycode: 2.3.1
-
ts-api-utils@1.3.0(typescript@5.5.4):
dependencies:
typescript: 5.5.4
- tslib@2.6.3: {}
+ tslib@2.7.0: {}
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
- typescript-eslint@8.1.0(eslint@9.9.0)(typescript@5.5.4):
+ typescript-eslint@8.4.0(eslint@9.9.1)(typescript@5.5.4):
dependencies:
- '@typescript-eslint/eslint-plugin': 8.1.0(@typescript-eslint/parser@8.1.0(eslint@9.9.0)(typescript@5.5.4))(eslint@9.9.0)(typescript@5.5.4)
- '@typescript-eslint/parser': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
- '@typescript-eslint/utils': 8.1.0(eslint@9.9.0)(typescript@5.5.4)
+ '@typescript-eslint/eslint-plugin': 8.4.0(@typescript-eslint/parser@8.4.0(eslint@9.9.1)(typescript@5.5.4))(eslint@9.9.1)(typescript@5.5.4)
+ '@typescript-eslint/parser': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
+ '@typescript-eslint/utils': 8.4.0(eslint@9.9.1)(typescript@5.5.4)
optionalDependencies:
typescript: 5.5.4
transitivePeerDependencies:
@@ -3572,30 +3250,23 @@ snapshots:
universalify@0.1.2: {}
- universalify@0.2.0: {}
-
update-browserslist-db@1.1.0(browserslist@4.23.3):
dependencies:
browserslist: 4.23.3
- escalade: 3.1.2
- picocolors: 1.0.1
+ escalade: 3.2.0
+ picocolors: 1.1.0
uri-js@4.4.1:
dependencies:
punycode: 2.3.1
- url-parse@1.5.10:
- dependencies:
- querystringify: 2.2.0
- requires-port: 1.0.0
-
vite-node@2.0.5:
dependencies:
cac: 6.7.14
debug: 4.3.6
pathe: 1.1.2
tinyrainbow: 1.2.0
- vite: 5.4.0
+ vite: 5.4.3
transitivePeerDependencies:
- '@types/node'
- less
@@ -3607,11 +3278,11 @@ snapshots:
- supports-color
- terser
- vite-plugin-dts@4.0.3(rollup@4.20.0)(typescript@5.5.4)(vite@5.4.0):
+ vite-plugin-dts@4.1.0(rollup@4.21.2)(typescript@5.5.4)(vite@5.4.3):
dependencies:
'@microsoft/api-extractor': 7.47.4
- '@rollup/pluginutils': 5.1.0(rollup@4.20.0)
- '@volar/typescript': 2.3.4
+ '@rollup/pluginutils': 5.1.0(rollup@4.21.2)
+ '@volar/typescript': 2.4.2
'@vue/language-core': 2.0.29(typescript@5.5.4)
compare-versions: 6.1.1
debug: 4.3.6
@@ -3621,21 +3292,21 @@ snapshots:
typescript: 5.5.4
vue-tsc: 2.0.29(typescript@5.5.4)
optionalDependencies:
- vite: 5.4.0
+ vite: 5.4.3
transitivePeerDependencies:
- '@types/node'
- rollup
- supports-color
- vite@5.4.0:
+ vite@5.4.3:
dependencies:
esbuild: 0.21.5
- postcss: 8.4.41
- rollup: 4.20.0
+ postcss: 8.4.45
+ rollup: 4.21.2
optionalDependencies:
fsevents: 2.3.3
- vitest@2.0.5(jsdom@24.1.1):
+ vitest@2.0.5(happy-dom@15.7.3):
dependencies:
'@ampproject/remapping': 2.3.0
'@vitest/expect': 2.0.5
@@ -3651,13 +3322,13 @@ snapshots:
pathe: 1.1.2
std-env: 3.7.0
tinybench: 2.9.0
- tinypool: 1.0.0
+ tinypool: 1.0.1
tinyrainbow: 1.2.0
- vite: 5.4.0
+ vite: 5.4.3
vite-node: 2.0.5
why-is-node-running: 2.3.0
optionalDependencies:
- jsdom: 24.1.1
+ happy-dom: 15.7.3
transitivePeerDependencies:
- less
- lightningcss
@@ -3672,27 +3343,14 @@ snapshots:
vue-tsc@2.0.29(typescript@5.5.4):
dependencies:
- '@volar/typescript': 2.4.0-alpha.18
+ '@volar/typescript': 2.4.2
'@vue/language-core': 2.0.29(typescript@5.5.4)
semver: 7.6.3
typescript: 5.5.4
- w3c-xmlserializer@5.0.0:
- dependencies:
- xml-name-validator: 5.0.0
-
webidl-conversions@7.0.0: {}
- whatwg-encoding@3.1.1:
- dependencies:
- iconv-lite: 0.6.3
-
- whatwg-mimetype@4.0.0: {}
-
- whatwg-url@14.0.0:
- dependencies:
- tr46: 5.0.0
- webidl-conversions: 7.0.0
+ whatwg-mimetype@3.0.0: {}
which@2.0.2:
dependencies:
@@ -3717,12 +3375,6 @@ snapshots:
string-width: 5.1.2
strip-ansi: 7.1.0
- ws@8.18.0: {}
-
- xml-name-validator@5.0.0: {}
-
- xmlchars@2.2.0: {}
-
yallist@3.1.1: {}
yallist@4.0.0: {}
diff --git a/src/_utils.ts b/src/_utils.ts
index b8158d2..1104ea2 100644
--- a/src/_utils.ts
+++ b/src/_utils.ts
@@ -10,48 +10,3 @@ export type IfAny = 0 extends 1 & T ? Y : N
export const increment = (s: number) => s + 1
export const useForceUpdate = () => useReducer(increment, 0)[1]
-
-// compare whether a value has changed, accounting for NaN.
-export const hasChanged = (value: any, oldValue: any): boolean => {
- return value !== oldValue && (value === value || oldValue === oldValue)
-}
-
-export const isArray = Array.isArray
-export const objectToString = Object.prototype.toString
-export const toTypeString = (value: unknown): string => {
- return objectToString.call(value)
-}
-export const isMap = (value: unknown): value is Map => {
- return toTypeString(value) === '[object Map]'
-}
-export const isSet = (value: unknown): value is Set => {
- return toTypeString(value) === '[object Set]'
-}
-export const isDate = (value: unknown): value is Date => {
- return value instanceof Date
-}
-export const isFunction = (value: unknown): value is (...args: any[]) => any => {
- return typeof value === 'function'
-}
-export const isString = (value: unknown): value is string => {
- return typeof value === 'string'
-}
-export const isSymbol = (value: unknown): value is symbol => {
- return typeof value === 'symbol'
-}
-export const isObject = (value: unknown): value is Record => {
- return value !== null && typeof value === 'object'
-}
-export const isPlainObject = (value: unknown): value is object => {
- return toTypeString(value) === '[object Object]'
-}
-export const isPromise = (value: unknown): value is Promise => {
- return isObject(value) && isFunction(value.then) && isFunction(value.catch)
-}
-
-export const removeArrayItem = (array: T[], element: T) => {
- const i = array.indexOf(element)
- if (i > -1) {
- array.splice(i, 1)
- }
-}
diff --git a/src/computed.ts b/src/computed.ts
index 3dd1ad2..64b4106 100644
--- a/src/computed.ts
+++ b/src/computed.ts
@@ -4,16 +4,16 @@
*/
import { useState as useReactState } from 'react'
-import { useWatch } from './watch/watch'
-import { useForceUpdate } from './_utils'
-import { computed as vComputed } from '@vue/reactivity'
+import { computed as vueComputed } from '@vue/reactivity'
import type {
- ComputedGetter,
- DebuggerOptions,
ComputedRef,
- WritableComputedOptions,
+ ComputedGetter,
WritableComputedRef,
+ WritableComputedOptions,
+ DebuggerOptions,
} from '@vue/reactivity'
+import { useWatch } from './watch'
+import { useForceUpdate } from './_utils'
/**
* Takes a getter function and returns a readonly reactive ref object for the
@@ -55,7 +55,7 @@ export function useComputed(
debugOptions?: DebuggerOptions,
): WritableComputedRef
export function useComputed(arg1: any, arg2: any) {
- const [value] = useReactState(() => vComputed(arg1, arg2))
+ const [value] = useReactState(() => vueComputed(arg1, arg2))
const forceUpdate = useForceUpdate()
useWatch(value, forceUpdate)
return value
diff --git a/src/effectScope.ts b/src/effectScope.ts
index 73226ab..33512f0 100644
--- a/src/effectScope.ts
+++ b/src/effectScope.ts
@@ -4,7 +4,7 @@
*/
import { useState as useReactState, useRef as useReactRef, useCallback as useReactCallback } from 'react'
-import { effectScope } from '@vue/reactivity'
+import { effectScope as vueEffectScope } from '@vue/reactivity'
import { ArgumentTypes } from './_utils'
/**
@@ -16,9 +16,9 @@ import { ArgumentTypes } from './_utils'
* @param detached - Can be used to create a "detached" effect scope.
* @see {@link https://vuejs.org/api/reactivity-advanced.html#effectscope Vue `effectScope()`}
*/
-export function useEffectScope(...args: ArgumentTypes) {
+export function useEffectScope(...args: ArgumentTypes) {
const hasRun = useReactRef(false)
- const [scope] = useReactState(() => effectScope(...args))
+ const [scope] = useReactState(() => vueEffectScope(...args))
const originalRunRef = useReactRef(scope.run)
const runFn = useReactCallback((fn: () => T) => {
if (!hasRun.current) {
diff --git a/src/index.ts b/src/index.ts
index 9c66b1d..c0322ce 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -5,6 +5,7 @@
// redirect all APIs from @vue/reactivity
export * from '@vue/reactivity'
+export { watch as baseWatch } from '@vue/reactivity'
// lifecycle hooks
export { onMounted, onUpdated, onBeforeUnmount } from './lifecycle'
@@ -22,15 +23,12 @@ export { useReadonly, useShallowReadonly } from './readonly'
export { useComputed } from './computed'
// watch and hooks
-export { watch, useWatch } from './watch/watch'
-export type { WatchOptions, WatchSource, MultiWatchSources, WatchCallback } from './watch/watch'
+export { watch, useWatch } from './watch'
+export type { WatchOptions, MultiWatchSources } from './watch'
// watchEffect and hooks
-export { watchEffect, useWatchEffect } from './watch/watchEffect'
-export type { WatchEffect, WatchEffectOptions } from './watch/watchEffect'
-
-// watch handle
-export type { WatchStopHandle, WatchHandle } from './watch/type'
+export { watchEffect, useWatchEffect } from './watchEffect'
+export type { WatchEffectOptions } from './watchEffect'
// effectScope hooks
export { useEffectScope } from './effectScope'
diff --git a/src/reactive.ts b/src/reactive.ts
index 5febacc..c3ca2fe 100644
--- a/src/reactive.ts
+++ b/src/reactive.ts
@@ -4,10 +4,10 @@
*/
import { useState as useReactState } from 'react'
-import { useWatch } from './watch/watch'
-import { useForceUpdate } from './_utils'
-import { reactive as vReactive, shallowReactive as vShallowReactive } from '@vue/reactivity'
+import { reactive as vueReactive, shallowReactive as vueShallowReactive } from '@vue/reactivity'
import type { Reactive, ShallowReactive } from '@vue/reactivity'
+import { useWatch } from './watch'
+import { useForceUpdate } from './_utils'
/**
* Returns a reactive proxy of the object.
@@ -26,7 +26,7 @@ import type { Reactive, ShallowReactive } from '@vue/reactivity'
*/
export function useReactive(target: T): Reactive
export function useReactive(target: object) {
- const [value] = useReactState(() => vReactive(target))
+ const [value] = useReactState(() => vueReactive(target))
const forceUpdate = useForceUpdate()
useWatch(value, forceUpdate)
return value
@@ -63,7 +63,7 @@ export function useReactive(target: object) {
* ```
*/
export function useShallowReactive(target: T): ShallowReactive {
- const [value] = useReactState(() => vShallowReactive(target))
+ const [value] = useReactState(() => vueShallowReactive(target))
const forceUpdate = useForceUpdate()
useWatch(value, forceUpdate)
return value
diff --git a/src/reactivity.ts b/src/reactivity.ts
index d2c4f8a..4fc2bd5 100644
--- a/src/reactivity.ts
+++ b/src/reactivity.ts
@@ -3,7 +3,7 @@
* @author Surmon
*/
-import { useWatch } from './watch/watch'
+import { useWatch } from './watch'
import { useForceUpdate } from './_utils'
/**
diff --git a/src/readonly.ts b/src/readonly.ts
index a1653b1..5beb2e0 100644
--- a/src/readonly.ts
+++ b/src/readonly.ts
@@ -4,10 +4,10 @@
*/
import { useState as useReactState } from 'react'
-import { useWatch } from './watch/watch'
-import { useForceUpdate } from './_utils'
-import { readonly as vReadonly, shallowReadonly as vShallowReadonly } from '@vue/reactivity'
+import { readonly as vueReadonly, shallowReadonly as vueShallowReadonly } from '@vue/reactivity'
import type { DeepReadonly, UnwrapNestedRefs } from '@vue/reactivity'
+import { useWatch } from './watch'
+import { useForceUpdate } from './_utils'
/**
* Takes an object (reactive or plain) or a ref and returns a readonly proxy to
@@ -38,7 +38,7 @@ import type { DeepReadonly, UnwrapNestedRefs } from '@vue/reactivity'
* ```
*/
export function useReadonly(target: T): DeepReadonly> {
- const [value] = useReactState(() => vReadonly(target))
+ const [value] = useReactState(() => vueReadonly(target))
const forceUpdate = useForceUpdate()
useWatch(value, forceUpdate)
return value
@@ -78,7 +78,7 @@ export function useReadonly(target: T): DeepReadonly(target: T): Readonly {
- const [value] = useReactState(() => vShallowReadonly(target))
+ const [value] = useReactState(() => vueShallowReadonly(target))
const forceUpdate = useForceUpdate()
useWatch(value, forceUpdate)
return value
diff --git a/src/ref.ts b/src/ref.ts
index 24282e3..8681eba 100644
--- a/src/ref.ts
+++ b/src/ref.ts
@@ -4,10 +4,10 @@
*/
import { useState as useReactState } from 'react'
-import { useForceUpdate, IfAny } from './_utils'
-import { useWatch } from './watch/watch'
-import { ref as vRef, shallowRef as vShallowRef, customRef as vCustomRef } from '@vue/reactivity'
+import { ref as vueRef, shallowRef as vueShallowRef, customRef as vueCustomRef } from '@vue/reactivity'
import type { Ref, UnwrapRef, ShallowRef, CustomRefFactory } from '@vue/reactivity'
+import { useForceUpdate, IfAny } from './_utils'
+import { useWatch } from './watch'
/**
* Takes an inner value and returns a reactive and mutable ref object, which
@@ -30,10 +30,10 @@ export function useRef(
): [T] extends [Ref] ? IfAny, T> : Ref, UnwrapRef | T>
export function useRef(): Ref
export function useRef(initValue?: unknown) {
- const [refObj] = useReactState(() => vRef(initValue))
+ const [refObject] = useReactState(() => vueRef(initValue))
const forceUpdate = useForceUpdate()
- useWatch(refObj, forceUpdate, { deep: true })
- return refObj as unknown as any
+ useWatch(refObject, forceUpdate, { deep: true })
+ return refObject as unknown as any
}
/**
@@ -56,10 +56,10 @@ export function useShallowRef(
): Ref extends T ? (T extends Ref ? IfAny, T> : ShallowRef) : ShallowRef
export function useShallowRef(): ShallowRef
export function useShallowRef(initValue?: unknown) {
- const [sRefObj] = useReactState(() => vShallowRef(initValue))
+ const [shallowRefObject] = useReactState(() => vueShallowRef(initValue))
const forceUpdate = useForceUpdate()
- useWatch(sRefObj, forceUpdate)
- return sRefObj
+ useWatch(shallowRefObject, forceUpdate)
+ return shallowRefObject
}
/**
@@ -70,8 +70,8 @@ export function useShallowRef(initValue?: unknown) {
* @see {@link https://vuejs.org/api/reactivity-advanced.html#customref Vue `customRef()`}
*/
export function useCustomRef(factory: CustomRefFactory): Ref {
- const [cRefObj] = useReactState(() => vCustomRef(factory))
+ const [customRefObject] = useReactState(() => vueCustomRef(factory))
const forceUpdate = useForceUpdate()
- useWatch(cRefObj, forceUpdate)
- return cRefObj
+ useWatch(customRefObject, forceUpdate)
+ return customRefObject
}
diff --git a/src/watch.ts b/src/watch.ts
new file mode 100644
index 0000000..f7dd1ef
--- /dev/null
+++ b/src/watch.ts
@@ -0,0 +1,121 @@
+/**
+ * @module veact.watch
+ * @author Surmon
+ */
+
+import { useState as useReactState } from 'react'
+import { watch as vueWatch } from '@vue/reactivity'
+import type {
+ ReactiveMarker,
+ DebuggerOptions,
+ WatchCallback,
+ WatchSource,
+ WatchHandle,
+} from '@vue/reactivity'
+import { onBeforeUnmount } from './lifecycle'
+import { logger } from './_logger'
+
+// changelog: https://github.com/vuejs/core/blob/main/CHANGELOG.md
+// https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts
+// https://github.com/vuejs/core/blob/main/packages/reactivity/src/watch.ts
+
+export interface WatchOptions extends DebuggerOptions {
+ immediate?: Immediate
+ deep?: boolean | number
+ once?: boolean
+ // The `flush` option is not supported in veact at the moment.
+ // flush?: 'pre' | 'post' | 'sync'
+}
+
+export type MultiWatchSources = (WatchSource | object)[]
+
+type MaybeUndefined = I extends true ? T | undefined : T
+type MapSources = {
+ [K in keyof T]: T[K] extends WatchSource
+ ? MaybeUndefined
+ : T[K] extends object
+ ? MaybeUndefined
+ : never
+}
+
+/**
+ * Watches one or more reactive data sources and invokes a callback function when the sources change.
+ *
+ * @param source - The watcher's source.
+ * @param callback - This function will be called when the source is changed.
+ * @param options - An optional options object that does not support the `flush` option compared to Vue (3.5.0).
+ * @see {@link https://vuejs.org/api/reactivity-core.html#watch Vue `watch()`}
+ *
+ * @example
+ * ```js
+ * const count = ref(0)
+ * watch(count, (count, prevCount) => {
+ * // ...
+ * })
+ * ```
+ */
+
+// overload: single source + cb
+export function watch = false>(
+ source: WatchSource,
+ callback: WatchCallback>,
+ options?: WatchOptions,
+): WatchHandle
+
+// overload: reactive array or tuple of multiple sources + cb
+export function watch, Immediate extends Readonly = false>(
+ sources: readonly [...T] | T,
+ callback: [T] extends [ReactiveMarker]
+ ? WatchCallback>
+ : WatchCallback, MapSources>,
+ options?: WatchOptions,
+): WatchHandle
+
+// overload: array of multiple sources + cb
+export function watch = false>(
+ sources: [...T],
+ callback: WatchCallback, MapSources>,
+ options?: WatchOptions,
+): WatchHandle
+
+// overload: watching reactive object w/ cb
+export function watch = false>(
+ source: T,
+ callback: WatchCallback>,
+ options?: WatchOptions,
+): WatchHandle
+
+// implementation
+export function watch = false>(
+ source: T | WatchSource,
+ callback: WatchCallback,
+ options: WatchOptions = {},
+): WatchHandle {
+ return vueWatch(source as any, callback, {
+ ...options,
+ onWarn: logger.warn,
+ scheduler: (job) => job(),
+ })
+}
+
+/**
+ * Watches one or more reactive data sources and invokes a callback function when the sources change.
+ *
+ * @param source - The watcher's source.
+ * @param callback - This function will be called when the source is changed.
+ * @param options - An optional options object that does not support the `flush` option compared to Vue (3.5.0).
+ * @see {@link https://vuejs.org/api/reactivity-core.html#watch Vue `watch()`}
+ *
+ * @example
+ * ```js
+ * const count = useRef(0)
+ * useWatch(count, (count, prevCount) => {
+ * // ...
+ * })
+ * ```
+ */
+export const useWatch: typeof watch = (source: any, callback: any, options = {}) => {
+ const [watchHandle] = useReactState(() => watch(source as any, callback, options))
+ onBeforeUnmount(() => watchHandle.stop())
+ return watchHandle
+}
diff --git a/src/watch/patch.ts b/src/watch/patch.ts
deleted file mode 100644
index 481aabd..0000000
--- a/src/watch/patch.ts
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * @module veact.watch.patch
- * @author Surmon
- */
-
-import { isRef, ReactiveFlags } from '@vue/reactivity'
-import { isArray, isObject, isSet, isMap, isFunction, isPromise, isPlainObject } from '../_utils'
-import { logger } from '../_logger'
-
-export const NOOP_FN = () => {}
-
-// fork form: https://github.com/vuejs/core/blob/main/packages/runtime-core/src/errorHandling.ts
-export const WATCH_GETTER_ERROR = 'watcher getter'
-export const WATCH_CLEANUP_ERROR = 'watcher cleanup function'
-export const WATCH_CALLBACK_ERROR = 'watcher callback'
-
-// fork from: https://github.com/vuejs/vue-next/blob/main/packages/runtime-core/src/errorHandling.ts
-export function callWithErrorHandling(fn: Function, errorString: string, args?: unknown[]) {
- try {
- return args ? fn(...args) : fn()
- } catch (error) {
- logger.error(error, errorString)
- }
-}
-
-export function callWithAsyncErrorHandling(
- fn: Function | Function[],
- errorString: string,
- args?: unknown[],
-): any {
- if (isFunction(fn)) {
- const result = callWithErrorHandling(fn, errorString, args)
- if (result && isPromise(result)) {
- result.catch((error) => {
- logger.error(error, errorString)
- })
- }
- return result
- }
-
- if (isArray(fn)) {
- const values = []
- for (let i = 0; i < fn.length; i++) {
- values.push(callWithAsyncErrorHandling(fn[i], errorString, args))
- }
- return values
- }
-}
-
-// fork form: https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts#L466
-export function traverse(value: unknown, depth: number = Infinity, seen?: Set): unknown {
- if (depth <= 0 || !isObject(value) || (value as any)[ReactiveFlags.SKIP]) {
- return value
- }
-
- seen = seen || new Set()
- if (seen.has(value)) {
- return value
- }
- seen.add(value)
- depth--
- if (isRef(value)) {
- traverse(value.value, depth, seen)
- } else if (isArray(value)) {
- for (let i = 0; i < value.length; i++) {
- traverse(value[i], depth, seen)
- }
- } else if (isSet(value) || isMap(value)) {
- value.forEach((v: any) => {
- traverse(v, depth, seen)
- })
- } else if (isPlainObject(value)) {
- for (const key in value) {
- traverse(value[key], depth, seen)
- }
- for (const key of Object.getOwnPropertySymbols(value)) {
- if (Object.prototype.propertyIsEnumerable.call(value, key)) {
- traverse(value[key as any], depth, seen)
- }
- }
- }
- return value
-}
diff --git a/src/watch/type.ts b/src/watch/type.ts
deleted file mode 100644
index 45b41d0..0000000
--- a/src/watch/type.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * @module veact.watch.type
- * @author Surmon
- */
-
-import type { ReactiveEffect, EffectScope as _EffectScope } from '@vue/reactivity'
-
-export type OnCleanup = (cleanupFn: () => void) => void
-
-export type WatchStopHandle = () => void
-export interface WatchHandle extends WatchStopHandle {
- pause: () => void
- resume: () => void
- stop: () => void
-}
-
-export interface EffectScope extends _EffectScope {
- parent: any
- cleanups: any[]
- effects: ReactiveEffect[]
-}
diff --git a/src/watch/watch.ts b/src/watch/watch.ts
deleted file mode 100644
index a54e9c7..0000000
--- a/src/watch/watch.ts
+++ /dev/null
@@ -1,285 +0,0 @@
-/**
- * @module veact.watch.watch
- * @author Surmon
- */
-
-import { useState as useReactState } from 'react'
-import { isRef, isShallow, isReactive, getCurrentScope, EffectFlags, ReactiveEffect } from '@vue/reactivity'
-import type { Ref, ComputedRef, ReactiveMarker, EffectScheduler, DebuggerOptions } from '@vue/reactivity'
-import { onBeforeUnmount } from '../lifecycle'
-import { logger } from '../_logger'
-import { hasChanged, isArray, isFunction, removeArrayItem } from '../_utils'
-import type { EffectScope, WatchHandle, OnCleanup } from './type'
-import {
- traverse,
- NOOP_FN,
- WATCH_GETTER_ERROR,
- WATCH_CLEANUP_ERROR,
- WATCH_CALLBACK_ERROR,
- callWithErrorHandling,
- callWithAsyncErrorHandling,
-} from './patch'
-
-// fork form: https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts
-// commits: https://github.com/vuejs/core/commits/main/packages/runtime-core/src/apiWatch.ts
-// changelog: https://github.com/vuejs/core/blob/main/CHANGELOG.md
-
-// initial value for watchers to trigger on undefined initial values
-const INITIAL_WATCHER_VALUE = {}
-
-const warnInvalidSource = (source: unknown) => {
- logger.warn(
- `Invalid watch source: `,
- source,
- `A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types.`,
- )
-}
-
-export interface WatchOptions extends DebuggerOptions {
- immediate?: Immediate
- deep?: boolean | number
- once?: boolean
- // The `flush` option is not supported in react at the moment.
- // flush?: 'pre' | 'post' | 'sync'
-}
-
-type WatchFn = () => T
-export type WatchSource = Ref | ComputedRef | WatchFn
-export type MultiWatchSources = (WatchSource | object)[]
-export type WatchCallback = (
- value: Value,
- oldValue: OldValue,
- onCleanup: OnCleanup,
-) => any
-
-type MaybeUndefined = I extends true ? T | undefined : T
-type MapSources = {
- [K in keyof T]: T[K] extends WatchSource
- ? MaybeUndefined
- : T[K] extends object
- ? MaybeUndefined
- : never
-}
-
-/**
- * Watches one or more reactive data sources and invokes a callback function when the sources change.
- *
- * @param source - The watcher's source.
- * @param callback - This function will be called when the source is changed.
- * @param options - An optional options object that does not support the `flush` option compared to Vue (3.5.0).
- * @see {@link https://vuejs.org/api/reactivity-core.html#watch Vue `watch()`}
- *
- * @example
- * ```js
- * const count = ref(0)
- * watch(count, (count, prevCount) => {
- * // ...
- * })
- * ```
- */
-
-// overload: single source + cb
-export function watch = false>(
- source: WatchSource,
- callback: WatchCallback>,
- options?: WatchOptions,
-): WatchHandle
-
-// overload: reactive array or tuple of multiple sources + cb
-export function watch, Immediate extends Readonly = false>(
- sources: readonly [...T] | T,
- callback: [T] extends [ReactiveMarker]
- ? WatchCallback>
- : WatchCallback, MapSources>,
- options?: WatchOptions,
-): WatchHandle
-
-// overload: array of multiple sources + cb
-export function watch = false>(
- sources: [...T],
- callback: WatchCallback, MapSources>,
- options?: WatchOptions,
-): WatchHandle
-
-// overload: watching reactive object w/ cb
-export function watch = false>(
- source: T,
- callback: WatchCallback>,
- options?: WatchOptions,
-): WatchHandle
-
-// implementation
-export function watch = false>(
- source: T | WatchSource,
- callback: WatchCallback,
- options: WatchOptions = {},
-): WatchHandle {
- const { immediate, deep, once, onTrack, onTrigger } = options
- const reactiveGetter = (source: object) => {
- // traverse will happen in wrapped getter below
- if (deep) return source
- // for `deep: false | 0` or shallow reactive, only traverse root-level properties
- if (isShallow(source) || deep === false || deep === 0) return traverse(source, 1)
- // for `deep: undefined` on a reactive object, deeply traverse all properties
- return traverse(source)
- }
-
- let watchHandle: WatchHandle
- let getter: WatchFn
- let forceTrigger = false
- let isMultiSource = false
- let effect: ReactiveEffect
-
- // In an SSR environment, callbacks need to be wrapped
- if (once) {
- const _callback = callback
- callback = (...args) => {
- _callback(...args)
- watchHandle()
- }
- }
-
- if (isRef(source)) {
- getter = () => source.value
- forceTrigger = isShallow(source)
- } else if (isReactive(source)) {
- // @ts-ignore
- getter = () => reactiveGetter(source)
- forceTrigger = true
- } else if (isArray(source)) {
- isMultiSource = true
- forceTrigger = source.some((s) => isReactive(s) || isShallow(s))
- getter = () => {
- return source.map((s) => {
- if (isRef(s)) {
- return s.value
- } else if (isReactive(s)) {
- return reactiveGetter(s)
- } else if (isFunction(s)) {
- return callWithErrorHandling(s, WATCH_GETTER_ERROR)
- } else {
- warnInvalidSource(s)
- }
- })
- }
- } else if (isFunction(source)) {
- getter = () => callWithErrorHandling(source, WATCH_GETTER_ERROR)
- } else {
- getter = NOOP_FN
- warnInvalidSource(source)
- }
-
- if (deep) {
- const baseGetter = getter
- const depth = deep === true ? Infinity : deep
- getter = () => traverse(baseGetter(), depth)
- }
-
- let cleanup: (() => void) | undefined
- let onCleanup: OnCleanup = (fn: () => void) => {
- cleanup = effect.onStop = () => {
- callWithErrorHandling(fn, WATCH_CLEANUP_ERROR)
- cleanup = effect.onStop = undefined
- }
- }
-
- // in SSR there is no need to setup an actual effect, and it should be noop, unless it's eager.
- // if (isSSR) {
- // // we will also not call the invalidate callback (+ runner is not set up)
- // onCleanup = NOOP_FN
- // if (immediate) {
- // callWithAsyncErrorHandling(callback, WATCH_CALLBACK_ERROR, [
- // getter(),
- // isMultiSource ? [] : undefined,
- // onCleanup,
- // ])
- // }
- // watchHandle = () => {}
- // watchHandle.stop = NOOP_FN
- // watchHandle.resume = NOOP_FN
- // watchHandle.pause = NOOP_FN
- // return watchHandle
- // }
-
- let oldValue: any = isMultiSource
- ? new Array((source as []).length).fill(INITIAL_WATCHER_VALUE)
- : INITIAL_WATCHER_VALUE
-
- const scheduler: EffectScheduler = (immediateFirstRun?: boolean) => {
- if (!((effect as any).flags & EffectFlags.ACTIVE) || (!effect.dirty && !immediateFirstRun)) {
- return
- }
- const newValue = effect.run()
- if (
- deep ||
- forceTrigger ||
- (isMultiSource
- ? (newValue as any[]).some((v, i) => hasChanged(v, oldValue[i]))
- : hasChanged(newValue, oldValue))
- ) {
- // cleanup before running cb again
- cleanup?.()
- callWithAsyncErrorHandling(callback, WATCH_CALLBACK_ERROR, [
- newValue,
- // pass undefined as the old value when it's changed for the first time
- oldValue === INITIAL_WATCHER_VALUE
- ? undefined
- : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE
- ? []
- : oldValue,
- onCleanup,
- ])
- oldValue = newValue
- }
- }
-
- effect = new ReactiveEffect(getter)
- effect.scheduler = scheduler
- effect.onTrack = onTrack
- effect.onTrigger = onTrigger
-
- const scope = getCurrentScope()
- // @ts-ignore
- watchHandle = () => {
- effect.stop()
- if (scope) {
- removeArrayItem((scope as EffectScope).effects, effect)
- }
- }
-
- watchHandle.pause = effect.pause.bind(effect)
- watchHandle.resume = effect.resume.bind(effect)
- watchHandle.stop = watchHandle
-
- // initial run
- if (immediate) {
- scheduler(true)
- } else {
- oldValue = effect.run()
- }
-
- // stop handle
- return watchHandle
-}
-
-/**
- * Watches one or more reactive data sources and invokes a callback function when the sources change.
- *
- * @param source - The watcher's source.
- * @param callback - This function will be called when the source is changed.
- * @param options - An optional options object that does not support the `flush` option compared to Vue (3.5.0).
- * @see {@link https://vuejs.org/api/reactivity-core.html#watch Vue `watch()`}
- *
- * @example
- * ```js
- * const count = useRef(0)
- * useWatch(count, (count, prevCount) => {
- * // ...
- * })
- * ```
- */
-export const useWatch: typeof watch = (source: any, callback: any, options = {}) => {
- const [watchHandle] = useReactState(() => watch(source as any, callback, options))
- onBeforeUnmount(() => watchHandle.stop())
- return watchHandle
-}
diff --git a/src/watch/watchEffect.ts b/src/watch/watchEffect.ts
deleted file mode 100644
index f2264a9..0000000
--- a/src/watch/watchEffect.ts
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * @module veact.watch.watchEffect
- * @author Surmon
- */
-
-// DOC: https://vuejs.org/api/reactivity-core.html#watcheffect
-// fork form: https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts#L82
-import { useState as useReactState } from 'react'
-import { getCurrentScope, EffectFlags, ReactiveEffect } from '@vue/reactivity'
-import type { DebuggerOptions, EffectScheduler } from '@vue/reactivity'
-import { onBeforeUnmount } from '../lifecycle'
-import { removeArrayItem } from '../_utils'
-import type { OnCleanup, EffectScope, WatchHandle } from './type'
-import {
- WATCH_CLEANUP_ERROR,
- WATCH_CALLBACK_ERROR,
- callWithErrorHandling,
- callWithAsyncErrorHandling,
-} from './patch'
-
-export type WatchEffectOptions = DebuggerOptions
-export type WatchEffect = (onCleanup: OnCleanup) => void
-
-/**
- * Runs a function immediately while reactively tracking its dependencies and re-runs it whenever the dependencies are changed.
- *
- * @param effectFn - The effect function to run.
- * @param options - An optional options object that can be used to adjust the effect's flush timing or to debug the effect's dependencies; the `flush` option is not supported compared to Vue (3.5.0).
- * @see {@link https://vuejs.org/api/reactivity-core.html#watcheffect Vue `watchEffect()`}
- *
- * @example
- * ```js
- * const count = ref(0)
- * watchEffect(() => console.log(count.value))
- * // -> logs 0
- *
- * count.value++
- * // -> logs 1
- * ```
- */
-export function watchEffect(effectFn: WatchEffect, options: WatchEffectOptions = {}): WatchHandle {
- let effect: ReactiveEffect
- let watchHandle: WatchHandle
- let cleanup: (() => void) | undefined
-
- const onCleanup: OnCleanup = (fn: () => void) => {
- cleanup = effect.onStop = () => {
- callWithErrorHandling(fn, WATCH_CLEANUP_ERROR)
- cleanup = effect.onStop = undefined
- }
- }
-
- const getter = () => {
- // cleanup before running cb again
- cleanup?.()
- return callWithAsyncErrorHandling(effectFn, WATCH_CALLBACK_ERROR, [onCleanup])
- }
-
- const scheduler: EffectScheduler = () => {
- if (!((effect as any).flags & EffectFlags.ACTIVE) || !effect.dirty) {
- return
- }
- effect.run()
- }
-
- // effect
- effect = new ReactiveEffect(getter)
- effect.scheduler = scheduler
- effect.onTrack = options.onTrack
- effect.onTrigger = options.onTrigger
-
- const scope = getCurrentScope()
- // @ts-ignore
- watchHandle = () => {
- effect.stop()
- if (scope) {
- removeArrayItem((scope as EffectScope).effects, effect)
- }
- }
-
- watchHandle.pause = effect.pause.bind(effect)
- watchHandle.resume = effect.resume.bind(effect)
- watchHandle.stop = watchHandle
-
- // initial run
- effect.run()
-
- // stop handle
- return watchHandle
-}
-
-/**
- * Runs a function immediately while reactively tracking its dependencies and re-runs it whenever the dependencies are changed.
- *
- * @param effect - The effect function to run.
- * @param options - An optional options object that can be used to adjust the effect's flush timing or to debug the effect's dependencies; the `flush` option is not supported compared to Vue (3.5.0).
- * @see {@link https://vuejs.org/api/reactivity-core.html#watcheffect Vue `watchEffect()`}
- *
- * @example
- * ```js
- * const count = useRef(0)
- * useWatchEffect(() => console.log(count.value))
- * // -> logs 0
- *
- * count.value++
- * // -> logs 1
- * ```
- */
-export const useWatchEffect: typeof watchEffect = (effect: any, options?: any) => {
- const [watchHandle] = useReactState(() => watchEffect(effect, options))
- onBeforeUnmount(() => watchHandle.stop())
- return watchHandle
-}
diff --git a/src/watchEffect.ts b/src/watchEffect.ts
new file mode 100644
index 0000000..9abff04
--- /dev/null
+++ b/src/watchEffect.ts
@@ -0,0 +1,64 @@
+/**
+ * @module veact.watchEffect
+ * @author Surmon
+ */
+
+import { useState as useReactState } from 'react'
+import { watch as vueWatch } from '@vue/reactivity'
+import type { WatchEffect, WatchHandle, DebuggerOptions } from '@vue/reactivity'
+import { onBeforeUnmount } from './lifecycle'
+import { logger } from './_logger'
+
+// changelog: https://github.com/vuejs/core/blob/main/CHANGELOG.md
+// https://github.com/vuejs/core/blob/main/packages/runtime-core/src/apiWatch.ts
+// https://github.com/vuejs/core/blob/main/packages/reactivity/src/watch.ts
+
+export type WatchEffectOptions = DebuggerOptions
+
+/**
+ * Runs a function immediately while reactively tracking its dependencies and re-runs it whenever the dependencies are changed.
+ *
+ * @param effectFn - The effect function to run.
+ * @param options - An optional options object that can be used to adjust the effect's flush timing or to debug the effect's dependencies; the `flush` option is not supported compared to Vue (3.5.0).
+ * @see {@link https://vuejs.org/api/reactivity-core.html#watcheffect Vue `watchEffect()`}
+ *
+ * @example
+ * ```js
+ * const count = ref(0)
+ * watchEffect(() => console.log(count.value))
+ * // -> logs 0
+ *
+ * count.value++
+ * // -> logs 1
+ * ```
+ */
+export function watchEffect(effectFn: WatchEffect, options: WatchEffectOptions = {}): WatchHandle {
+ return vueWatch(effectFn, null, {
+ ...options,
+ onWarn: logger.warn,
+ scheduler: (job) => job(),
+ })
+}
+
+/**
+ * Runs a function immediately while reactively tracking its dependencies and re-runs it whenever the dependencies are changed.
+ *
+ * @param effect - The effect function to run.
+ * @param options - An optional options object that can be used to adjust the effect's flush timing or to debug the effect's dependencies; the `flush` option is not supported compared to Vue (3.5.0).
+ * @see {@link https://vuejs.org/api/reactivity-core.html#watcheffect Vue `watchEffect()`}
+ *
+ * @example
+ * ```js
+ * const count = useRef(0)
+ * useWatchEffect(() => console.log(count.value))
+ * // -> logs 0
+ *
+ * count.value++
+ * // -> logs 1
+ * ```
+ */
+export const useWatchEffect: typeof watchEffect = (effect: any, options?: any) => {
+ const [watchHandle] = useReactState(() => watchEffect(effect, options))
+ onBeforeUnmount(() => watchHandle.stop())
+ return watchHandle
+}
diff --git a/tests/apis.spec.ts b/tests/apis.spec.ts
index af683dc..62f5b19 100644
--- a/tests/apis.spec.ts
+++ b/tests/apis.spec.ts
@@ -22,11 +22,14 @@ import {
} from '../src'
test(' should be export all @vue/reactivity members', () => {
+ expect(vueReactivity.watch).toBe(veact.baseWatch)
expect(
- Object.keys(vueReactivity).every((key) => {
- const targetMember = veact[key]
- return targetMember && vueReactivity[key] === targetMember
- }),
+ Object.keys(vueReactivity)
+ .filter((key) => key !== 'watch')
+ .every((key) => {
+ const targetMember = (veact as any)[key]
+ return targetMember && (vueReactivity as any)[key] === targetMember
+ }),
).toBeTruthy()
})
diff --git a/tests/effectScope.spec.ts b/tests/effectScope.spec.ts
index 71f17f4..c7fe906 100644
--- a/tests/effectScope.spec.ts
+++ b/tests/effectScope.spec.ts
@@ -1,6 +1,16 @@
import { test, expect } from 'vitest'
import { renderHook, act } from '@testing-library/react'
-import { ref, reactive, useRef, watch, EffectScope, onUpdated, useEffectScope, onScopeDispose } from '../src'
+import {
+ ref,
+ reactive,
+ useRef,
+ watch,
+ EffectScope,
+ onUpdated,
+ useEffectScope,
+ getCurrentScope,
+ onScopeDispose,
+} from '../src'
test('', () => {
let renderCount = 0
@@ -27,6 +37,10 @@ test('', () => {
onScopeDispose(() => {
scopeDisposed = true
})
+
+ const currentScope = getCurrentScope()
+ expect(currentScope).toBeDefined()
+ expect(getCurrentScope()).toBe(currentScope)
})
return {
diff --git a/tests/watch.spec.ts b/tests/watch.spec.ts
index 310e87a..d93c068 100644
--- a/tests/watch.spec.ts
+++ b/tests/watch.spec.ts
@@ -1,14 +1,15 @@
import { test, expect } from 'vitest'
import { renderHook, act } from '@testing-library/react'
-import { ref, reactive, watch, useRef, useWatch, onUpdated } from '../src'
+import { ref, reactive, watch, useRef, useWatch, onUpdated, onWatcherCleanup } from '../src'
-test(' onCleanup / watchHandle', () => {
+test(' watchHandle / onCleanup / onWatcherCleanup', () => {
const logs: any[] = []
const count = ref(0)
const watchHandle = watch(count, (value, _, onCleanup) => {
logs.push(value)
onCleanup(() => logs.push('onCleanup'))
+ onWatcherCleanup(() => logs.push('onWatcherCleanup'))
})
expect(logs.length).toBe(0)
@@ -30,14 +31,18 @@ test(' onCleanup / watchHandle', () => {
watchHandle.resume()
count.value = 3
expect(logs.at(-1)).toBe(3)
+ expect(logs.length).toBe(7)
watchHandle()
- expect(logs.at(-2)).toBe(3)
- expect(logs.at(-1)).toBe('onCleanup')
+ expect(logs.length).toBe(9)
+ expect(logs.at(-1)).toBe('onWatcherCleanup')
+ expect(logs.at(-2)).toBe('onCleanup')
+ expect(logs.at(-3)).toBe(3)
count.value = 4
expect(count.value).toBe(4)
- expect(logs.at(-1)).toBe('onCleanup')
+ expect(logs.length).toBe(9)
+ expect(logs.at(-1)).toBe('onWatcherCleanup')
})
test(' { immediate: true }', () => {
diff --git a/tests/watchEffect.spec.ts b/tests/watchEffect.spec.ts
index 8159b49..32ae926 100644
--- a/tests/watchEffect.spec.ts
+++ b/tests/watchEffect.spec.ts
@@ -1,13 +1,14 @@
import { test, expect } from 'vitest'
import { renderHook, act } from '@testing-library/react'
-import { ref, watchEffect, useWatchEffect } from '../src'
+import { ref, watchEffect, useWatchEffect, onEffectCleanup } from '../src'
-test('', () => {
+test(' watchHandle / onCleanup / onEffectCleanup', () => {
const logs: any[] = []
const count = ref(0)
const watchHandle = watchEffect((onCleanup) => {
logs.push(count.value)
onCleanup(() => logs.push('onCleanup'))
+ onEffectCleanup(() => logs.push('onEffectCleanup'))
})
expect(logs.length).toBe(1)
@@ -17,6 +18,7 @@ test('', () => {
expect(count.value).toBe(1)
expect(logs.at(-1)).toBe(1)
expect(logs.at(-2)).toBe('onCleanup')
+ expect(logs.at(-3)).toBe('onEffectCleanup')
count.value++
expect(count.value).toBe(2)
@@ -25,20 +27,22 @@ test('', () => {
watchHandle.pause()
count.value++
- expect(logs.length).toBe(5)
+ expect(logs.length).toBe(7)
watchHandle.resume()
count.value++
expect(logs.at(-1)).toBe(4)
watchHandle()
- expect(logs.at(-2)).toBe(4)
expect(logs.at(-1)).toBe('onCleanup')
+ expect(logs.at(-2)).toBe('onEffectCleanup')
+ expect(logs.at(-3)).toBe(4)
count.value++
expect(count.value).toBe(5)
- expect(logs.length).toBe(10)
+ expect(logs.length).toBe(15)
expect(logs.at(-1)).toBe('onCleanup')
+ expect(logs.at(-2)).toBe('onEffectCleanup')
})
test('', () => {
diff --git a/tsconfig.json b/tsconfig.json
index 7aa218c..926f446 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -16,5 +16,5 @@
"noImplicitReturns": true,
"outDir": "dist"
},
- "exclude": ["node_modules", "dist", "dev", "tests"]
+ "exclude": ["node_modules", "dist"]
}
diff --git a/vite.config.ts b/vite.config.ts
index 4b69257..0206637 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -23,7 +23,7 @@ export default defineConfig({
// https://github.com/qmhc/vite-plugin-dts
plugins: [viteReact(), viteDts({ rollupTypes: true })],
test: {
- environment: 'jsdom',
+ environment: 'happy-dom',
coverage: {
include: ['src/**/*'],
},