WIP: Node.js isolation primitive to run asynchronous worker-like operations without leaking async IO

Compare changes

Choose any two refs to compare.

+3
.github/workflows/ci.yml
···
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline
+
- name: Unit Tests
+
run: pnpm run test
+
- name: Type checks
run: pnpm run check
+25
.github/workflows/mirror.yml
···
+
name: Mirror
+
on:
+
push:
+
branches:
+
- main
+
jobs:
+
mirror:
+
runs-on: ubuntu-latest
+
steps:
+
- name: Checkout repository
+
uses: actions/checkout@v4
+
with:
+
fetch-depth: 0
+
fetch-tags: true
+
- name: Mirror
+
env:
+
MIRROR_SSH_KEY: ${{ secrets.MIRROR_SSH_KEY }}
+
GIT_SSH_COMMAND: 'ssh -o StrictHostKeyChecking=yes'
+
run: |
+
mkdir -p ~/.ssh
+
echo "$MIRROR_SSH_KEY" > ~/.ssh/id_rsa
+
chmod 600 ~/.ssh/id_rsa
+
ssh-keyscan -H knot.kitten.sh >> ~/.ssh/known_hosts
+
git remote add mirror "git@knot.kitten.sh:kitten.sh/${GITHUB_REPOSITORY#*/}"
+
git push --mirror mirror
+1 -4
.github/workflows/release.yml
···
- name: PR or Publish
id: changesets
-
uses: changesets/action@v1.4.5
+
uses: changesets/action@v1.5.3
with:
version: pnpm changeset:version
publish: pnpm changeset:publish
env:
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish Prerelease
if: steps.changesets.outputs.published != 'true'
env:
-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
-
npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN"
git reset --hard origin/main
pnpm changeset version --no-git-tag --snapshot canary
pnpm changeset publish --no-git-tag --snapshot canary --tag canary
-1
.gitignore
···
node_modules
dist
-
test
+7
CHANGELOG.md
···
# fiber-dev
+
## 0.0.1
+
+
### Patch Changes
+
+
- Prevent typos causing accidental state tracking issues
+
Submitted by [@kitten](https://github.com/kitten) (See [#1](https://github.com/kitten/fiber-dev/pull/1))
+
## 0.0.0
Initial Release
+14 -4
package.json
···
{
"name": "fiber-dev",
-
"version": "0.0.0",
+
"version": "0.0.1",
"description": "Node.js isolation primitive to run asynchronous worker-like operations without leaking async IO",
"author": "Phil Pluckthun <phil@kitten.sh>",
"source": "./src/index.ts",
···
"dist/"
],
"scripts": {
+
"test": "vitest run",
"build": "rollup -c ./scripts/rollup.config.mjs",
"postbuild": "tsc --noEmit ./dist/fiber-dev.d.ts",
"check": "tsc --noEmit",
"clean": "rimraf dist node_modules/.cache",
-
"prepublishOnly": "run-s clean build check",
+
"prepublishOnly": "run-s clean build check test",
"prepare": "node ./scripts/prepare.js || true",
"changeset:version": "changeset version && pnpm install --lockfile-only",
"changeset:publish": "changeset publish"
···
"devDependencies": {
"@babel/plugin-transform-block-scoping": "^7.25.9",
"@babel/plugin-transform-typescript": "^7.26.7",
-
"@changesets/cli": "^2.27.1",
+
"@changesets/cli": "^2.29.6",
"@changesets/get-github-info": "^0.6.0",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^28.0.2",
···
"rollup": "^4.32.1",
"rollup-plugin-cjs-check": "^1.0.3",
"rollup-plugin-dts": "^6.1.1",
-
"typescript": "^5.7.3"
+
"typescript": "^5.7.3",
+
"vitest": "^3.0.8"
},
"publishConfig": {
"access": "public",
"provenance": true
+
},
+
"pnpm": {
+
"ignoredBuiltDependencies": [
+
"esbuild"
+
],
+
"onlyBuiltDependencies": [
+
"esbuild"
+
]
}
}
+849 -107
pnpm-lock.yaml
···
specifier: ^7.26.7
version: 7.26.8(@babel/core@7.26.9)
'@changesets/cli':
-
specifier: ^2.27.1
-
version: 2.28.1
+
specifier: ^2.29.6
+
version: 2.29.6(@types/node@18.19.76)
'@changesets/get-github-info':
specifier: ^0.6.0
version: 0.6.0
···
typescript:
specifier: ^5.7.3
version: 5.7.3
+
vitest:
+
specifier: ^3.0.8
+
version: 3.0.8(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0)
packages:
···
resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
-
'@babel/compat-data@7.26.8':
-
resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==}
+
'@babel/code-frame@7.27.1':
+
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/compat-data@7.28.0':
+
resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==}
engines: {node: '>=6.9.0'}
'@babel/core@7.26.9':
···
resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==}
engines: {node: '>=6.9.0'}
+
'@babel/generator@7.28.3':
+
resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==}
+
engines: {node: '>=6.9.0'}
+
'@babel/helper-annotate-as-pure@7.25.9':
resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
engines: {node: '>=6.9.0'}
-
'@babel/helper-compilation-targets@7.26.5':
-
resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==}
+
'@babel/helper-compilation-targets@7.27.2':
+
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
engines: {node: '>=6.9.0'}
'@babel/helper-create-class-features-plugin@7.26.9':
···
peerDependencies:
'@babel/core': ^7.0.0
+
'@babel/helper-globals@7.28.0':
+
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+
engines: {node: '>=6.9.0'}
+
'@babel/helper-member-expression-to-functions@7.25.9':
resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
engines: {node: '>=6.9.0'}
···
resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
engines: {node: '>=6.9.0'}
-
'@babel/helper-module-transforms@7.26.0':
-
resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+
'@babel/helper-module-imports@7.27.1':
+
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/helper-module-transforms@7.28.3':
+
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
···
resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
engines: {node: '>=6.9.0'}
+
'@babel/helper-string-parser@7.27.1':
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+
engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-identifier@7.25.9':
resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
engines: {node: '>=6.9.0'}
-
'@babel/helper-validator-option@7.25.9':
-
resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+
'@babel/helper-validator-identifier@7.27.1':
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
-
'@babel/helpers@7.26.9':
-
resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==}
+
'@babel/helper-validator-option@7.27.1':
+
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/helpers@7.28.3':
+
resolution: {integrity: sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.26.9':
resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==}
+
engines: {node: '>=6.0.0'}
+
hasBin: true
+
+
'@babel/parser@7.28.3':
+
resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==}
engines: {node: '>=6.0.0'}
hasBin: true
···
'@babel/template@7.26.9':
resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==}
+
engines: {node: '>=6.9.0'}
+
+
'@babel/template@7.27.2':
+
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
engines: {node: '>=6.9.0'}
'@babel/traverse@7.26.9':
resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==}
engines: {node: '>=6.9.0'}
+
'@babel/traverse@7.28.3':
+
resolution: {integrity: sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ==}
+
engines: {node: '>=6.9.0'}
+
'@babel/types@7.26.9':
resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==}
engines: {node: '>=6.9.0'}
-
'@changesets/apply-release-plan@7.0.10':
-
resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==}
+
'@babel/types@7.28.2':
+
resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
+
engines: {node: '>=6.9.0'}
-
'@changesets/assemble-release-plan@6.0.6':
-
resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==}
+
'@changesets/apply-release-plan@7.0.12':
+
resolution: {integrity: sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==}
+
+
'@changesets/assemble-release-plan@6.0.9':
+
resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==}
'@changesets/changelog-git@0.2.1':
resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==}
-
'@changesets/cli@2.28.1':
-
resolution: {integrity: sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==}
+
'@changesets/cli@2.29.6':
+
resolution: {integrity: sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==}
hasBin: true
'@changesets/config@3.1.1':
···
'@changesets/get-github-info@0.6.0':
resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==}
-
'@changesets/get-release-plan@4.0.8':
-
resolution: {integrity: sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==}
+
'@changesets/get-release-plan@4.0.13':
+
resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==}
'@changesets/get-version-range-type@0.4.0':
resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
-
'@changesets/git@3.0.2':
-
resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==}
+
'@changesets/git@3.0.4':
+
resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==}
'@changesets/logger@0.1.1':
resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==}
···
'@changesets/pre@2.0.2':
resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==}
-
'@changesets/read@0.6.3':
-
resolution: {integrity: sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==}
+
'@changesets/read@0.6.5':
+
resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==}
'@changesets/should-skip-package@0.1.2':
resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==}
···
'@changesets/write@0.4.0':
resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==}
+
'@esbuild/aix-ppc64@0.25.1':
+
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
+
engines: {node: '>=18'}
+
cpu: [ppc64]
+
os: [aix]
+
+
'@esbuild/android-arm64@0.25.1':
+
resolution: {integrity: sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [android]
+
+
'@esbuild/android-arm@0.25.1':
+
resolution: {integrity: sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==}
+
engines: {node: '>=18'}
+
cpu: [arm]
+
os: [android]
+
+
'@esbuild/android-x64@0.25.1':
+
resolution: {integrity: sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [android]
+
+
'@esbuild/darwin-arm64@0.25.1':
+
resolution: {integrity: sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [darwin]
+
+
'@esbuild/darwin-x64@0.25.1':
+
resolution: {integrity: sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [darwin]
+
+
'@esbuild/freebsd-arm64@0.25.1':
+
resolution: {integrity: sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [freebsd]
+
+
'@esbuild/freebsd-x64@0.25.1':
+
resolution: {integrity: sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [freebsd]
+
+
'@esbuild/linux-arm64@0.25.1':
+
resolution: {integrity: sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [linux]
+
+
'@esbuild/linux-arm@0.25.1':
+
resolution: {integrity: sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==}
+
engines: {node: '>=18'}
+
cpu: [arm]
+
os: [linux]
+
+
'@esbuild/linux-ia32@0.25.1':
+
resolution: {integrity: sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==}
+
engines: {node: '>=18'}
+
cpu: [ia32]
+
os: [linux]
+
+
'@esbuild/linux-loong64@0.25.1':
+
resolution: {integrity: sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==}
+
engines: {node: '>=18'}
+
cpu: [loong64]
+
os: [linux]
+
+
'@esbuild/linux-mips64el@0.25.1':
+
resolution: {integrity: sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==}
+
engines: {node: '>=18'}
+
cpu: [mips64el]
+
os: [linux]
+
+
'@esbuild/linux-ppc64@0.25.1':
+
resolution: {integrity: sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==}
+
engines: {node: '>=18'}
+
cpu: [ppc64]
+
os: [linux]
+
+
'@esbuild/linux-riscv64@0.25.1':
+
resolution: {integrity: sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==}
+
engines: {node: '>=18'}
+
cpu: [riscv64]
+
os: [linux]
+
+
'@esbuild/linux-s390x@0.25.1':
+
resolution: {integrity: sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==}
+
engines: {node: '>=18'}
+
cpu: [s390x]
+
os: [linux]
+
+
'@esbuild/linux-x64@0.25.1':
+
resolution: {integrity: sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [linux]
+
+
'@esbuild/netbsd-arm64@0.25.1':
+
resolution: {integrity: sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [netbsd]
+
+
'@esbuild/netbsd-x64@0.25.1':
+
resolution: {integrity: sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [netbsd]
+
+
'@esbuild/openbsd-arm64@0.25.1':
+
resolution: {integrity: sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [openbsd]
+
+
'@esbuild/openbsd-x64@0.25.1':
+
resolution: {integrity: sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [openbsd]
+
+
'@esbuild/sunos-x64@0.25.1':
+
resolution: {integrity: sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [sunos]
+
+
'@esbuild/win32-arm64@0.25.1':
+
resolution: {integrity: sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==}
+
engines: {node: '>=18'}
+
cpu: [arm64]
+
os: [win32]
+
+
'@esbuild/win32-ia32@0.25.1':
+
resolution: {integrity: sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==}
+
engines: {node: '>=18'}
+
cpu: [ia32]
+
os: [win32]
+
+
'@esbuild/win32-x64@0.25.1':
+
resolution: {integrity: sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==}
+
engines: {node: '>=18'}
+
cpu: [x64]
+
os: [win32]
+
+
'@inquirer/external-editor@1.0.1':
+
resolution: {integrity: sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==}
+
engines: {node: '>=18'}
+
peerDependencies:
+
'@types/node': '>=18'
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
+
+
'@jridgewell/gen-mapping@0.3.13':
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
'@jridgewell/gen-mapping@0.3.8':
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
···
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
'@jridgewell/sourcemap-codec@1.5.5':
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
'@jridgewell/trace-mapping@0.3.25':
resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+
'@jridgewell/trace-mapping@0.3.30':
+
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
'@manypkg/find-root@1.1.0':
resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
···
'@types/resolve@1.20.2':
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
+
'@vitest/expect@3.0.8':
+
resolution: {integrity: sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==}
+
+
'@vitest/mocker@3.0.8':
+
resolution: {integrity: sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==}
+
peerDependencies:
+
msw: ^2.4.9
+
vite: ^5.0.0 || ^6.0.0
+
peerDependenciesMeta:
+
msw:
+
optional: true
+
vite:
+
optional: true
+
+
'@vitest/pretty-format@3.0.8':
+
resolution: {integrity: sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==}
+
+
'@vitest/runner@3.0.8':
+
resolution: {integrity: sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==}
+
+
'@vitest/snapshot@3.0.8':
+
resolution: {integrity: sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==}
+
+
'@vitest/spy@3.0.8':
+
resolution: {integrity: sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==}
+
+
'@vitest/utils@3.0.8':
+
resolution: {integrity: sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==}
+
acorn@8.14.1:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
engines: {node: '>=0.4.0'}
···
resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
engines: {node: '>= 0.4'}
+
assertion-error@2.0.1:
+
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
+
engines: {node: '>=12'}
+
async-function@1.0.0:
resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
engines: {node: '>= 0.4'}
···
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
-
browserslist@4.24.4:
-
resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==}
+
browserslist@4.25.4:
+
resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
cac@6.7.14:
+
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
+
engines: {node: '>=8'}
+
call-bind-apply-helpers@1.0.2:
resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
engines: {node: '>= 0.4'}
···
resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==}
engines: {node: '>= 0.4'}
-
caniuse-lite@1.0.30001703:
-
resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==}
+
caniuse-lite@1.0.30001737:
+
resolution: {integrity: sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw==}
+
+
chai@5.2.0:
+
resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
+
engines: {node: '>=12'}
chalk@2.4.2:
resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
···
resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
chardet@0.7.0:
-
resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+
chardet@2.1.0:
+
resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==}
+
+
check-error@2.1.1:
+
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
+
engines: {node: '>= 16'}
ci-info@3.9.0:
resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
···
supports-color:
optional: true
+
debug@4.4.1:
+
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
+
engines: {node: '>=6.0'}
+
peerDependencies:
+
supports-color: '*'
+
peerDependenciesMeta:
+
supports-color:
+
optional: true
+
+
deep-eql@5.0.2:
+
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
+
engines: {node: '>=6'}
+
deepmerge@4.3.1:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
···
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
electron-to-chromium@1.5.114:
-
resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==}
+
electron-to-chromium@1.5.211:
+
resolution: {integrity: sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
···
es-errors@1.3.0:
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
engines: {node: '>= 0.4'}
+
+
es-module-lexer@1.6.0:
+
resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
es-object-atoms@1.1.1:
resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
···
resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
engines: {node: '>= 0.4'}
+
esbuild@0.25.1:
+
resolution: {integrity: sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==}
+
engines: {node: '>=18'}
+
hasBin: true
+
escalade@3.2.0:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
···
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
estree-walker@3.0.3:
+
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
···
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
+
expect-type@1.2.0:
+
resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==}
+
engines: {node: '>=12.0.0'}
+
extendable-error@0.1.7:
resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
-
-
external-editor@3.1.0:
-
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
-
engines: {node: '>=4'}
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
···
resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
engines: {node: '>=16.17.0'}
-
iconv-lite@0.4.24:
-
resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+
iconv-lite@0.6.3:
+
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
ignore@5.3.2:
···
resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==}
engines: {node: '>=18'}
+
loupe@3.1.3:
+
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
+
lru-cache@11.0.2:
resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==}
engines: {node: 20 || >=22}
···
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
nanoid@3.3.9:
+
resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==}
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+
hasBin: true
+
nice-try@1.0.5:
resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
···
resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
engines: {node: '>=18'}
-
os-tmpdir@1.0.2:
-
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
-
engines: {node: '>=0.10.0'}
-
outdent@0.5.0:
resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
···
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+
pathe@2.0.3:
+
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+
pathval@2.0.0:
+
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
+
engines: {node: '>= 14.16'}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
···
possible-typed-array-names@1.1.0:
resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
engines: {node: '>= 0.4'}
+
+
postcss@8.5.3:
+
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
+
engines: {node: ^10 || ^12 || >=14}
prettier@2.8.8:
resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
···
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
engines: {node: '>= 0.4'}
+
siginfo@2.0.0:
+
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
+
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
···
smob@1.5.0:
resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==}
+
source-map-js@1.2.1:
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+
engines: {node: '>=0.10.0'}
+
source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
···
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+
stackback@0.0.2:
+
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
+
+
std-env@3.8.1:
+
resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==}
+
string-argv@0.3.2:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
···
engines: {node: '>=10'}
hasBin: true
-
tmp@0.0.33:
-
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
-
engines: {node: '>=0.6.0'}
+
tinybench@2.9.0:
+
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
+
+
tinyexec@0.3.2:
+
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
+
+
tinypool@1.0.2:
+
resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
+
engines: {node: ^18.0.0 || >=20.0.0}
+
+
tinyrainbow@2.0.0:
+
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
+
engines: {node: '>=14.0.0'}
+
+
tinyspy@3.0.2:
+
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
+
engines: {node: '>=14.0.0'}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
···
validate-npm-package-license@3.0.4:
resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
vite-node@3.0.8:
+
resolution: {integrity: sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==}
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+
hasBin: true
+
+
vite@6.2.1:
+
resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==}
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+
hasBin: true
+
peerDependencies:
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+
jiti: '>=1.21.0'
+
less: '*'
+
lightningcss: ^1.21.0
+
sass: '*'
+
sass-embedded: '*'
+
stylus: '*'
+
sugarss: '*'
+
terser: ^5.16.0
+
tsx: ^4.8.1
+
yaml: ^2.4.2
+
peerDependenciesMeta:
+
'@types/node':
+
optional: true
+
jiti:
+
optional: true
+
less:
+
optional: true
+
lightningcss:
+
optional: true
+
sass:
+
optional: true
+
sass-embedded:
+
optional: true
+
stylus:
+
optional: true
+
sugarss:
+
optional: true
+
terser:
+
optional: true
+
tsx:
+
optional: true
+
yaml:
+
optional: true
+
+
vitest@3.0.8:
+
resolution: {integrity: sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==}
+
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+
hasBin: true
+
peerDependencies:
+
'@edge-runtime/vm': '*'
+
'@types/debug': ^4.1.12
+
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
+
'@vitest/browser': 3.0.8
+
'@vitest/ui': 3.0.8
+
happy-dom: '*'
+
jsdom: '*'
+
peerDependenciesMeta:
+
'@edge-runtime/vm':
+
optional: true
+
'@types/debug':
+
optional: true
+
'@types/node':
+
optional: true
+
'@vitest/browser':
+
optional: true
+
'@vitest/ui':
+
optional: true
+
happy-dom:
+
optional: true
+
jsdom:
+
optional: true
+
webidl-conversions@3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
···
engines: {node: '>= 8'}
hasBin: true
+
why-is-node-running@2.3.0:
+
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
+
engines: {node: '>=8'}
+
hasBin: true
+
wrap-ansi@7.0.0:
resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
engines: {node: '>=10'}
···
'@ampproject/remapping@2.3.0':
dependencies:
-
'@jridgewell/gen-mapping': 0.3.8
-
'@jridgewell/trace-mapping': 0.3.25
+
'@jridgewell/gen-mapping': 0.3.13
+
'@jridgewell/trace-mapping': 0.3.30
'@babel/code-frame@7.26.2':
dependencies:
···
js-tokens: 4.0.0
picocolors: 1.1.1
-
'@babel/compat-data@7.26.8': {}
+
'@babel/code-frame@7.27.1':
+
dependencies:
+
'@babel/helper-validator-identifier': 7.27.1
+
js-tokens: 4.0.0
+
picocolors: 1.1.1
+
+
'@babel/compat-data@7.28.0': {}
'@babel/core@7.26.9':
dependencies:
'@ampproject/remapping': 2.3.0
-
'@babel/code-frame': 7.26.2
-
'@babel/generator': 7.26.9
-
'@babel/helper-compilation-targets': 7.26.5
-
'@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9)
-
'@babel/helpers': 7.26.9
-
'@babel/parser': 7.26.9
-
'@babel/template': 7.26.9
-
'@babel/traverse': 7.26.9
-
'@babel/types': 7.26.9
+
'@babel/code-frame': 7.27.1
+
'@babel/generator': 7.28.3
+
'@babel/helper-compilation-targets': 7.27.2
+
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.26.9)
+
'@babel/helpers': 7.28.3
+
'@babel/parser': 7.28.3
+
'@babel/template': 7.27.2
+
'@babel/traverse': 7.28.3
+
'@babel/types': 7.28.2
convert-source-map: 2.0.0
-
debug: 4.4.0
+
debug: 4.4.1
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
···
'@jridgewell/trace-mapping': 0.3.25
jsesc: 3.1.0
+
'@babel/generator@7.28.3':
+
dependencies:
+
'@babel/parser': 7.28.3
+
'@babel/types': 7.28.2
+
'@jridgewell/gen-mapping': 0.3.13
+
'@jridgewell/trace-mapping': 0.3.30
+
jsesc: 3.1.0
+
'@babel/helper-annotate-as-pure@7.25.9':
dependencies:
'@babel/types': 7.26.9
-
'@babel/helper-compilation-targets@7.26.5':
+
'@babel/helper-compilation-targets@7.27.2':
dependencies:
-
'@babel/compat-data': 7.26.8
-
'@babel/helper-validator-option': 7.25.9
-
browserslist: 4.24.4
+
'@babel/compat-data': 7.28.0
+
'@babel/helper-validator-option': 7.27.1
+
browserslist: 4.25.4
lru-cache: 5.1.1
semver: 6.3.1
···
transitivePeerDependencies:
- supports-color
+
'@babel/helper-globals@7.28.0': {}
+
'@babel/helper-member-expression-to-functions@7.25.9':
dependencies:
'@babel/traverse': 7.26.9
···
transitivePeerDependencies:
- supports-color
-
'@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)':
+
'@babel/helper-module-imports@7.27.1':
+
dependencies:
+
'@babel/traverse': 7.28.3
+
'@babel/types': 7.28.2
+
transitivePeerDependencies:
+
- supports-color
+
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.26.9)':
dependencies:
'@babel/core': 7.26.9
-
'@babel/helper-module-imports': 7.25.9
-
'@babel/helper-validator-identifier': 7.25.9
-
'@babel/traverse': 7.26.9
+
'@babel/helper-module-imports': 7.27.1
+
'@babel/helper-validator-identifier': 7.27.1
+
'@babel/traverse': 7.28.3
transitivePeerDependencies:
- supports-color
···
'@babel/helper-string-parser@7.25.9': {}
+
'@babel/helper-string-parser@7.27.1': {}
+
'@babel/helper-validator-identifier@7.25.9': {}
-
'@babel/helper-validator-option@7.25.9': {}
+
'@babel/helper-validator-identifier@7.27.1': {}
-
'@babel/helpers@7.26.9':
+
'@babel/helper-validator-option@7.27.1': {}
+
+
'@babel/helpers@7.28.3':
dependencies:
-
'@babel/template': 7.26.9
-
'@babel/types': 7.26.9
+
'@babel/template': 7.27.2
+
'@babel/types': 7.28.2
'@babel/parser@7.26.9':
dependencies:
'@babel/types': 7.26.9
+
'@babel/parser@7.28.3':
+
dependencies:
+
'@babel/types': 7.28.2
+
'@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.9)':
dependencies:
'@babel/core': 7.26.9
···
'@babel/parser': 7.26.9
'@babel/types': 7.26.9
+
'@babel/template@7.27.2':
+
dependencies:
+
'@babel/code-frame': 7.27.1
+
'@babel/parser': 7.28.3
+
'@babel/types': 7.28.2
+
'@babel/traverse@7.26.9':
dependencies:
'@babel/code-frame': 7.26.2
···
transitivePeerDependencies:
- supports-color
+
'@babel/traverse@7.28.3':
+
dependencies:
+
'@babel/code-frame': 7.27.1
+
'@babel/generator': 7.28.3
+
'@babel/helper-globals': 7.28.0
+
'@babel/parser': 7.28.3
+
'@babel/template': 7.27.2
+
'@babel/types': 7.28.2
+
debug: 4.4.1
+
transitivePeerDependencies:
+
- supports-color
+
'@babel/types@7.26.9':
dependencies:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
-
'@changesets/apply-release-plan@7.0.10':
+
'@babel/types@7.28.2':
+
dependencies:
+
'@babel/helper-string-parser': 7.27.1
+
'@babel/helper-validator-identifier': 7.27.1
+
+
'@changesets/apply-release-plan@7.0.12':
dependencies:
'@changesets/config': 3.1.1
'@changesets/get-version-range-type': 0.4.0
-
'@changesets/git': 3.0.2
+
'@changesets/git': 3.0.4
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
···
resolve-from: 5.0.0
semver: 7.7.1
-
'@changesets/assemble-release-plan@6.0.6':
+
'@changesets/assemble-release-plan@6.0.9':
dependencies:
'@changesets/errors': 0.2.0
'@changesets/get-dependents-graph': 2.1.3
···
dependencies:
'@changesets/types': 6.1.0
-
'@changesets/cli@2.28.1':
+
'@changesets/cli@2.29.6(@types/node@18.19.76)':
dependencies:
-
'@changesets/apply-release-plan': 7.0.10
-
'@changesets/assemble-release-plan': 6.0.6
+
'@changesets/apply-release-plan': 7.0.12
+
'@changesets/assemble-release-plan': 6.0.9
'@changesets/changelog-git': 0.2.1
'@changesets/config': 3.1.1
'@changesets/errors': 0.2.0
'@changesets/get-dependents-graph': 2.1.3
-
'@changesets/get-release-plan': 4.0.8
-
'@changesets/git': 3.0.2
+
'@changesets/get-release-plan': 4.0.13
+
'@changesets/git': 3.0.4
'@changesets/logger': 0.1.1
'@changesets/pre': 2.0.2
-
'@changesets/read': 0.6.3
+
'@changesets/read': 0.6.5
'@changesets/should-skip-package': 0.1.2
'@changesets/types': 6.1.0
'@changesets/write': 0.4.0
+
'@inquirer/external-editor': 1.0.1(@types/node@18.19.76)
'@manypkg/get-packages': 1.1.3
ansi-colors: 4.1.3
ci-info: 3.9.0
enquirer: 2.4.1
-
external-editor: 3.1.0
fs-extra: 7.0.1
mri: 1.2.0
p-limit: 2.3.0
···
semver: 7.7.1
spawndamnit: 3.0.1
term-size: 2.2.1
+
transitivePeerDependencies:
+
- '@types/node'
'@changesets/config@3.1.1':
dependencies:
···
transitivePeerDependencies:
- encoding
-
'@changesets/get-release-plan@4.0.8':
+
'@changesets/get-release-plan@4.0.13':
dependencies:
-
'@changesets/assemble-release-plan': 6.0.6
+
'@changesets/assemble-release-plan': 6.0.9
'@changesets/config': 3.1.1
'@changesets/pre': 2.0.2
-
'@changesets/read': 0.6.3
+
'@changesets/read': 0.6.5
'@changesets/types': 6.1.0
'@manypkg/get-packages': 1.1.3
'@changesets/get-version-range-type@0.4.0': {}
-
'@changesets/git@3.0.2':
+
'@changesets/git@3.0.4':
dependencies:
'@changesets/errors': 0.2.0
'@manypkg/get-packages': 1.1.3
···
'@manypkg/get-packages': 1.1.3
fs-extra: 7.0.1
-
'@changesets/read@0.6.3':
+
'@changesets/read@0.6.5':
dependencies:
-
'@changesets/git': 3.0.2
+
'@changesets/git': 3.0.4
'@changesets/logger': 0.1.1
'@changesets/parse': 0.4.1
'@changesets/types': 6.1.0
···
human-id: 4.1.1
prettier: 2.8.8
+
'@esbuild/aix-ppc64@0.25.1':
+
optional: true
+
+
'@esbuild/android-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/android-arm@0.25.1':
+
optional: true
+
+
'@esbuild/android-x64@0.25.1':
+
optional: true
+
+
'@esbuild/darwin-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/darwin-x64@0.25.1':
+
optional: true
+
+
'@esbuild/freebsd-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/freebsd-x64@0.25.1':
+
optional: true
+
+
'@esbuild/linux-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/linux-arm@0.25.1':
+
optional: true
+
+
'@esbuild/linux-ia32@0.25.1':
+
optional: true
+
+
'@esbuild/linux-loong64@0.25.1':
+
optional: true
+
+
'@esbuild/linux-mips64el@0.25.1':
+
optional: true
+
+
'@esbuild/linux-ppc64@0.25.1':
+
optional: true
+
+
'@esbuild/linux-riscv64@0.25.1':
+
optional: true
+
+
'@esbuild/linux-s390x@0.25.1':
+
optional: true
+
+
'@esbuild/linux-x64@0.25.1':
+
optional: true
+
+
'@esbuild/netbsd-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/netbsd-x64@0.25.1':
+
optional: true
+
+
'@esbuild/openbsd-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/openbsd-x64@0.25.1':
+
optional: true
+
+
'@esbuild/sunos-x64@0.25.1':
+
optional: true
+
+
'@esbuild/win32-arm64@0.25.1':
+
optional: true
+
+
'@esbuild/win32-ia32@0.25.1':
+
optional: true
+
+
'@esbuild/win32-x64@0.25.1':
+
optional: true
+
+
'@inquirer/external-editor@1.0.1(@types/node@18.19.76)':
+
dependencies:
+
chardet: 2.1.0
+
iconv-lite: 0.6.3
+
optionalDependencies:
+
'@types/node': 18.19.76
+
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
···
strip-ansi-cjs: strip-ansi@6.0.1
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
+
+
'@jridgewell/gen-mapping@0.3.13':
+
dependencies:
+
'@jridgewell/sourcemap-codec': 1.5.5
+
'@jridgewell/trace-mapping': 0.3.30
'@jridgewell/gen-mapping@0.3.8':
dependencies:
···
'@jridgewell/sourcemap-codec@1.5.0': {}
+
'@jridgewell/sourcemap-codec@1.5.5': {}
+
'@jridgewell/trace-mapping@0.3.25':
dependencies:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
+
+
'@jridgewell/trace-mapping@0.3.30':
+
dependencies:
+
'@jridgewell/resolve-uri': 3.1.2
+
'@jridgewell/sourcemap-codec': 1.5.5
'@manypkg/find-root@1.1.0':
dependencies:
···
'@types/resolve@1.20.2': {}
+
'@vitest/expect@3.0.8':
+
dependencies:
+
'@vitest/spy': 3.0.8
+
'@vitest/utils': 3.0.8
+
chai: 5.2.0
+
tinyrainbow: 2.0.0
+
+
'@vitest/mocker@3.0.8(vite@6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0))':
+
dependencies:
+
'@vitest/spy': 3.0.8
+
estree-walker: 3.0.3
+
magic-string: 0.30.17
+
optionalDependencies:
+
vite: 6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0)
+
+
'@vitest/pretty-format@3.0.8':
+
dependencies:
+
tinyrainbow: 2.0.0
+
+
'@vitest/runner@3.0.8':
+
dependencies:
+
'@vitest/utils': 3.0.8
+
pathe: 2.0.3
+
+
'@vitest/snapshot@3.0.8':
+
dependencies:
+
'@vitest/pretty-format': 3.0.8
+
magic-string: 0.30.17
+
pathe: 2.0.3
+
+
'@vitest/spy@3.0.8':
+
dependencies:
+
tinyspy: 3.0.2
+
+
'@vitest/utils@3.0.8':
+
dependencies:
+
'@vitest/pretty-format': 3.0.8
+
loupe: 3.1.3
+
tinyrainbow: 2.0.0
+
acorn@8.14.1: {}
ansi-colors@4.1.3: {}
···
get-intrinsic: 1.3.0
is-array-buffer: 3.0.5
+
assertion-error@2.0.1: {}
+
async-function@1.0.0: {}
available-typed-arrays@1.0.7:
···
dependencies:
fill-range: 7.1.1
-
browserslist@4.24.4:
+
browserslist@4.25.4:
dependencies:
-
caniuse-lite: 1.0.30001703
-
electron-to-chromium: 1.5.114
+
caniuse-lite: 1.0.30001737
+
electron-to-chromium: 1.5.211
node-releases: 2.0.19
-
update-browserslist-db: 1.1.3(browserslist@4.24.4)
+
update-browserslist-db: 1.1.3(browserslist@4.25.4)
buffer-from@1.1.2: {}
+
+
cac@6.7.14: {}
call-bind-apply-helpers@1.0.2:
dependencies:
···
call-bind-apply-helpers: 1.0.2
get-intrinsic: 1.3.0
-
caniuse-lite@1.0.30001703: {}
+
caniuse-lite@1.0.30001737: {}
+
+
chai@5.2.0:
+
dependencies:
+
assertion-error: 2.0.1
+
check-error: 2.1.1
+
deep-eql: 5.0.2
+
loupe: 3.1.3
+
pathval: 2.0.0
chalk@2.4.2:
dependencies:
···
chalk@5.4.1: {}
-
chardet@0.7.0: {}
+
chardet@2.1.0: {}
+
+
check-error@2.1.1: {}
ci-info@3.9.0: {}
···
dependencies:
ms: 2.1.3
+
debug@4.4.1:
+
dependencies:
+
ms: 2.1.3
+
+
deep-eql@5.0.2: {}
+
deepmerge@4.3.1: {}
define-data-property@1.1.4:
···
eastasianwidth@0.2.0: {}
-
electron-to-chromium@1.5.114: {}
+
electron-to-chromium@1.5.211: {}
emoji-regex@10.4.0: {}
···
es-errors@1.3.0: {}
+
es-module-lexer@1.6.0: {}
+
es-object-atoms@1.1.1:
dependencies:
es-errors: 1.3.0
···
is-date-object: 1.1.0
is-symbol: 1.1.1
+
esbuild@0.25.1:
+
optionalDependencies:
+
'@esbuild/aix-ppc64': 0.25.1
+
'@esbuild/android-arm': 0.25.1
+
'@esbuild/android-arm64': 0.25.1
+
'@esbuild/android-x64': 0.25.1
+
'@esbuild/darwin-arm64': 0.25.1
+
'@esbuild/darwin-x64': 0.25.1
+
'@esbuild/freebsd-arm64': 0.25.1
+
'@esbuild/freebsd-x64': 0.25.1
+
'@esbuild/linux-arm': 0.25.1
+
'@esbuild/linux-arm64': 0.25.1
+
'@esbuild/linux-ia32': 0.25.1
+
'@esbuild/linux-loong64': 0.25.1
+
'@esbuild/linux-mips64el': 0.25.1
+
'@esbuild/linux-ppc64': 0.25.1
+
'@esbuild/linux-riscv64': 0.25.1
+
'@esbuild/linux-s390x': 0.25.1
+
'@esbuild/linux-x64': 0.25.1
+
'@esbuild/netbsd-arm64': 0.25.1
+
'@esbuild/netbsd-x64': 0.25.1
+
'@esbuild/openbsd-arm64': 0.25.1
+
'@esbuild/openbsd-x64': 0.25.1
+
'@esbuild/sunos-x64': 0.25.1
+
'@esbuild/win32-arm64': 0.25.1
+
'@esbuild/win32-ia32': 0.25.1
+
'@esbuild/win32-x64': 0.25.1
+
escalade@3.2.0: {}
escape-string-regexp@1.0.5: {}
···
estree-walker@2.0.2: {}
+
estree-walker@3.0.3:
+
dependencies:
+
'@types/estree': 1.0.6
+
eventemitter3@5.0.1: {}
execa@8.0.1:
···
signal-exit: 4.1.0
strip-final-newline: 3.0.0
+
expect-type@1.2.0: {}
+
extendable-error@0.1.7: {}
-
external-editor@3.1.0:
-
dependencies:
-
chardet: 0.7.0
-
iconv-lite: 0.4.24
-
tmp: 0.0.33
-
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
···
human-signals@5.0.0: {}
-
iconv-lite@0.4.24:
+
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
···
strip-ansi: 7.1.0
wrap-ansi: 9.0.0
+
loupe@3.1.3: {}
+
lru-cache@11.0.2: {}
lru-cache@5.1.1:
···
mri@1.2.0: {}
ms@2.1.3: {}
+
+
nanoid@3.3.9: {}
nice-try@1.0.5: {}
···
dependencies:
mimic-function: 5.0.1
-
os-tmpdir@1.0.2: {}
-
outdent@0.5.0: {}
own-keys@1.0.1:
···
path-type@4.0.0: {}
+
pathe@2.0.3: {}
+
+
pathval@2.0.0: {}
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
···
possible-typed-array-names@1.1.0: {}
+
postcss@8.5.3:
+
dependencies:
+
nanoid: 3.3.9
+
picocolors: 1.1.1
+
source-map-js: 1.2.1
+
prettier@2.8.8: {}
prettier@3.5.3: {}
···
side-channel-map: 1.0.1
side-channel-weakmap: 1.0.2
+
siginfo@2.0.0: {}
+
signal-exit@4.1.0: {}
slash@3.0.0: {}
···
is-fullwidth-code-point: 5.0.0
smob@1.5.0: {}
+
+
source-map-js@1.2.1: {}
source-map-support@0.5.21:
dependencies:
···
spdx-license-ids@3.0.21: {}
sprintf-js@1.0.3: {}
+
+
stackback@0.0.2: {}
+
+
std-env@3.8.1: {}
string-argv@0.3.2: {}
···
commander: 2.20.3
source-map-support: 0.5.21
-
tmp@0.0.33:
-
dependencies:
-
os-tmpdir: 1.0.2
+
tinybench@2.9.0: {}
+
+
tinyexec@0.3.2: {}
+
+
tinypool@1.0.2: {}
+
+
tinyrainbow@2.0.0: {}
+
+
tinyspy@3.0.2: {}
to-regex-range@5.0.1:
dependencies:
···
universalify@0.1.2: {}
-
update-browserslist-db@1.1.3(browserslist@4.24.4):
+
update-browserslist-db@1.1.3(browserslist@4.25.4):
dependencies:
-
browserslist: 4.24.4
+
browserslist: 4.25.4
escalade: 3.2.0
picocolors: 1.1.1
···
spdx-correct: 3.2.0
spdx-expression-parse: 3.0.1
+
vite-node@3.0.8(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0):
+
dependencies:
+
cac: 6.7.14
+
debug: 4.4.0
+
es-module-lexer: 1.6.0
+
pathe: 2.0.3
+
vite: 6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0)
+
transitivePeerDependencies:
+
- '@types/node'
+
- jiti
+
- less
+
- lightningcss
+
- sass
+
- sass-embedded
+
- stylus
+
- sugarss
+
- supports-color
+
- terser
+
- tsx
+
- yaml
+
+
vite@6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0):
+
dependencies:
+
esbuild: 0.25.1
+
postcss: 8.5.3
+
rollup: 4.34.9
+
optionalDependencies:
+
'@types/node': 18.19.76
+
fsevents: 2.3.3
+
terser: 5.39.0
+
yaml: 2.7.0
+
+
vitest@3.0.8(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0):
+
dependencies:
+
'@vitest/expect': 3.0.8
+
'@vitest/mocker': 3.0.8(vite@6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0))
+
'@vitest/pretty-format': 3.0.8
+
'@vitest/runner': 3.0.8
+
'@vitest/snapshot': 3.0.8
+
'@vitest/spy': 3.0.8
+
'@vitest/utils': 3.0.8
+
chai: 5.2.0
+
debug: 4.4.0
+
expect-type: 1.2.0
+
magic-string: 0.30.17
+
pathe: 2.0.3
+
std-env: 3.8.1
+
tinybench: 2.9.0
+
tinyexec: 0.3.2
+
tinypool: 1.0.2
+
tinyrainbow: 2.0.0
+
vite: 6.2.1(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0)
+
vite-node: 3.0.8(@types/node@18.19.76)(terser@5.39.0)(yaml@2.7.0)
+
why-is-node-running: 2.3.0
+
optionalDependencies:
+
'@types/node': 18.19.76
+
transitivePeerDependencies:
+
- jiti
+
- less
+
- lightningcss
+
- msw
+
- sass
+
- sass-embedded
+
- stylus
+
- sugarss
+
- supports-color
+
- terser
+
- tsx
+
- yaml
+
webidl-conversions@3.0.1: {}
whatwg-url@5.0.0:
···
which@2.0.2:
dependencies:
isexe: 2.0.0
+
+
why-is-node-running@2.3.0:
+
dependencies:
+
siginfo: 2.0.0
+
stackback: 0.0.2
wrap-ansi@7.0.0:
dependencies:
+8 -5
src/asyncResourceGraph.ts
···
this.callback = callback;
}
-
_onExecute(executionNode: AsyncResourceNode, node: AsyncResourceNode) {
-
this.callback(AsyncResourceFlags.INIT, executionNode);
+
_onInit(node: AsyncResourceNode) {
+
this.callback(AsyncResourceFlags.INIT, node);
if (node.fiberId === this.fiberId) {
this.observe(node);
}
···
triggerNode.triggerTargets.set(asyncId, node);
}
if (this.notifyObserver) {
-
this.notifyObserver._onExecute(this, node);
+
this.notifyObserver._onInit(node);
}
}
···
}
toString() {
-
return `[async ${this.type || `Fiber: ${this.fiberId}`}]`;
+
const name = this.type
+
? `${this.type}(${this.asyncId})`
+
: `Fiber: ${this.fiberId}`;
+
return `[async ${name}]`;
}
}
···
return watchdogResult.promise;
} finally {
-
fiber.root.active = false;
+
fiber.root.active = true;
}
}
+4
src/errors.ts
···
toString() {
return `${this.message.trim()}\n\n${this.trace}`;
}
+
+
toJSON() {
+
return this.toString();
+
}
}
+101
test/isolation.spec.ts
···
+
import { beforeAll, afterAll, it, expect } from 'vitest';
+
import { enable, disable, fiber } from '../src/index';
+
+
beforeAll(() => {
+
enable();
+
});
+
+
afterAll(() => {
+
disable();
+
});
+
+
it('prevents async resources from being shared into a fiber (sync)', async () => {
+
const shared = new Promise(resolve => {
+
setImmediate(resolve);
+
});
+
+
await expect(() => {
+
return fiber(async () => {
+
await shared;
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'PARENT_ASYNC_TRIGGER',
+
});
+
});
+
+
it('prevents async resources from being shared into a fiber (async)', async () => {
+
const shared = new Promise(resolve => {
+
setImmediate(resolve);
+
});
+
+
await expect(() => {
+
return fiber(async () => {
+
await Promise.resolve();
+
await shared;
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'PARENT_ASYNC_TRIGGER',
+
});
+
});
+
+
it('prevents async resources from being shared across fibers (sync)', async () => {
+
let shared: Promise<unknown>;
+
+
fiber(async () => {
+
shared = new Promise(resolve => {
+
setImmediate(resolve);
+
});
+
});
+
+
await expect(() => {
+
return fiber(async () => {
+
await shared;
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'FOREIGN_ASYNC_TRIGGER',
+
});
+
});
+
+
it('prevents async resources from being shared across fibers (async)', async () => {
+
let shared: Promise<unknown>;
+
+
fiber(async () => {
+
shared = new Promise(resolve => {
+
setImmediate(resolve);
+
});
+
});
+
+
await expect(() => {
+
return fiber(async () => {
+
await Promise.resolve();
+
await shared;
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'FOREIGN_ASYNC_TRIGGER',
+
});
+
});
+
+
it('prevents `new Promise` stalls from waiting indefinitely (sync)', async () => {
+
await expect(() => {
+
return fiber(async () => {
+
await new Promise(() => {
+
/*noop*/
+
});
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'FIBER_STALL',
+
});
+
});
+
+
it('prevents `new Promise` stalls from waiting indefinitely (async)', async () => {
+
await expect(() => {
+
return fiber(async () => {
+
await Promise.resolve();
+
await new Promise(() => {
+
/*noop*/
+
});
+
}).return;
+
}).rejects.toMatchObject({
+
code: 'FIBER_STALL',
+
});
+
});