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

Initial Commit

kitten.sh 7243c8d3

+8
.changeset/README.md
··· 1 + # Changesets 2 + 3 + Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works 4 + with multi-package repos, or single-package repos to help you version and publish your code. You can 5 + find the full documentation for it [in our repository](https://github.com/changesets/changesets) 6 + 7 + We have a quick list of common questions to get you started engaging with this project in 8 + [our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)
+16
.changeset/config.json
··· 1 + { 2 + "$schema": "https://unpkg.com/@changesets/config@0.3.0/schema.json", 3 + "changelog": "../scripts/changelog.js", 4 + "commit": false, 5 + "access": "public", 6 + "baseBranch": "main", 7 + "updateInternalDependencies": "minor", 8 + "snapshot": { 9 + "prereleaseTemplate": "{tag}-{commit}", 10 + "useCalculatedVersion": true 11 + }, 12 + "___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": { 13 + "onlyUpdatePeerDependentsWhenOutOfRange": true, 14 + "updateInternalDependents": "out-of-range" 15 + } 16 + }
+1
.gitattributes
··· 1 + * text=auto
+42
.github/workflows/ci.yml
··· 1 + name: CI 2 + 3 + on: 4 + pull_request: 5 + pull_request_review: 6 + types: [submitted, edited] 7 + branches: changeset-release/main 8 + push: 9 + branches: 10 + - main 11 + 12 + jobs: 13 + check: 14 + name: Checks 15 + runs-on: ubuntu-latest 16 + timeout-minutes: 10 17 + steps: 18 + - name: Checkout Repo 19 + uses: actions/checkout@v4 20 + with: 21 + fetch-depth: 0 22 + 23 + - name: Setup pnpm 24 + uses: pnpm/action-setup@v3 25 + with: 26 + version: 9 27 + run_install: false 28 + 29 + - name: Setup Node 30 + uses: actions/setup-node@v4 31 + with: 32 + node-version: ${{ matrix.node_version }} 33 + cache: 'pnpm' 34 + 35 + - name: Install Dependencies 36 + run: pnpm install --frozen-lockfile --prefer-offline 37 + 38 + - name: Type checks 39 + run: pnpm run check 40 + 41 + - name: Build 42 + run: pnpm run build
+60
.github/workflows/release.yml
··· 1 + name: Release 2 + on: 3 + push: 4 + branches: 5 + - main 6 + 7 + jobs: 8 + release: 9 + name: Release 10 + runs-on: ubuntu-20.04 11 + timeout-minutes: 20 12 + permissions: 13 + contents: write 14 + id-token: write 15 + issues: write 16 + repository-projects: write 17 + deployments: write 18 + packages: write 19 + pull-requests: write 20 + steps: 21 + - name: Checkout Repo 22 + uses: actions/checkout@v4 23 + with: 24 + fetch-depth: 0 25 + 26 + - name: Setup pnpm 27 + uses: pnpm/action-setup@v3 28 + with: 29 + version: 9 30 + run_install: false 31 + 32 + - name: Setup Node 33 + uses: actions/setup-node@v4 34 + with: 35 + node-version: 22 36 + cache: 'pnpm' 37 + 38 + - name: Install Dependencies 39 + run: pnpm install --frozen-lockfile --prefer-offline 40 + 41 + - name: PR or Publish 42 + id: changesets 43 + uses: changesets/action@v1.4.5 44 + with: 45 + version: pnpm changeset:version 46 + publish: pnpm changeset:publish 47 + env: 48 + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 49 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 50 + 51 + - name: Publish Prerelease 52 + if: steps.changesets.outputs.published != 'true' 53 + env: 54 + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 55 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 56 + run: | 57 + npm config set "//registry.npmjs.org/:_authToken" "$NPM_TOKEN" 58 + git reset --hard origin/main 59 + pnpm changeset version --no-git-tag --snapshot canary 60 + pnpm changeset publish --no-git-tag --snapshot canary --tag canary
+3
.gitignore
··· 1 + node_modules 2 + dist 3 + test
+5
CHANGELOG.md
··· 1 + # fiber-dev 2 + 3 + ## 0.0.0 4 + 5 + Initial Release
+22
LICENSE.md
··· 1 + MIT License 2 + 3 + Copyright (c) Phil Pluckthun, 4 + Copyright (c) 650 Industries, Inc. (aka Expo) 5 + 6 + Permission is hereby granted, free of charge, to any person obtaining a copy 7 + of this software and associated documentation files (the "Software"), to deal 8 + in the Software without restriction, including without limitation the rights 9 + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 + copies of the Software, and to permit persons to whom the Software is 11 + furnished to do so, subject to the following conditions: 12 + 13 + The above copyright notice and this permission notice shall be included in all 14 + copies or substantial portions of the Software. 15 + 16 + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 + SOFTWARE.
+3
README.md
··· 1 + # fiber-dev 2 + 3 + Node.js isolation primitive to run asynchronous worker-like operations without leaking async IO
+73
package.json
··· 1 + { 2 + "name": "fiber-dev", 3 + "version": "0.0.0", 4 + "description": "Node.js isolation primitive to run asynchronous worker-like operations without leaking async IO", 5 + "author": "Phil Pluckthun <phil@kitten.sh>", 6 + "source": "./src/index.ts", 7 + "main": "./dist/fiber-dev", 8 + "module": "./dist/fiber-dev.mjs", 9 + "types": "./dist/fiber-dev.d.ts", 10 + "files": [ 11 + "LICENSE.md", 12 + "README.md", 13 + "CHANGELOG.md", 14 + "dist/" 15 + ], 16 + "scripts": { 17 + "build": "rollup -c ./scripts/rollup.config.mjs", 18 + "postbuild": "tsc --noEmit ./dist/fiber-dev.d.ts", 19 + "check": "tsc --noEmit", 20 + "clean": "rimraf dist node_modules/.cache", 21 + "prepublishOnly": "run-s clean build check", 22 + "prepare": "node ./scripts/prepare.js || true", 23 + "changeset:version": "changeset version && pnpm install --lockfile-only", 24 + "changeset:publish": "changeset publish" 25 + }, 26 + "exports": { 27 + ".": { 28 + "types": "./dist/fiber-dev.d.ts", 29 + "import": "./dist/fiber-dev.mjs", 30 + "require": "./dist/fiber-dev.js", 31 + "source": "./src/index.ts" 32 + }, 33 + "./package.json": "./package.json" 34 + }, 35 + "prettier": { 36 + "singleQuote": true, 37 + "arrowParens": "avoid", 38 + "trailingComma": "es5" 39 + }, 40 + "lint-staged": { 41 + "*.{js,ts,json,md}": "prettier --write" 42 + }, 43 + "keywords": [], 44 + "license": "MIT", 45 + "repository": "https://github.com/kitten/fiber-dev", 46 + "bugs": { 47 + "url": "https://github.com/kitten/fiber-dev/issues" 48 + }, 49 + "devDependencies": { 50 + "@babel/plugin-transform-block-scoping": "^7.25.9", 51 + "@babel/plugin-transform-typescript": "^7.26.7", 52 + "@changesets/cli": "^2.27.1", 53 + "@changesets/get-github-info": "^0.6.0", 54 + "@rollup/plugin-babel": "^6.0.4", 55 + "@rollup/plugin-commonjs": "^28.0.2", 56 + "@rollup/plugin-node-resolve": "^16.0.0", 57 + "@rollup/plugin-terser": "^0.4.4", 58 + "@types/node": "^18.19.0", 59 + "dotenv": "^16.4.7", 60 + "lint-staged": "^15.4.3", 61 + "npm-run-all": "^4.1.5", 62 + "prettier": "^3.4.2", 63 + "rimraf": "^6.0.1", 64 + "rollup": "^4.32.1", 65 + "rollup-plugin-cjs-check": "^1.0.3", 66 + "rollup-plugin-dts": "^6.1.1", 67 + "typescript": "^5.7.3" 68 + }, 69 + "publishConfig": { 70 + "access": "public", 71 + "provenance": true 72 + } 73 + }
+3511
pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + devDependencies: 11 + '@babel/plugin-transform-block-scoping': 12 + specifier: ^7.25.9 13 + version: 7.25.9(@babel/core@7.26.9) 14 + '@babel/plugin-transform-typescript': 15 + specifier: ^7.26.7 16 + version: 7.26.8(@babel/core@7.26.9) 17 + '@changesets/cli': 18 + specifier: ^2.27.1 19 + version: 2.28.1 20 + '@changesets/get-github-info': 21 + specifier: ^0.6.0 22 + version: 0.6.0 23 + '@rollup/plugin-babel': 24 + specifier: ^6.0.4 25 + version: 6.0.4(@babel/core@7.26.9)(rollup@4.34.9) 26 + '@rollup/plugin-commonjs': 27 + specifier: ^28.0.2 28 + version: 28.0.3(rollup@4.34.9) 29 + '@rollup/plugin-node-resolve': 30 + specifier: ^16.0.0 31 + version: 16.0.0(rollup@4.34.9) 32 + '@rollup/plugin-terser': 33 + specifier: ^0.4.4 34 + version: 0.4.4(rollup@4.34.9) 35 + '@types/node': 36 + specifier: ^18.19.0 37 + version: 18.19.76 38 + dotenv: 39 + specifier: ^16.4.7 40 + version: 16.4.7 41 + lint-staged: 42 + specifier: ^15.4.3 43 + version: 15.4.3 44 + npm-run-all: 45 + specifier: ^4.1.5 46 + version: 4.1.5 47 + prettier: 48 + specifier: ^3.4.2 49 + version: 3.5.3 50 + rimraf: 51 + specifier: ^6.0.1 52 + version: 6.0.1 53 + rollup: 54 + specifier: ^4.32.1 55 + version: 4.34.9 56 + rollup-plugin-cjs-check: 57 + specifier: ^1.0.3 58 + version: 1.0.3(rollup@4.34.9) 59 + rollup-plugin-dts: 60 + specifier: ^6.1.1 61 + version: 6.1.1(rollup@4.34.9)(typescript@5.7.3) 62 + typescript: 63 + specifier: ^5.7.3 64 + version: 5.7.3 65 + 66 + packages: 67 + 68 + '@ampproject/remapping@2.3.0': 69 + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 70 + engines: {node: '>=6.0.0'} 71 + 72 + '@babel/code-frame@7.26.2': 73 + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 74 + engines: {node: '>=6.9.0'} 75 + 76 + '@babel/compat-data@7.26.8': 77 + resolution: {integrity: sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==} 78 + engines: {node: '>=6.9.0'} 79 + 80 + '@babel/core@7.26.9': 81 + resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} 82 + engines: {node: '>=6.9.0'} 83 + 84 + '@babel/generator@7.26.9': 85 + resolution: {integrity: sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==} 86 + engines: {node: '>=6.9.0'} 87 + 88 + '@babel/helper-annotate-as-pure@7.25.9': 89 + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} 90 + engines: {node: '>=6.9.0'} 91 + 92 + '@babel/helper-compilation-targets@7.26.5': 93 + resolution: {integrity: sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==} 94 + engines: {node: '>=6.9.0'} 95 + 96 + '@babel/helper-create-class-features-plugin@7.26.9': 97 + resolution: {integrity: sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==} 98 + engines: {node: '>=6.9.0'} 99 + peerDependencies: 100 + '@babel/core': ^7.0.0 101 + 102 + '@babel/helper-member-expression-to-functions@7.25.9': 103 + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} 104 + engines: {node: '>=6.9.0'} 105 + 106 + '@babel/helper-module-imports@7.25.9': 107 + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 108 + engines: {node: '>=6.9.0'} 109 + 110 + '@babel/helper-module-transforms@7.26.0': 111 + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 112 + engines: {node: '>=6.9.0'} 113 + peerDependencies: 114 + '@babel/core': ^7.0.0 115 + 116 + '@babel/helper-optimise-call-expression@7.25.9': 117 + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} 118 + engines: {node: '>=6.9.0'} 119 + 120 + '@babel/helper-plugin-utils@7.26.5': 121 + resolution: {integrity: sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==} 122 + engines: {node: '>=6.9.0'} 123 + 124 + '@babel/helper-replace-supers@7.26.5': 125 + resolution: {integrity: sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==} 126 + engines: {node: '>=6.9.0'} 127 + peerDependencies: 128 + '@babel/core': ^7.0.0 129 + 130 + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': 131 + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} 132 + engines: {node: '>=6.9.0'} 133 + 134 + '@babel/helper-string-parser@7.25.9': 135 + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 136 + engines: {node: '>=6.9.0'} 137 + 138 + '@babel/helper-validator-identifier@7.25.9': 139 + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 140 + engines: {node: '>=6.9.0'} 141 + 142 + '@babel/helper-validator-option@7.25.9': 143 + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 144 + engines: {node: '>=6.9.0'} 145 + 146 + '@babel/helpers@7.26.9': 147 + resolution: {integrity: sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA==} 148 + engines: {node: '>=6.9.0'} 149 + 150 + '@babel/parser@7.26.9': 151 + resolution: {integrity: sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==} 152 + engines: {node: '>=6.0.0'} 153 + hasBin: true 154 + 155 + '@babel/plugin-syntax-typescript@7.25.9': 156 + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 157 + engines: {node: '>=6.9.0'} 158 + peerDependencies: 159 + '@babel/core': ^7.0.0-0 160 + 161 + '@babel/plugin-transform-block-scoping@7.25.9': 162 + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} 163 + engines: {node: '>=6.9.0'} 164 + peerDependencies: 165 + '@babel/core': ^7.0.0-0 166 + 167 + '@babel/plugin-transform-typescript@7.26.8': 168 + resolution: {integrity: sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==} 169 + engines: {node: '>=6.9.0'} 170 + peerDependencies: 171 + '@babel/core': ^7.0.0-0 172 + 173 + '@babel/runtime@7.26.9': 174 + resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} 175 + engines: {node: '>=6.9.0'} 176 + 177 + '@babel/template@7.26.9': 178 + resolution: {integrity: sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==} 179 + engines: {node: '>=6.9.0'} 180 + 181 + '@babel/traverse@7.26.9': 182 + resolution: {integrity: sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==} 183 + engines: {node: '>=6.9.0'} 184 + 185 + '@babel/types@7.26.9': 186 + resolution: {integrity: sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==} 187 + engines: {node: '>=6.9.0'} 188 + 189 + '@changesets/apply-release-plan@7.0.10': 190 + resolution: {integrity: sha512-wNyeIJ3yDsVspYvHnEz1xQDq18D9ifed3lI+wxRQRK4pArUcuHgCTrHv0QRnnwjhVCQACxZ+CBih3wgOct6UXw==} 191 + 192 + '@changesets/assemble-release-plan@6.0.6': 193 + resolution: {integrity: sha512-Frkj8hWJ1FRZiY3kzVCKzS0N5mMwWKwmv9vpam7vt8rZjLL1JMthdh6pSDVSPumHPshTTkKZ0VtNbE0cJHZZUg==} 194 + 195 + '@changesets/changelog-git@0.2.1': 196 + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} 197 + 198 + '@changesets/cli@2.28.1': 199 + resolution: {integrity: sha512-PiIyGRmSc6JddQJe/W1hRPjiN4VrMvb2VfQ6Uydy2punBioQrsxppyG5WafinKcW1mT0jOe/wU4k9Zy5ff21AA==} 200 + hasBin: true 201 + 202 + '@changesets/config@3.1.1': 203 + resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} 204 + 205 + '@changesets/errors@0.2.0': 206 + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} 207 + 208 + '@changesets/get-dependents-graph@2.1.3': 209 + resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} 210 + 211 + '@changesets/get-github-info@0.6.0': 212 + resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} 213 + 214 + '@changesets/get-release-plan@4.0.8': 215 + resolution: {integrity: sha512-MM4mq2+DQU1ZT7nqxnpveDMTkMBLnwNX44cX7NSxlXmr7f8hO6/S2MXNiXG54uf/0nYnefv0cfy4Czf/ZL/EKQ==} 216 + 217 + '@changesets/get-version-range-type@0.4.0': 218 + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} 219 + 220 + '@changesets/git@3.0.2': 221 + resolution: {integrity: sha512-r1/Kju9Y8OxRRdvna+nxpQIsMsRQn9dhhAZt94FLDeu0Hij2hnOozW8iqnHBgvu+KdnJppCveQwK4odwfw/aWQ==} 222 + 223 + '@changesets/logger@0.1.1': 224 + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} 225 + 226 + '@changesets/parse@0.4.1': 227 + resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} 228 + 229 + '@changesets/pre@2.0.2': 230 + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} 231 + 232 + '@changesets/read@0.6.3': 233 + resolution: {integrity: sha512-9H4p/OuJ3jXEUTjaVGdQEhBdqoT2cO5Ts95JTFsQyawmKzpL8FnIeJSyhTDPW1MBRDnwZlHFEM9SpPwJDY5wIg==} 234 + 235 + '@changesets/should-skip-package@0.1.2': 236 + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} 237 + 238 + '@changesets/types@4.1.0': 239 + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} 240 + 241 + '@changesets/types@6.1.0': 242 + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} 243 + 244 + '@changesets/write@0.4.0': 245 + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} 246 + 247 + '@isaacs/cliui@8.0.2': 248 + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 249 + engines: {node: '>=12'} 250 + 251 + '@jridgewell/gen-mapping@0.3.8': 252 + resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} 253 + engines: {node: '>=6.0.0'} 254 + 255 + '@jridgewell/resolve-uri@3.1.2': 256 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 257 + engines: {node: '>=6.0.0'} 258 + 259 + '@jridgewell/set-array@1.2.1': 260 + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 261 + engines: {node: '>=6.0.0'} 262 + 263 + '@jridgewell/source-map@0.3.6': 264 + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} 265 + 266 + '@jridgewell/sourcemap-codec@1.5.0': 267 + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 268 + 269 + '@jridgewell/trace-mapping@0.3.25': 270 + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 271 + 272 + '@manypkg/find-root@1.1.0': 273 + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} 274 + 275 + '@manypkg/get-packages@1.1.3': 276 + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} 277 + 278 + '@nodelib/fs.scandir@2.1.5': 279 + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 280 + engines: {node: '>= 8'} 281 + 282 + '@nodelib/fs.stat@2.0.5': 283 + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 284 + engines: {node: '>= 8'} 285 + 286 + '@nodelib/fs.walk@1.2.8': 287 + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 288 + engines: {node: '>= 8'} 289 + 290 + '@rollup/plugin-babel@6.0.4': 291 + resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} 292 + engines: {node: '>=14.0.0'} 293 + peerDependencies: 294 + '@babel/core': ^7.0.0 295 + '@types/babel__core': ^7.1.9 296 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 297 + peerDependenciesMeta: 298 + '@types/babel__core': 299 + optional: true 300 + rollup: 301 + optional: true 302 + 303 + '@rollup/plugin-commonjs@28.0.3': 304 + resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==} 305 + engines: {node: '>=16.0.0 || 14 >= 14.17'} 306 + peerDependencies: 307 + rollup: ^2.68.0||^3.0.0||^4.0.0 308 + peerDependenciesMeta: 309 + rollup: 310 + optional: true 311 + 312 + '@rollup/plugin-node-resolve@16.0.0': 313 + resolution: {integrity: sha512-0FPvAeVUT/zdWoO0jnb/V5BlBsUSNfkIOtFHzMO4H9MOklrmQFY6FduVHKucNb/aTFxvnGhj4MNj/T1oNdDfNg==} 314 + engines: {node: '>=14.0.0'} 315 + peerDependencies: 316 + rollup: ^2.78.0||^3.0.0||^4.0.0 317 + peerDependenciesMeta: 318 + rollup: 319 + optional: true 320 + 321 + '@rollup/plugin-terser@0.4.4': 322 + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} 323 + engines: {node: '>=14.0.0'} 324 + peerDependencies: 325 + rollup: ^2.0.0||^3.0.0||^4.0.0 326 + peerDependenciesMeta: 327 + rollup: 328 + optional: true 329 + 330 + '@rollup/pluginutils@5.1.4': 331 + resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} 332 + engines: {node: '>=14.0.0'} 333 + peerDependencies: 334 + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 335 + peerDependenciesMeta: 336 + rollup: 337 + optional: true 338 + 339 + '@rollup/rollup-android-arm-eabi@4.34.9': 340 + resolution: {integrity: sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==} 341 + cpu: [arm] 342 + os: [android] 343 + 344 + '@rollup/rollup-android-arm64@4.34.9': 345 + resolution: {integrity: sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==} 346 + cpu: [arm64] 347 + os: [android] 348 + 349 + '@rollup/rollup-darwin-arm64@4.34.9': 350 + resolution: {integrity: sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==} 351 + cpu: [arm64] 352 + os: [darwin] 353 + 354 + '@rollup/rollup-darwin-x64@4.34.9': 355 + resolution: {integrity: sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==} 356 + cpu: [x64] 357 + os: [darwin] 358 + 359 + '@rollup/rollup-freebsd-arm64@4.34.9': 360 + resolution: {integrity: sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==} 361 + cpu: [arm64] 362 + os: [freebsd] 363 + 364 + '@rollup/rollup-freebsd-x64@4.34.9': 365 + resolution: {integrity: sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==} 366 + cpu: [x64] 367 + os: [freebsd] 368 + 369 + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': 370 + resolution: {integrity: sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==} 371 + cpu: [arm] 372 + os: [linux] 373 + 374 + '@rollup/rollup-linux-arm-musleabihf@4.34.9': 375 + resolution: {integrity: sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==} 376 + cpu: [arm] 377 + os: [linux] 378 + 379 + '@rollup/rollup-linux-arm64-gnu@4.34.9': 380 + resolution: {integrity: sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==} 381 + cpu: [arm64] 382 + os: [linux] 383 + 384 + '@rollup/rollup-linux-arm64-musl@4.34.9': 385 + resolution: {integrity: sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==} 386 + cpu: [arm64] 387 + os: [linux] 388 + 389 + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': 390 + resolution: {integrity: sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==} 391 + cpu: [loong64] 392 + os: [linux] 393 + 394 + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': 395 + resolution: {integrity: sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==} 396 + cpu: [ppc64] 397 + os: [linux] 398 + 399 + '@rollup/rollup-linux-riscv64-gnu@4.34.9': 400 + resolution: {integrity: sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==} 401 + cpu: [riscv64] 402 + os: [linux] 403 + 404 + '@rollup/rollup-linux-s390x-gnu@4.34.9': 405 + resolution: {integrity: sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==} 406 + cpu: [s390x] 407 + os: [linux] 408 + 409 + '@rollup/rollup-linux-x64-gnu@4.34.9': 410 + resolution: {integrity: sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==} 411 + cpu: [x64] 412 + os: [linux] 413 + 414 + '@rollup/rollup-linux-x64-musl@4.34.9': 415 + resolution: {integrity: sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==} 416 + cpu: [x64] 417 + os: [linux] 418 + 419 + '@rollup/rollup-win32-arm64-msvc@4.34.9': 420 + resolution: {integrity: sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==} 421 + cpu: [arm64] 422 + os: [win32] 423 + 424 + '@rollup/rollup-win32-ia32-msvc@4.34.9': 425 + resolution: {integrity: sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==} 426 + cpu: [ia32] 427 + os: [win32] 428 + 429 + '@rollup/rollup-win32-x64-msvc@4.34.9': 430 + resolution: {integrity: sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==} 431 + cpu: [x64] 432 + os: [win32] 433 + 434 + '@types/estree@1.0.6': 435 + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 436 + 437 + '@types/node@12.20.55': 438 + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} 439 + 440 + '@types/node@18.19.76': 441 + resolution: {integrity: sha512-yvR7Q9LdPz2vGpmpJX5LolrgRdWvB67MJKDPSgIIzpFbaf9a1j/f5DnLp5VDyHGMR0QZHlTr1afsD87QCXFHKw==} 442 + 443 + '@types/resolve@1.20.2': 444 + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} 445 + 446 + acorn@8.14.1: 447 + resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} 448 + engines: {node: '>=0.4.0'} 449 + hasBin: true 450 + 451 + ansi-colors@4.1.3: 452 + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} 453 + engines: {node: '>=6'} 454 + 455 + ansi-escapes@7.0.0: 456 + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} 457 + engines: {node: '>=18'} 458 + 459 + ansi-regex@5.0.1: 460 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 461 + engines: {node: '>=8'} 462 + 463 + ansi-regex@6.1.0: 464 + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 465 + engines: {node: '>=12'} 466 + 467 + ansi-styles@3.2.1: 468 + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 469 + engines: {node: '>=4'} 470 + 471 + ansi-styles@4.3.0: 472 + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 473 + engines: {node: '>=8'} 474 + 475 + ansi-styles@6.2.1: 476 + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 477 + engines: {node: '>=12'} 478 + 479 + argparse@1.0.10: 480 + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 481 + 482 + array-buffer-byte-length@1.0.2: 483 + resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} 484 + engines: {node: '>= 0.4'} 485 + 486 + array-union@2.1.0: 487 + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 488 + engines: {node: '>=8'} 489 + 490 + arraybuffer.prototype.slice@1.0.4: 491 + resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} 492 + engines: {node: '>= 0.4'} 493 + 494 + async-function@1.0.0: 495 + resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} 496 + engines: {node: '>= 0.4'} 497 + 498 + available-typed-arrays@1.0.7: 499 + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} 500 + engines: {node: '>= 0.4'} 501 + 502 + balanced-match@1.0.2: 503 + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 504 + 505 + better-path-resolve@1.0.0: 506 + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} 507 + engines: {node: '>=4'} 508 + 509 + brace-expansion@1.1.11: 510 + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 511 + 512 + brace-expansion@2.0.1: 513 + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 514 + 515 + braces@3.0.3: 516 + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 517 + engines: {node: '>=8'} 518 + 519 + browserslist@4.24.4: 520 + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} 521 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 522 + hasBin: true 523 + 524 + buffer-from@1.1.2: 525 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 526 + 527 + call-bind-apply-helpers@1.0.2: 528 + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} 529 + engines: {node: '>= 0.4'} 530 + 531 + call-bind@1.0.8: 532 + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} 533 + engines: {node: '>= 0.4'} 534 + 535 + call-bound@1.0.4: 536 + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} 537 + engines: {node: '>= 0.4'} 538 + 539 + caniuse-lite@1.0.30001703: 540 + resolution: {integrity: sha512-kRlAGTRWgPsOj7oARC9m1okJEXdL/8fekFVcxA8Hl7GH4r/sN4OJn/i6Flde373T50KS7Y37oFbMwlE8+F42kQ==} 541 + 542 + chalk@2.4.2: 543 + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 544 + engines: {node: '>=4'} 545 + 546 + chalk@5.4.1: 547 + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} 548 + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} 549 + 550 + chardet@0.7.0: 551 + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} 552 + 553 + ci-info@3.9.0: 554 + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} 555 + engines: {node: '>=8'} 556 + 557 + cjs-module-lexer@1.4.3: 558 + resolution: {integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==} 559 + 560 + cli-cursor@5.0.0: 561 + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} 562 + engines: {node: '>=18'} 563 + 564 + cli-truncate@4.0.0: 565 + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} 566 + engines: {node: '>=18'} 567 + 568 + color-convert@1.9.3: 569 + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 570 + 571 + color-convert@2.0.1: 572 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 573 + engines: {node: '>=7.0.0'} 574 + 575 + color-name@1.1.3: 576 + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 577 + 578 + color-name@1.1.4: 579 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 580 + 581 + colorette@2.0.20: 582 + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 583 + 584 + commander@13.1.0: 585 + resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} 586 + engines: {node: '>=18'} 587 + 588 + commander@2.20.3: 589 + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 590 + 591 + commondir@1.0.1: 592 + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} 593 + 594 + concat-map@0.0.1: 595 + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 596 + 597 + convert-source-map@2.0.0: 598 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 599 + 600 + cross-spawn@6.0.6: 601 + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} 602 + engines: {node: '>=4.8'} 603 + 604 + cross-spawn@7.0.6: 605 + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 606 + engines: {node: '>= 8'} 607 + 608 + data-view-buffer@1.0.2: 609 + resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} 610 + engines: {node: '>= 0.4'} 611 + 612 + data-view-byte-length@1.0.2: 613 + resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} 614 + engines: {node: '>= 0.4'} 615 + 616 + data-view-byte-offset@1.0.1: 617 + resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} 618 + engines: {node: '>= 0.4'} 619 + 620 + dataloader@1.4.0: 621 + resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} 622 + 623 + debug@4.4.0: 624 + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} 625 + engines: {node: '>=6.0'} 626 + peerDependencies: 627 + supports-color: '*' 628 + peerDependenciesMeta: 629 + supports-color: 630 + optional: true 631 + 632 + deepmerge@4.3.1: 633 + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 634 + engines: {node: '>=0.10.0'} 635 + 636 + define-data-property@1.1.4: 637 + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} 638 + engines: {node: '>= 0.4'} 639 + 640 + define-properties@1.2.1: 641 + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 642 + engines: {node: '>= 0.4'} 643 + 644 + detect-indent@6.1.0: 645 + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 646 + engines: {node: '>=8'} 647 + 648 + dir-glob@3.0.1: 649 + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 650 + engines: {node: '>=8'} 651 + 652 + dotenv@16.4.7: 653 + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} 654 + engines: {node: '>=12'} 655 + 656 + dunder-proto@1.0.1: 657 + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} 658 + engines: {node: '>= 0.4'} 659 + 660 + eastasianwidth@0.2.0: 661 + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 662 + 663 + electron-to-chromium@1.5.114: 664 + resolution: {integrity: sha512-DFptFef3iktoKlFQK/afbo274/XNWD00Am0xa7M8FZUepHlHT8PEuiNBoRfFHbH1okqN58AlhbJ4QTkcnXorjA==} 665 + 666 + emoji-regex@10.4.0: 667 + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} 668 + 669 + emoji-regex@8.0.0: 670 + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 671 + 672 + emoji-regex@9.2.2: 673 + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 674 + 675 + enquirer@2.4.1: 676 + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} 677 + engines: {node: '>=8.6'} 678 + 679 + environment@1.1.0: 680 + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} 681 + engines: {node: '>=18'} 682 + 683 + error-ex@1.3.2: 684 + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 685 + 686 + es-abstract@1.23.9: 687 + resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} 688 + engines: {node: '>= 0.4'} 689 + 690 + es-define-property@1.0.1: 691 + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} 692 + engines: {node: '>= 0.4'} 693 + 694 + es-errors@1.3.0: 695 + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} 696 + engines: {node: '>= 0.4'} 697 + 698 + es-object-atoms@1.1.1: 699 + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} 700 + engines: {node: '>= 0.4'} 701 + 702 + es-set-tostringtag@2.1.0: 703 + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} 704 + engines: {node: '>= 0.4'} 705 + 706 + es-to-primitive@1.3.0: 707 + resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} 708 + engines: {node: '>= 0.4'} 709 + 710 + escalade@3.2.0: 711 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 712 + engines: {node: '>=6'} 713 + 714 + escape-string-regexp@1.0.5: 715 + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 716 + engines: {node: '>=0.8.0'} 717 + 718 + esprima@4.0.1: 719 + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 720 + engines: {node: '>=4'} 721 + hasBin: true 722 + 723 + estree-walker@2.0.2: 724 + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 725 + 726 + eventemitter3@5.0.1: 727 + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} 728 + 729 + execa@8.0.1: 730 + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 731 + engines: {node: '>=16.17'} 732 + 733 + extendable-error@0.1.7: 734 + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} 735 + 736 + external-editor@3.1.0: 737 + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} 738 + engines: {node: '>=4'} 739 + 740 + fast-glob@3.3.3: 741 + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} 742 + engines: {node: '>=8.6.0'} 743 + 744 + fastq@1.19.1: 745 + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} 746 + 747 + fdir@6.4.3: 748 + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} 749 + peerDependencies: 750 + picomatch: ^3 || ^4 751 + peerDependenciesMeta: 752 + picomatch: 753 + optional: true 754 + 755 + fill-range@7.1.1: 756 + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 757 + engines: {node: '>=8'} 758 + 759 + find-up@4.1.0: 760 + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 761 + engines: {node: '>=8'} 762 + 763 + for-each@0.3.5: 764 + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} 765 + engines: {node: '>= 0.4'} 766 + 767 + foreground-child@3.3.1: 768 + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} 769 + engines: {node: '>=14'} 770 + 771 + fs-extra@7.0.1: 772 + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} 773 + engines: {node: '>=6 <7 || >=8'} 774 + 775 + fs-extra@8.1.0: 776 + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} 777 + engines: {node: '>=6 <7 || >=8'} 778 + 779 + fsevents@2.3.3: 780 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 781 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 782 + os: [darwin] 783 + 784 + function-bind@1.1.2: 785 + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 786 + 787 + function.prototype.name@1.1.8: 788 + resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==} 789 + engines: {node: '>= 0.4'} 790 + 791 + functions-have-names@1.2.3: 792 + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 793 + 794 + gensync@1.0.0-beta.2: 795 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 796 + engines: {node: '>=6.9.0'} 797 + 798 + get-east-asian-width@1.3.0: 799 + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} 800 + engines: {node: '>=18'} 801 + 802 + get-intrinsic@1.3.0: 803 + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} 804 + engines: {node: '>= 0.4'} 805 + 806 + get-proto@1.0.1: 807 + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} 808 + engines: {node: '>= 0.4'} 809 + 810 + get-stream@8.0.1: 811 + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 812 + engines: {node: '>=16'} 813 + 814 + get-symbol-description@1.1.0: 815 + resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} 816 + engines: {node: '>= 0.4'} 817 + 818 + glob-parent@5.1.2: 819 + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 820 + engines: {node: '>= 6'} 821 + 822 + glob@11.0.1: 823 + resolution: {integrity: sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==} 824 + engines: {node: 20 || >=22} 825 + hasBin: true 826 + 827 + globals@11.12.0: 828 + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 829 + engines: {node: '>=4'} 830 + 831 + globalthis@1.0.4: 832 + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} 833 + engines: {node: '>= 0.4'} 834 + 835 + globby@11.1.0: 836 + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 837 + engines: {node: '>=10'} 838 + 839 + gopd@1.2.0: 840 + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} 841 + engines: {node: '>= 0.4'} 842 + 843 + graceful-fs@4.2.11: 844 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 845 + 846 + has-bigints@1.1.0: 847 + resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} 848 + engines: {node: '>= 0.4'} 849 + 850 + has-flag@3.0.0: 851 + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 852 + engines: {node: '>=4'} 853 + 854 + has-property-descriptors@1.0.2: 855 + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} 856 + 857 + has-proto@1.2.0: 858 + resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} 859 + engines: {node: '>= 0.4'} 860 + 861 + has-symbols@1.1.0: 862 + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} 863 + engines: {node: '>= 0.4'} 864 + 865 + has-tostringtag@1.0.2: 866 + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} 867 + engines: {node: '>= 0.4'} 868 + 869 + hasown@2.0.2: 870 + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 871 + engines: {node: '>= 0.4'} 872 + 873 + hosted-git-info@2.8.9: 874 + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} 875 + 876 + human-id@4.1.1: 877 + resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==} 878 + hasBin: true 879 + 880 + human-signals@5.0.0: 881 + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 882 + engines: {node: '>=16.17.0'} 883 + 884 + iconv-lite@0.4.24: 885 + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} 886 + engines: {node: '>=0.10.0'} 887 + 888 + ignore@5.3.2: 889 + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 890 + engines: {node: '>= 4'} 891 + 892 + internal-slot@1.1.0: 893 + resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} 894 + engines: {node: '>= 0.4'} 895 + 896 + is-array-buffer@3.0.5: 897 + resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} 898 + engines: {node: '>= 0.4'} 899 + 900 + is-arrayish@0.2.1: 901 + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 902 + 903 + is-async-function@2.1.1: 904 + resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} 905 + engines: {node: '>= 0.4'} 906 + 907 + is-bigint@1.1.0: 908 + resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} 909 + engines: {node: '>= 0.4'} 910 + 911 + is-boolean-object@1.2.2: 912 + resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} 913 + engines: {node: '>= 0.4'} 914 + 915 + is-callable@1.2.7: 916 + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 917 + engines: {node: '>= 0.4'} 918 + 919 + is-core-module@2.16.1: 920 + resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} 921 + engines: {node: '>= 0.4'} 922 + 923 + is-data-view@1.0.2: 924 + resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} 925 + engines: {node: '>= 0.4'} 926 + 927 + is-date-object@1.1.0: 928 + resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} 929 + engines: {node: '>= 0.4'} 930 + 931 + is-extglob@2.1.1: 932 + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 933 + engines: {node: '>=0.10.0'} 934 + 935 + is-finalizationregistry@1.1.1: 936 + resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} 937 + engines: {node: '>= 0.4'} 938 + 939 + is-fullwidth-code-point@3.0.0: 940 + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 941 + engines: {node: '>=8'} 942 + 943 + is-fullwidth-code-point@4.0.0: 944 + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} 945 + engines: {node: '>=12'} 946 + 947 + is-fullwidth-code-point@5.0.0: 948 + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} 949 + engines: {node: '>=18'} 950 + 951 + is-generator-function@1.1.0: 952 + resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} 953 + engines: {node: '>= 0.4'} 954 + 955 + is-glob@4.0.3: 956 + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 957 + engines: {node: '>=0.10.0'} 958 + 959 + is-map@2.0.3: 960 + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} 961 + engines: {node: '>= 0.4'} 962 + 963 + is-module@1.0.0: 964 + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} 965 + 966 + is-number-object@1.1.1: 967 + resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} 968 + engines: {node: '>= 0.4'} 969 + 970 + is-number@7.0.0: 971 + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 972 + engines: {node: '>=0.12.0'} 973 + 974 + is-reference@1.2.1: 975 + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} 976 + 977 + is-regex@1.2.1: 978 + resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} 979 + engines: {node: '>= 0.4'} 980 + 981 + is-set@2.0.3: 982 + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} 983 + engines: {node: '>= 0.4'} 984 + 985 + is-shared-array-buffer@1.0.4: 986 + resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} 987 + engines: {node: '>= 0.4'} 988 + 989 + is-stream@3.0.0: 990 + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 991 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 992 + 993 + is-string@1.1.1: 994 + resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} 995 + engines: {node: '>= 0.4'} 996 + 997 + is-subdir@1.2.0: 998 + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} 999 + engines: {node: '>=4'} 1000 + 1001 + is-symbol@1.1.1: 1002 + resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} 1003 + engines: {node: '>= 0.4'} 1004 + 1005 + is-typed-array@1.1.15: 1006 + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} 1007 + engines: {node: '>= 0.4'} 1008 + 1009 + is-weakmap@2.0.2: 1010 + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} 1011 + engines: {node: '>= 0.4'} 1012 + 1013 + is-weakref@1.1.1: 1014 + resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} 1015 + engines: {node: '>= 0.4'} 1016 + 1017 + is-weakset@2.0.4: 1018 + resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} 1019 + engines: {node: '>= 0.4'} 1020 + 1021 + is-windows@1.0.2: 1022 + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} 1023 + engines: {node: '>=0.10.0'} 1024 + 1025 + isarray@2.0.5: 1026 + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 1027 + 1028 + isexe@2.0.0: 1029 + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1030 + 1031 + jackspeak@4.1.0: 1032 + resolution: {integrity: sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==} 1033 + engines: {node: 20 || >=22} 1034 + 1035 + js-tokens@4.0.0: 1036 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1037 + 1038 + js-yaml@3.14.1: 1039 + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1040 + hasBin: true 1041 + 1042 + jsesc@3.1.0: 1043 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1044 + engines: {node: '>=6'} 1045 + hasBin: true 1046 + 1047 + json-parse-better-errors@1.0.2: 1048 + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} 1049 + 1050 + json5@2.2.3: 1051 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1052 + engines: {node: '>=6'} 1053 + hasBin: true 1054 + 1055 + jsonfile@4.0.0: 1056 + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} 1057 + 1058 + lilconfig@3.1.3: 1059 + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 1060 + engines: {node: '>=14'} 1061 + 1062 + lint-staged@15.4.3: 1063 + resolution: {integrity: sha512-FoH1vOeouNh1pw+90S+cnuoFwRfUD9ijY2GKy5h7HS3OR7JVir2N2xrsa0+Twc1B7cW72L+88geG5cW4wIhn7g==} 1064 + engines: {node: '>=18.12.0'} 1065 + hasBin: true 1066 + 1067 + listr2@8.2.5: 1068 + resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} 1069 + engines: {node: '>=18.0.0'} 1070 + 1071 + load-json-file@4.0.0: 1072 + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} 1073 + engines: {node: '>=4'} 1074 + 1075 + locate-path@5.0.0: 1076 + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1077 + engines: {node: '>=8'} 1078 + 1079 + lodash.startcase@4.4.0: 1080 + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} 1081 + 1082 + log-update@6.1.0: 1083 + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} 1084 + engines: {node: '>=18'} 1085 + 1086 + lru-cache@11.0.2: 1087 + resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} 1088 + engines: {node: 20 || >=22} 1089 + 1090 + lru-cache@5.1.1: 1091 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1092 + 1093 + magic-string@0.30.17: 1094 + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} 1095 + 1096 + math-intrinsics@1.1.0: 1097 + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} 1098 + engines: {node: '>= 0.4'} 1099 + 1100 + memorystream@0.3.1: 1101 + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} 1102 + engines: {node: '>= 0.10.0'} 1103 + 1104 + merge-stream@2.0.0: 1105 + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1106 + 1107 + merge2@1.4.1: 1108 + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1109 + engines: {node: '>= 8'} 1110 + 1111 + micromatch@4.0.8: 1112 + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 1113 + engines: {node: '>=8.6'} 1114 + 1115 + mimic-fn@4.0.0: 1116 + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1117 + engines: {node: '>=12'} 1118 + 1119 + mimic-function@5.0.1: 1120 + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} 1121 + engines: {node: '>=18'} 1122 + 1123 + minimatch@10.0.1: 1124 + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 1125 + engines: {node: 20 || >=22} 1126 + 1127 + minimatch@3.1.2: 1128 + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1129 + 1130 + minipass@7.1.2: 1131 + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1132 + engines: {node: '>=16 || 14 >=14.17'} 1133 + 1134 + mri@1.2.0: 1135 + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1136 + engines: {node: '>=4'} 1137 + 1138 + ms@2.1.3: 1139 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1140 + 1141 + nice-try@1.0.5: 1142 + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} 1143 + 1144 + node-fetch@2.7.0: 1145 + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 1146 + engines: {node: 4.x || >=6.0.0} 1147 + peerDependencies: 1148 + encoding: ^0.1.0 1149 + peerDependenciesMeta: 1150 + encoding: 1151 + optional: true 1152 + 1153 + node-releases@2.0.19: 1154 + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} 1155 + 1156 + normalize-package-data@2.5.0: 1157 + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} 1158 + 1159 + npm-run-all@4.1.5: 1160 + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} 1161 + engines: {node: '>= 4'} 1162 + hasBin: true 1163 + 1164 + npm-run-path@5.3.0: 1165 + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1166 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1167 + 1168 + object-inspect@1.13.4: 1169 + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} 1170 + engines: {node: '>= 0.4'} 1171 + 1172 + object-keys@1.1.1: 1173 + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 1174 + engines: {node: '>= 0.4'} 1175 + 1176 + object.assign@4.1.7: 1177 + resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} 1178 + engines: {node: '>= 0.4'} 1179 + 1180 + onetime@6.0.0: 1181 + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1182 + engines: {node: '>=12'} 1183 + 1184 + onetime@7.0.0: 1185 + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} 1186 + engines: {node: '>=18'} 1187 + 1188 + os-tmpdir@1.0.2: 1189 + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} 1190 + engines: {node: '>=0.10.0'} 1191 + 1192 + outdent@0.5.0: 1193 + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} 1194 + 1195 + own-keys@1.0.1: 1196 + resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} 1197 + engines: {node: '>= 0.4'} 1198 + 1199 + p-filter@2.1.0: 1200 + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} 1201 + engines: {node: '>=8'} 1202 + 1203 + p-limit@2.3.0: 1204 + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1205 + engines: {node: '>=6'} 1206 + 1207 + p-locate@4.1.0: 1208 + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1209 + engines: {node: '>=8'} 1210 + 1211 + p-map@2.1.0: 1212 + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} 1213 + engines: {node: '>=6'} 1214 + 1215 + p-try@2.2.0: 1216 + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1217 + engines: {node: '>=6'} 1218 + 1219 + package-json-from-dist@1.0.1: 1220 + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 1221 + 1222 + package-manager-detector@0.2.11: 1223 + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} 1224 + 1225 + parse-json@4.0.0: 1226 + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} 1227 + engines: {node: '>=4'} 1228 + 1229 + path-exists@4.0.0: 1230 + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1231 + engines: {node: '>=8'} 1232 + 1233 + path-key@2.0.1: 1234 + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} 1235 + engines: {node: '>=4'} 1236 + 1237 + path-key@3.1.1: 1238 + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1239 + engines: {node: '>=8'} 1240 + 1241 + path-key@4.0.0: 1242 + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1243 + engines: {node: '>=12'} 1244 + 1245 + path-parse@1.0.7: 1246 + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1247 + 1248 + path-scurry@2.0.0: 1249 + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} 1250 + engines: {node: 20 || >=22} 1251 + 1252 + path-type@3.0.0: 1253 + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} 1254 + engines: {node: '>=4'} 1255 + 1256 + path-type@4.0.0: 1257 + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 1258 + engines: {node: '>=8'} 1259 + 1260 + picocolors@1.1.1: 1261 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1262 + 1263 + picomatch@2.3.1: 1264 + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1265 + engines: {node: '>=8.6'} 1266 + 1267 + picomatch@4.0.2: 1268 + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 1269 + engines: {node: '>=12'} 1270 + 1271 + pidtree@0.3.1: 1272 + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} 1273 + engines: {node: '>=0.10'} 1274 + hasBin: true 1275 + 1276 + pidtree@0.6.0: 1277 + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} 1278 + engines: {node: '>=0.10'} 1279 + hasBin: true 1280 + 1281 + pify@3.0.0: 1282 + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} 1283 + engines: {node: '>=4'} 1284 + 1285 + pify@4.0.1: 1286 + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} 1287 + engines: {node: '>=6'} 1288 + 1289 + possible-typed-array-names@1.1.0: 1290 + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} 1291 + engines: {node: '>= 0.4'} 1292 + 1293 + prettier@2.8.8: 1294 + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1295 + engines: {node: '>=10.13.0'} 1296 + hasBin: true 1297 + 1298 + prettier@3.5.3: 1299 + resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} 1300 + engines: {node: '>=14'} 1301 + hasBin: true 1302 + 1303 + quansync@0.2.8: 1304 + resolution: {integrity: sha512-4+saucphJMazjt7iOM27mbFCk+D9dd/zmgMDCzRZ8MEoBfYp7lAvoN38et/phRQF6wOPMy/OROBGgoWeSKyluA==} 1305 + 1306 + queue-microtask@1.2.3: 1307 + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1308 + 1309 + randombytes@2.1.0: 1310 + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 1311 + 1312 + read-pkg@3.0.0: 1313 + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} 1314 + engines: {node: '>=4'} 1315 + 1316 + read-yaml-file@1.1.0: 1317 + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} 1318 + engines: {node: '>=6'} 1319 + 1320 + reflect.getprototypeof@1.0.10: 1321 + resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} 1322 + engines: {node: '>= 0.4'} 1323 + 1324 + regenerator-runtime@0.14.1: 1325 + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} 1326 + 1327 + regexp.prototype.flags@1.5.4: 1328 + resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} 1329 + engines: {node: '>= 0.4'} 1330 + 1331 + resolve-from@5.0.0: 1332 + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1333 + engines: {node: '>=8'} 1334 + 1335 + resolve@1.22.10: 1336 + resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} 1337 + engines: {node: '>= 0.4'} 1338 + hasBin: true 1339 + 1340 + restore-cursor@5.1.0: 1341 + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} 1342 + engines: {node: '>=18'} 1343 + 1344 + reusify@1.1.0: 1345 + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} 1346 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1347 + 1348 + rfdc@1.4.1: 1349 + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} 1350 + 1351 + rimraf@6.0.1: 1352 + resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} 1353 + engines: {node: 20 || >=22} 1354 + hasBin: true 1355 + 1356 + rollup-plugin-cjs-check@1.0.3: 1357 + resolution: {integrity: sha512-l8Gn8fm0YsAUuCVPmJ9CjwX5D98xyjc7iBlKfik5RGgXrV35nBwKCb+xbsK2oMrWMIRdLWsfyVUBM153e2zvYg==} 1358 + engines: {node: '>=14.0.0'} 1359 + peerDependencies: 1360 + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 1361 + 1362 + rollup-plugin-dts@6.1.1: 1363 + resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} 1364 + engines: {node: '>=16'} 1365 + peerDependencies: 1366 + rollup: ^3.29.4 || ^4 1367 + typescript: ^4.5 || ^5.0 1368 + 1369 + rollup@4.34.9: 1370 + resolution: {integrity: sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==} 1371 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1372 + hasBin: true 1373 + 1374 + run-parallel@1.2.0: 1375 + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1376 + 1377 + safe-array-concat@1.1.3: 1378 + resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} 1379 + engines: {node: '>=0.4'} 1380 + 1381 + safe-buffer@5.2.1: 1382 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1383 + 1384 + safe-push-apply@1.0.0: 1385 + resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} 1386 + engines: {node: '>= 0.4'} 1387 + 1388 + safe-regex-test@1.1.0: 1389 + resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} 1390 + engines: {node: '>= 0.4'} 1391 + 1392 + safer-buffer@2.1.2: 1393 + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} 1394 + 1395 + semver@5.7.2: 1396 + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} 1397 + hasBin: true 1398 + 1399 + semver@6.3.1: 1400 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1401 + hasBin: true 1402 + 1403 + semver@7.7.1: 1404 + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} 1405 + engines: {node: '>=10'} 1406 + hasBin: true 1407 + 1408 + serialize-javascript@6.0.2: 1409 + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 1410 + 1411 + set-function-length@1.2.2: 1412 + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} 1413 + engines: {node: '>= 0.4'} 1414 + 1415 + set-function-name@2.0.2: 1416 + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} 1417 + engines: {node: '>= 0.4'} 1418 + 1419 + set-proto@1.0.0: 1420 + resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} 1421 + engines: {node: '>= 0.4'} 1422 + 1423 + shebang-command@1.2.0: 1424 + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} 1425 + engines: {node: '>=0.10.0'} 1426 + 1427 + shebang-command@2.0.0: 1428 + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1429 + engines: {node: '>=8'} 1430 + 1431 + shebang-regex@1.0.0: 1432 + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} 1433 + engines: {node: '>=0.10.0'} 1434 + 1435 + shebang-regex@3.0.0: 1436 + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1437 + engines: {node: '>=8'} 1438 + 1439 + shell-quote@1.8.2: 1440 + resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} 1441 + engines: {node: '>= 0.4'} 1442 + 1443 + side-channel-list@1.0.0: 1444 + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} 1445 + engines: {node: '>= 0.4'} 1446 + 1447 + side-channel-map@1.0.1: 1448 + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} 1449 + engines: {node: '>= 0.4'} 1450 + 1451 + side-channel-weakmap@1.0.2: 1452 + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} 1453 + engines: {node: '>= 0.4'} 1454 + 1455 + side-channel@1.1.0: 1456 + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} 1457 + engines: {node: '>= 0.4'} 1458 + 1459 + signal-exit@4.1.0: 1460 + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1461 + engines: {node: '>=14'} 1462 + 1463 + slash@3.0.0: 1464 + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 1465 + engines: {node: '>=8'} 1466 + 1467 + slice-ansi@5.0.0: 1468 + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} 1469 + engines: {node: '>=12'} 1470 + 1471 + slice-ansi@7.1.0: 1472 + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} 1473 + engines: {node: '>=18'} 1474 + 1475 + smob@1.5.0: 1476 + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} 1477 + 1478 + source-map-support@0.5.21: 1479 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1480 + 1481 + source-map@0.6.1: 1482 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1483 + engines: {node: '>=0.10.0'} 1484 + 1485 + spawndamnit@3.0.1: 1486 + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} 1487 + 1488 + spdx-correct@3.2.0: 1489 + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} 1490 + 1491 + spdx-exceptions@2.5.0: 1492 + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} 1493 + 1494 + spdx-expression-parse@3.0.1: 1495 + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} 1496 + 1497 + spdx-license-ids@3.0.21: 1498 + resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==} 1499 + 1500 + sprintf-js@1.0.3: 1501 + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 1502 + 1503 + string-argv@0.3.2: 1504 + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} 1505 + engines: {node: '>=0.6.19'} 1506 + 1507 + string-width@4.2.3: 1508 + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1509 + engines: {node: '>=8'} 1510 + 1511 + string-width@5.1.2: 1512 + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1513 + engines: {node: '>=12'} 1514 + 1515 + string-width@7.2.0: 1516 + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} 1517 + engines: {node: '>=18'} 1518 + 1519 + string.prototype.padend@3.1.6: 1520 + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} 1521 + engines: {node: '>= 0.4'} 1522 + 1523 + string.prototype.trim@1.2.10: 1524 + resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==} 1525 + engines: {node: '>= 0.4'} 1526 + 1527 + string.prototype.trimend@1.0.9: 1528 + resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==} 1529 + engines: {node: '>= 0.4'} 1530 + 1531 + string.prototype.trimstart@1.0.8: 1532 + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} 1533 + engines: {node: '>= 0.4'} 1534 + 1535 + strip-ansi@6.0.1: 1536 + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1537 + engines: {node: '>=8'} 1538 + 1539 + strip-ansi@7.1.0: 1540 + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1541 + engines: {node: '>=12'} 1542 + 1543 + strip-bom@3.0.0: 1544 + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1545 + engines: {node: '>=4'} 1546 + 1547 + strip-final-newline@3.0.0: 1548 + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1549 + engines: {node: '>=12'} 1550 + 1551 + supports-color@5.5.0: 1552 + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 1553 + engines: {node: '>=4'} 1554 + 1555 + supports-preserve-symlinks-flag@1.0.0: 1556 + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1557 + engines: {node: '>= 0.4'} 1558 + 1559 + term-size@2.2.1: 1560 + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} 1561 + engines: {node: '>=8'} 1562 + 1563 + terser@5.39.0: 1564 + resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} 1565 + engines: {node: '>=10'} 1566 + hasBin: true 1567 + 1568 + tmp@0.0.33: 1569 + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} 1570 + engines: {node: '>=0.6.0'} 1571 + 1572 + to-regex-range@5.0.1: 1573 + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1574 + engines: {node: '>=8.0'} 1575 + 1576 + tr46@0.0.3: 1577 + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 1578 + 1579 + typed-array-buffer@1.0.3: 1580 + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} 1581 + engines: {node: '>= 0.4'} 1582 + 1583 + typed-array-byte-length@1.0.3: 1584 + resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} 1585 + engines: {node: '>= 0.4'} 1586 + 1587 + typed-array-byte-offset@1.0.4: 1588 + resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} 1589 + engines: {node: '>= 0.4'} 1590 + 1591 + typed-array-length@1.0.7: 1592 + resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} 1593 + engines: {node: '>= 0.4'} 1594 + 1595 + typescript@5.7.3: 1596 + resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} 1597 + engines: {node: '>=14.17'} 1598 + hasBin: true 1599 + 1600 + unbox-primitive@1.1.0: 1601 + resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} 1602 + engines: {node: '>= 0.4'} 1603 + 1604 + undici-types@5.26.5: 1605 + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1606 + 1607 + universalify@0.1.2: 1608 + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} 1609 + engines: {node: '>= 4.0.0'} 1610 + 1611 + update-browserslist-db@1.1.3: 1612 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1613 + hasBin: true 1614 + peerDependencies: 1615 + browserslist: '>= 4.21.0' 1616 + 1617 + validate-npm-package-license@3.0.4: 1618 + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} 1619 + 1620 + webidl-conversions@3.0.1: 1621 + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 1622 + 1623 + whatwg-url@5.0.0: 1624 + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 1625 + 1626 + which-boxed-primitive@1.1.1: 1627 + resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} 1628 + engines: {node: '>= 0.4'} 1629 + 1630 + which-builtin-type@1.2.1: 1631 + resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} 1632 + engines: {node: '>= 0.4'} 1633 + 1634 + which-collection@1.0.2: 1635 + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} 1636 + engines: {node: '>= 0.4'} 1637 + 1638 + which-typed-array@1.1.19: 1639 + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} 1640 + engines: {node: '>= 0.4'} 1641 + 1642 + which@1.3.1: 1643 + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} 1644 + hasBin: true 1645 + 1646 + which@2.0.2: 1647 + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1648 + engines: {node: '>= 8'} 1649 + hasBin: true 1650 + 1651 + wrap-ansi@7.0.0: 1652 + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1653 + engines: {node: '>=10'} 1654 + 1655 + wrap-ansi@8.1.0: 1656 + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1657 + engines: {node: '>=12'} 1658 + 1659 + wrap-ansi@9.0.0: 1660 + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} 1661 + engines: {node: '>=18'} 1662 + 1663 + yallist@3.1.1: 1664 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1665 + 1666 + yaml@2.7.0: 1667 + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} 1668 + engines: {node: '>= 14'} 1669 + hasBin: true 1670 + 1671 + snapshots: 1672 + 1673 + '@ampproject/remapping@2.3.0': 1674 + dependencies: 1675 + '@jridgewell/gen-mapping': 0.3.8 1676 + '@jridgewell/trace-mapping': 0.3.25 1677 + 1678 + '@babel/code-frame@7.26.2': 1679 + dependencies: 1680 + '@babel/helper-validator-identifier': 7.25.9 1681 + js-tokens: 4.0.0 1682 + picocolors: 1.1.1 1683 + 1684 + '@babel/compat-data@7.26.8': {} 1685 + 1686 + '@babel/core@7.26.9': 1687 + dependencies: 1688 + '@ampproject/remapping': 2.3.0 1689 + '@babel/code-frame': 7.26.2 1690 + '@babel/generator': 7.26.9 1691 + '@babel/helper-compilation-targets': 7.26.5 1692 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.9) 1693 + '@babel/helpers': 7.26.9 1694 + '@babel/parser': 7.26.9 1695 + '@babel/template': 7.26.9 1696 + '@babel/traverse': 7.26.9 1697 + '@babel/types': 7.26.9 1698 + convert-source-map: 2.0.0 1699 + debug: 4.4.0 1700 + gensync: 1.0.0-beta.2 1701 + json5: 2.2.3 1702 + semver: 6.3.1 1703 + transitivePeerDependencies: 1704 + - supports-color 1705 + 1706 + '@babel/generator@7.26.9': 1707 + dependencies: 1708 + '@babel/parser': 7.26.9 1709 + '@babel/types': 7.26.9 1710 + '@jridgewell/gen-mapping': 0.3.8 1711 + '@jridgewell/trace-mapping': 0.3.25 1712 + jsesc: 3.1.0 1713 + 1714 + '@babel/helper-annotate-as-pure@7.25.9': 1715 + dependencies: 1716 + '@babel/types': 7.26.9 1717 + 1718 + '@babel/helper-compilation-targets@7.26.5': 1719 + dependencies: 1720 + '@babel/compat-data': 7.26.8 1721 + '@babel/helper-validator-option': 7.25.9 1722 + browserslist: 4.24.4 1723 + lru-cache: 5.1.1 1724 + semver: 6.3.1 1725 + 1726 + '@babel/helper-create-class-features-plugin@7.26.9(@babel/core@7.26.9)': 1727 + dependencies: 1728 + '@babel/core': 7.26.9 1729 + '@babel/helper-annotate-as-pure': 7.25.9 1730 + '@babel/helper-member-expression-to-functions': 7.25.9 1731 + '@babel/helper-optimise-call-expression': 7.25.9 1732 + '@babel/helper-replace-supers': 7.26.5(@babel/core@7.26.9) 1733 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 1734 + '@babel/traverse': 7.26.9 1735 + semver: 6.3.1 1736 + transitivePeerDependencies: 1737 + - supports-color 1738 + 1739 + '@babel/helper-member-expression-to-functions@7.25.9': 1740 + dependencies: 1741 + '@babel/traverse': 7.26.9 1742 + '@babel/types': 7.26.9 1743 + transitivePeerDependencies: 1744 + - supports-color 1745 + 1746 + '@babel/helper-module-imports@7.25.9': 1747 + dependencies: 1748 + '@babel/traverse': 7.26.9 1749 + '@babel/types': 7.26.9 1750 + transitivePeerDependencies: 1751 + - supports-color 1752 + 1753 + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.9)': 1754 + dependencies: 1755 + '@babel/core': 7.26.9 1756 + '@babel/helper-module-imports': 7.25.9 1757 + '@babel/helper-validator-identifier': 7.25.9 1758 + '@babel/traverse': 7.26.9 1759 + transitivePeerDependencies: 1760 + - supports-color 1761 + 1762 + '@babel/helper-optimise-call-expression@7.25.9': 1763 + dependencies: 1764 + '@babel/types': 7.26.9 1765 + 1766 + '@babel/helper-plugin-utils@7.26.5': {} 1767 + 1768 + '@babel/helper-replace-supers@7.26.5(@babel/core@7.26.9)': 1769 + dependencies: 1770 + '@babel/core': 7.26.9 1771 + '@babel/helper-member-expression-to-functions': 7.25.9 1772 + '@babel/helper-optimise-call-expression': 7.25.9 1773 + '@babel/traverse': 7.26.9 1774 + transitivePeerDependencies: 1775 + - supports-color 1776 + 1777 + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': 1778 + dependencies: 1779 + '@babel/traverse': 7.26.9 1780 + '@babel/types': 7.26.9 1781 + transitivePeerDependencies: 1782 + - supports-color 1783 + 1784 + '@babel/helper-string-parser@7.25.9': {} 1785 + 1786 + '@babel/helper-validator-identifier@7.25.9': {} 1787 + 1788 + '@babel/helper-validator-option@7.25.9': {} 1789 + 1790 + '@babel/helpers@7.26.9': 1791 + dependencies: 1792 + '@babel/template': 7.26.9 1793 + '@babel/types': 7.26.9 1794 + 1795 + '@babel/parser@7.26.9': 1796 + dependencies: 1797 + '@babel/types': 7.26.9 1798 + 1799 + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.9)': 1800 + dependencies: 1801 + '@babel/core': 7.26.9 1802 + '@babel/helper-plugin-utils': 7.26.5 1803 + 1804 + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.9)': 1805 + dependencies: 1806 + '@babel/core': 7.26.9 1807 + '@babel/helper-plugin-utils': 7.26.5 1808 + 1809 + '@babel/plugin-transform-typescript@7.26.8(@babel/core@7.26.9)': 1810 + dependencies: 1811 + '@babel/core': 7.26.9 1812 + '@babel/helper-annotate-as-pure': 7.25.9 1813 + '@babel/helper-create-class-features-plugin': 7.26.9(@babel/core@7.26.9) 1814 + '@babel/helper-plugin-utils': 7.26.5 1815 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 1816 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.9) 1817 + transitivePeerDependencies: 1818 + - supports-color 1819 + 1820 + '@babel/runtime@7.26.9': 1821 + dependencies: 1822 + regenerator-runtime: 0.14.1 1823 + 1824 + '@babel/template@7.26.9': 1825 + dependencies: 1826 + '@babel/code-frame': 7.26.2 1827 + '@babel/parser': 7.26.9 1828 + '@babel/types': 7.26.9 1829 + 1830 + '@babel/traverse@7.26.9': 1831 + dependencies: 1832 + '@babel/code-frame': 7.26.2 1833 + '@babel/generator': 7.26.9 1834 + '@babel/parser': 7.26.9 1835 + '@babel/template': 7.26.9 1836 + '@babel/types': 7.26.9 1837 + debug: 4.4.0 1838 + globals: 11.12.0 1839 + transitivePeerDependencies: 1840 + - supports-color 1841 + 1842 + '@babel/types@7.26.9': 1843 + dependencies: 1844 + '@babel/helper-string-parser': 7.25.9 1845 + '@babel/helper-validator-identifier': 7.25.9 1846 + 1847 + '@changesets/apply-release-plan@7.0.10': 1848 + dependencies: 1849 + '@changesets/config': 3.1.1 1850 + '@changesets/get-version-range-type': 0.4.0 1851 + '@changesets/git': 3.0.2 1852 + '@changesets/should-skip-package': 0.1.2 1853 + '@changesets/types': 6.1.0 1854 + '@manypkg/get-packages': 1.1.3 1855 + detect-indent: 6.1.0 1856 + fs-extra: 7.0.1 1857 + lodash.startcase: 4.4.0 1858 + outdent: 0.5.0 1859 + prettier: 2.8.8 1860 + resolve-from: 5.0.0 1861 + semver: 7.7.1 1862 + 1863 + '@changesets/assemble-release-plan@6.0.6': 1864 + dependencies: 1865 + '@changesets/errors': 0.2.0 1866 + '@changesets/get-dependents-graph': 2.1.3 1867 + '@changesets/should-skip-package': 0.1.2 1868 + '@changesets/types': 6.1.0 1869 + '@manypkg/get-packages': 1.1.3 1870 + semver: 7.7.1 1871 + 1872 + '@changesets/changelog-git@0.2.1': 1873 + dependencies: 1874 + '@changesets/types': 6.1.0 1875 + 1876 + '@changesets/cli@2.28.1': 1877 + dependencies: 1878 + '@changesets/apply-release-plan': 7.0.10 1879 + '@changesets/assemble-release-plan': 6.0.6 1880 + '@changesets/changelog-git': 0.2.1 1881 + '@changesets/config': 3.1.1 1882 + '@changesets/errors': 0.2.0 1883 + '@changesets/get-dependents-graph': 2.1.3 1884 + '@changesets/get-release-plan': 4.0.8 1885 + '@changesets/git': 3.0.2 1886 + '@changesets/logger': 0.1.1 1887 + '@changesets/pre': 2.0.2 1888 + '@changesets/read': 0.6.3 1889 + '@changesets/should-skip-package': 0.1.2 1890 + '@changesets/types': 6.1.0 1891 + '@changesets/write': 0.4.0 1892 + '@manypkg/get-packages': 1.1.3 1893 + ansi-colors: 4.1.3 1894 + ci-info: 3.9.0 1895 + enquirer: 2.4.1 1896 + external-editor: 3.1.0 1897 + fs-extra: 7.0.1 1898 + mri: 1.2.0 1899 + p-limit: 2.3.0 1900 + package-manager-detector: 0.2.11 1901 + picocolors: 1.1.1 1902 + resolve-from: 5.0.0 1903 + semver: 7.7.1 1904 + spawndamnit: 3.0.1 1905 + term-size: 2.2.1 1906 + 1907 + '@changesets/config@3.1.1': 1908 + dependencies: 1909 + '@changesets/errors': 0.2.0 1910 + '@changesets/get-dependents-graph': 2.1.3 1911 + '@changesets/logger': 0.1.1 1912 + '@changesets/types': 6.1.0 1913 + '@manypkg/get-packages': 1.1.3 1914 + fs-extra: 7.0.1 1915 + micromatch: 4.0.8 1916 + 1917 + '@changesets/errors@0.2.0': 1918 + dependencies: 1919 + extendable-error: 0.1.7 1920 + 1921 + '@changesets/get-dependents-graph@2.1.3': 1922 + dependencies: 1923 + '@changesets/types': 6.1.0 1924 + '@manypkg/get-packages': 1.1.3 1925 + picocolors: 1.1.1 1926 + semver: 7.7.1 1927 + 1928 + '@changesets/get-github-info@0.6.0': 1929 + dependencies: 1930 + dataloader: 1.4.0 1931 + node-fetch: 2.7.0 1932 + transitivePeerDependencies: 1933 + - encoding 1934 + 1935 + '@changesets/get-release-plan@4.0.8': 1936 + dependencies: 1937 + '@changesets/assemble-release-plan': 6.0.6 1938 + '@changesets/config': 3.1.1 1939 + '@changesets/pre': 2.0.2 1940 + '@changesets/read': 0.6.3 1941 + '@changesets/types': 6.1.0 1942 + '@manypkg/get-packages': 1.1.3 1943 + 1944 + '@changesets/get-version-range-type@0.4.0': {} 1945 + 1946 + '@changesets/git@3.0.2': 1947 + dependencies: 1948 + '@changesets/errors': 0.2.0 1949 + '@manypkg/get-packages': 1.1.3 1950 + is-subdir: 1.2.0 1951 + micromatch: 4.0.8 1952 + spawndamnit: 3.0.1 1953 + 1954 + '@changesets/logger@0.1.1': 1955 + dependencies: 1956 + picocolors: 1.1.1 1957 + 1958 + '@changesets/parse@0.4.1': 1959 + dependencies: 1960 + '@changesets/types': 6.1.0 1961 + js-yaml: 3.14.1 1962 + 1963 + '@changesets/pre@2.0.2': 1964 + dependencies: 1965 + '@changesets/errors': 0.2.0 1966 + '@changesets/types': 6.1.0 1967 + '@manypkg/get-packages': 1.1.3 1968 + fs-extra: 7.0.1 1969 + 1970 + '@changesets/read@0.6.3': 1971 + dependencies: 1972 + '@changesets/git': 3.0.2 1973 + '@changesets/logger': 0.1.1 1974 + '@changesets/parse': 0.4.1 1975 + '@changesets/types': 6.1.0 1976 + fs-extra: 7.0.1 1977 + p-filter: 2.1.0 1978 + picocolors: 1.1.1 1979 + 1980 + '@changesets/should-skip-package@0.1.2': 1981 + dependencies: 1982 + '@changesets/types': 6.1.0 1983 + '@manypkg/get-packages': 1.1.3 1984 + 1985 + '@changesets/types@4.1.0': {} 1986 + 1987 + '@changesets/types@6.1.0': {} 1988 + 1989 + '@changesets/write@0.4.0': 1990 + dependencies: 1991 + '@changesets/types': 6.1.0 1992 + fs-extra: 7.0.1 1993 + human-id: 4.1.1 1994 + prettier: 2.8.8 1995 + 1996 + '@isaacs/cliui@8.0.2': 1997 + dependencies: 1998 + string-width: 5.1.2 1999 + string-width-cjs: string-width@4.2.3 2000 + strip-ansi: 7.1.0 2001 + strip-ansi-cjs: strip-ansi@6.0.1 2002 + wrap-ansi: 8.1.0 2003 + wrap-ansi-cjs: wrap-ansi@7.0.0 2004 + 2005 + '@jridgewell/gen-mapping@0.3.8': 2006 + dependencies: 2007 + '@jridgewell/set-array': 1.2.1 2008 + '@jridgewell/sourcemap-codec': 1.5.0 2009 + '@jridgewell/trace-mapping': 0.3.25 2010 + 2011 + '@jridgewell/resolve-uri@3.1.2': {} 2012 + 2013 + '@jridgewell/set-array@1.2.1': {} 2014 + 2015 + '@jridgewell/source-map@0.3.6': 2016 + dependencies: 2017 + '@jridgewell/gen-mapping': 0.3.8 2018 + '@jridgewell/trace-mapping': 0.3.25 2019 + 2020 + '@jridgewell/sourcemap-codec@1.5.0': {} 2021 + 2022 + '@jridgewell/trace-mapping@0.3.25': 2023 + dependencies: 2024 + '@jridgewell/resolve-uri': 3.1.2 2025 + '@jridgewell/sourcemap-codec': 1.5.0 2026 + 2027 + '@manypkg/find-root@1.1.0': 2028 + dependencies: 2029 + '@babel/runtime': 7.26.9 2030 + '@types/node': 12.20.55 2031 + find-up: 4.1.0 2032 + fs-extra: 8.1.0 2033 + 2034 + '@manypkg/get-packages@1.1.3': 2035 + dependencies: 2036 + '@babel/runtime': 7.26.9 2037 + '@changesets/types': 4.1.0 2038 + '@manypkg/find-root': 1.1.0 2039 + fs-extra: 8.1.0 2040 + globby: 11.1.0 2041 + read-yaml-file: 1.1.0 2042 + 2043 + '@nodelib/fs.scandir@2.1.5': 2044 + dependencies: 2045 + '@nodelib/fs.stat': 2.0.5 2046 + run-parallel: 1.2.0 2047 + 2048 + '@nodelib/fs.stat@2.0.5': {} 2049 + 2050 + '@nodelib/fs.walk@1.2.8': 2051 + dependencies: 2052 + '@nodelib/fs.scandir': 2.1.5 2053 + fastq: 1.19.1 2054 + 2055 + '@rollup/plugin-babel@6.0.4(@babel/core@7.26.9)(rollup@4.34.9)': 2056 + dependencies: 2057 + '@babel/core': 7.26.9 2058 + '@babel/helper-module-imports': 7.25.9 2059 + '@rollup/pluginutils': 5.1.4(rollup@4.34.9) 2060 + optionalDependencies: 2061 + rollup: 4.34.9 2062 + transitivePeerDependencies: 2063 + - supports-color 2064 + 2065 + '@rollup/plugin-commonjs@28.0.3(rollup@4.34.9)': 2066 + dependencies: 2067 + '@rollup/pluginutils': 5.1.4(rollup@4.34.9) 2068 + commondir: 1.0.1 2069 + estree-walker: 2.0.2 2070 + fdir: 6.4.3(picomatch@4.0.2) 2071 + is-reference: 1.2.1 2072 + magic-string: 0.30.17 2073 + picomatch: 4.0.2 2074 + optionalDependencies: 2075 + rollup: 4.34.9 2076 + 2077 + '@rollup/plugin-node-resolve@16.0.0(rollup@4.34.9)': 2078 + dependencies: 2079 + '@rollup/pluginutils': 5.1.4(rollup@4.34.9) 2080 + '@types/resolve': 1.20.2 2081 + deepmerge: 4.3.1 2082 + is-module: 1.0.0 2083 + resolve: 1.22.10 2084 + optionalDependencies: 2085 + rollup: 4.34.9 2086 + 2087 + '@rollup/plugin-terser@0.4.4(rollup@4.34.9)': 2088 + dependencies: 2089 + serialize-javascript: 6.0.2 2090 + smob: 1.5.0 2091 + terser: 5.39.0 2092 + optionalDependencies: 2093 + rollup: 4.34.9 2094 + 2095 + '@rollup/pluginutils@5.1.4(rollup@4.34.9)': 2096 + dependencies: 2097 + '@types/estree': 1.0.6 2098 + estree-walker: 2.0.2 2099 + picomatch: 4.0.2 2100 + optionalDependencies: 2101 + rollup: 4.34.9 2102 + 2103 + '@rollup/rollup-android-arm-eabi@4.34.9': 2104 + optional: true 2105 + 2106 + '@rollup/rollup-android-arm64@4.34.9': 2107 + optional: true 2108 + 2109 + '@rollup/rollup-darwin-arm64@4.34.9': 2110 + optional: true 2111 + 2112 + '@rollup/rollup-darwin-x64@4.34.9': 2113 + optional: true 2114 + 2115 + '@rollup/rollup-freebsd-arm64@4.34.9': 2116 + optional: true 2117 + 2118 + '@rollup/rollup-freebsd-x64@4.34.9': 2119 + optional: true 2120 + 2121 + '@rollup/rollup-linux-arm-gnueabihf@4.34.9': 2122 + optional: true 2123 + 2124 + '@rollup/rollup-linux-arm-musleabihf@4.34.9': 2125 + optional: true 2126 + 2127 + '@rollup/rollup-linux-arm64-gnu@4.34.9': 2128 + optional: true 2129 + 2130 + '@rollup/rollup-linux-arm64-musl@4.34.9': 2131 + optional: true 2132 + 2133 + '@rollup/rollup-linux-loongarch64-gnu@4.34.9': 2134 + optional: true 2135 + 2136 + '@rollup/rollup-linux-powerpc64le-gnu@4.34.9': 2137 + optional: true 2138 + 2139 + '@rollup/rollup-linux-riscv64-gnu@4.34.9': 2140 + optional: true 2141 + 2142 + '@rollup/rollup-linux-s390x-gnu@4.34.9': 2143 + optional: true 2144 + 2145 + '@rollup/rollup-linux-x64-gnu@4.34.9': 2146 + optional: true 2147 + 2148 + '@rollup/rollup-linux-x64-musl@4.34.9': 2149 + optional: true 2150 + 2151 + '@rollup/rollup-win32-arm64-msvc@4.34.9': 2152 + optional: true 2153 + 2154 + '@rollup/rollup-win32-ia32-msvc@4.34.9': 2155 + optional: true 2156 + 2157 + '@rollup/rollup-win32-x64-msvc@4.34.9': 2158 + optional: true 2159 + 2160 + '@types/estree@1.0.6': {} 2161 + 2162 + '@types/node@12.20.55': {} 2163 + 2164 + '@types/node@18.19.76': 2165 + dependencies: 2166 + undici-types: 5.26.5 2167 + 2168 + '@types/resolve@1.20.2': {} 2169 + 2170 + acorn@8.14.1: {} 2171 + 2172 + ansi-colors@4.1.3: {} 2173 + 2174 + ansi-escapes@7.0.0: 2175 + dependencies: 2176 + environment: 1.1.0 2177 + 2178 + ansi-regex@5.0.1: {} 2179 + 2180 + ansi-regex@6.1.0: {} 2181 + 2182 + ansi-styles@3.2.1: 2183 + dependencies: 2184 + color-convert: 1.9.3 2185 + 2186 + ansi-styles@4.3.0: 2187 + dependencies: 2188 + color-convert: 2.0.1 2189 + 2190 + ansi-styles@6.2.1: {} 2191 + 2192 + argparse@1.0.10: 2193 + dependencies: 2194 + sprintf-js: 1.0.3 2195 + 2196 + array-buffer-byte-length@1.0.2: 2197 + dependencies: 2198 + call-bound: 1.0.4 2199 + is-array-buffer: 3.0.5 2200 + 2201 + array-union@2.1.0: {} 2202 + 2203 + arraybuffer.prototype.slice@1.0.4: 2204 + dependencies: 2205 + array-buffer-byte-length: 1.0.2 2206 + call-bind: 1.0.8 2207 + define-properties: 1.2.1 2208 + es-abstract: 1.23.9 2209 + es-errors: 1.3.0 2210 + get-intrinsic: 1.3.0 2211 + is-array-buffer: 3.0.5 2212 + 2213 + async-function@1.0.0: {} 2214 + 2215 + available-typed-arrays@1.0.7: 2216 + dependencies: 2217 + possible-typed-array-names: 1.1.0 2218 + 2219 + balanced-match@1.0.2: {} 2220 + 2221 + better-path-resolve@1.0.0: 2222 + dependencies: 2223 + is-windows: 1.0.2 2224 + 2225 + brace-expansion@1.1.11: 2226 + dependencies: 2227 + balanced-match: 1.0.2 2228 + concat-map: 0.0.1 2229 + 2230 + brace-expansion@2.0.1: 2231 + dependencies: 2232 + balanced-match: 1.0.2 2233 + 2234 + braces@3.0.3: 2235 + dependencies: 2236 + fill-range: 7.1.1 2237 + 2238 + browserslist@4.24.4: 2239 + dependencies: 2240 + caniuse-lite: 1.0.30001703 2241 + electron-to-chromium: 1.5.114 2242 + node-releases: 2.0.19 2243 + update-browserslist-db: 1.1.3(browserslist@4.24.4) 2244 + 2245 + buffer-from@1.1.2: {} 2246 + 2247 + call-bind-apply-helpers@1.0.2: 2248 + dependencies: 2249 + es-errors: 1.3.0 2250 + function-bind: 1.1.2 2251 + 2252 + call-bind@1.0.8: 2253 + dependencies: 2254 + call-bind-apply-helpers: 1.0.2 2255 + es-define-property: 1.0.1 2256 + get-intrinsic: 1.3.0 2257 + set-function-length: 1.2.2 2258 + 2259 + call-bound@1.0.4: 2260 + dependencies: 2261 + call-bind-apply-helpers: 1.0.2 2262 + get-intrinsic: 1.3.0 2263 + 2264 + caniuse-lite@1.0.30001703: {} 2265 + 2266 + chalk@2.4.2: 2267 + dependencies: 2268 + ansi-styles: 3.2.1 2269 + escape-string-regexp: 1.0.5 2270 + supports-color: 5.5.0 2271 + 2272 + chalk@5.4.1: {} 2273 + 2274 + chardet@0.7.0: {} 2275 + 2276 + ci-info@3.9.0: {} 2277 + 2278 + cjs-module-lexer@1.4.3: {} 2279 + 2280 + cli-cursor@5.0.0: 2281 + dependencies: 2282 + restore-cursor: 5.1.0 2283 + 2284 + cli-truncate@4.0.0: 2285 + dependencies: 2286 + slice-ansi: 5.0.0 2287 + string-width: 7.2.0 2288 + 2289 + color-convert@1.9.3: 2290 + dependencies: 2291 + color-name: 1.1.3 2292 + 2293 + color-convert@2.0.1: 2294 + dependencies: 2295 + color-name: 1.1.4 2296 + 2297 + color-name@1.1.3: {} 2298 + 2299 + color-name@1.1.4: {} 2300 + 2301 + colorette@2.0.20: {} 2302 + 2303 + commander@13.1.0: {} 2304 + 2305 + commander@2.20.3: {} 2306 + 2307 + commondir@1.0.1: {} 2308 + 2309 + concat-map@0.0.1: {} 2310 + 2311 + convert-source-map@2.0.0: {} 2312 + 2313 + cross-spawn@6.0.6: 2314 + dependencies: 2315 + nice-try: 1.0.5 2316 + path-key: 2.0.1 2317 + semver: 5.7.2 2318 + shebang-command: 1.2.0 2319 + which: 1.3.1 2320 + 2321 + cross-spawn@7.0.6: 2322 + dependencies: 2323 + path-key: 3.1.1 2324 + shebang-command: 2.0.0 2325 + which: 2.0.2 2326 + 2327 + data-view-buffer@1.0.2: 2328 + dependencies: 2329 + call-bound: 1.0.4 2330 + es-errors: 1.3.0 2331 + is-data-view: 1.0.2 2332 + 2333 + data-view-byte-length@1.0.2: 2334 + dependencies: 2335 + call-bound: 1.0.4 2336 + es-errors: 1.3.0 2337 + is-data-view: 1.0.2 2338 + 2339 + data-view-byte-offset@1.0.1: 2340 + dependencies: 2341 + call-bound: 1.0.4 2342 + es-errors: 1.3.0 2343 + is-data-view: 1.0.2 2344 + 2345 + dataloader@1.4.0: {} 2346 + 2347 + debug@4.4.0: 2348 + dependencies: 2349 + ms: 2.1.3 2350 + 2351 + deepmerge@4.3.1: {} 2352 + 2353 + define-data-property@1.1.4: 2354 + dependencies: 2355 + es-define-property: 1.0.1 2356 + es-errors: 1.3.0 2357 + gopd: 1.2.0 2358 + 2359 + define-properties@1.2.1: 2360 + dependencies: 2361 + define-data-property: 1.1.4 2362 + has-property-descriptors: 1.0.2 2363 + object-keys: 1.1.1 2364 + 2365 + detect-indent@6.1.0: {} 2366 + 2367 + dir-glob@3.0.1: 2368 + dependencies: 2369 + path-type: 4.0.0 2370 + 2371 + dotenv@16.4.7: {} 2372 + 2373 + dunder-proto@1.0.1: 2374 + dependencies: 2375 + call-bind-apply-helpers: 1.0.2 2376 + es-errors: 1.3.0 2377 + gopd: 1.2.0 2378 + 2379 + eastasianwidth@0.2.0: {} 2380 + 2381 + electron-to-chromium@1.5.114: {} 2382 + 2383 + emoji-regex@10.4.0: {} 2384 + 2385 + emoji-regex@8.0.0: {} 2386 + 2387 + emoji-regex@9.2.2: {} 2388 + 2389 + enquirer@2.4.1: 2390 + dependencies: 2391 + ansi-colors: 4.1.3 2392 + strip-ansi: 6.0.1 2393 + 2394 + environment@1.1.0: {} 2395 + 2396 + error-ex@1.3.2: 2397 + dependencies: 2398 + is-arrayish: 0.2.1 2399 + 2400 + es-abstract@1.23.9: 2401 + dependencies: 2402 + array-buffer-byte-length: 1.0.2 2403 + arraybuffer.prototype.slice: 1.0.4 2404 + available-typed-arrays: 1.0.7 2405 + call-bind: 1.0.8 2406 + call-bound: 1.0.4 2407 + data-view-buffer: 1.0.2 2408 + data-view-byte-length: 1.0.2 2409 + data-view-byte-offset: 1.0.1 2410 + es-define-property: 1.0.1 2411 + es-errors: 1.3.0 2412 + es-object-atoms: 1.1.1 2413 + es-set-tostringtag: 2.1.0 2414 + es-to-primitive: 1.3.0 2415 + function.prototype.name: 1.1.8 2416 + get-intrinsic: 1.3.0 2417 + get-proto: 1.0.1 2418 + get-symbol-description: 1.1.0 2419 + globalthis: 1.0.4 2420 + gopd: 1.2.0 2421 + has-property-descriptors: 1.0.2 2422 + has-proto: 1.2.0 2423 + has-symbols: 1.1.0 2424 + hasown: 2.0.2 2425 + internal-slot: 1.1.0 2426 + is-array-buffer: 3.0.5 2427 + is-callable: 1.2.7 2428 + is-data-view: 1.0.2 2429 + is-regex: 1.2.1 2430 + is-shared-array-buffer: 1.0.4 2431 + is-string: 1.1.1 2432 + is-typed-array: 1.1.15 2433 + is-weakref: 1.1.1 2434 + math-intrinsics: 1.1.0 2435 + object-inspect: 1.13.4 2436 + object-keys: 1.1.1 2437 + object.assign: 4.1.7 2438 + own-keys: 1.0.1 2439 + regexp.prototype.flags: 1.5.4 2440 + safe-array-concat: 1.1.3 2441 + safe-push-apply: 1.0.0 2442 + safe-regex-test: 1.1.0 2443 + set-proto: 1.0.0 2444 + string.prototype.trim: 1.2.10 2445 + string.prototype.trimend: 1.0.9 2446 + string.prototype.trimstart: 1.0.8 2447 + typed-array-buffer: 1.0.3 2448 + typed-array-byte-length: 1.0.3 2449 + typed-array-byte-offset: 1.0.4 2450 + typed-array-length: 1.0.7 2451 + unbox-primitive: 1.1.0 2452 + which-typed-array: 1.1.19 2453 + 2454 + es-define-property@1.0.1: {} 2455 + 2456 + es-errors@1.3.0: {} 2457 + 2458 + es-object-atoms@1.1.1: 2459 + dependencies: 2460 + es-errors: 1.3.0 2461 + 2462 + es-set-tostringtag@2.1.0: 2463 + dependencies: 2464 + es-errors: 1.3.0 2465 + get-intrinsic: 1.3.0 2466 + has-tostringtag: 1.0.2 2467 + hasown: 2.0.2 2468 + 2469 + es-to-primitive@1.3.0: 2470 + dependencies: 2471 + is-callable: 1.2.7 2472 + is-date-object: 1.1.0 2473 + is-symbol: 1.1.1 2474 + 2475 + escalade@3.2.0: {} 2476 + 2477 + escape-string-regexp@1.0.5: {} 2478 + 2479 + esprima@4.0.1: {} 2480 + 2481 + estree-walker@2.0.2: {} 2482 + 2483 + eventemitter3@5.0.1: {} 2484 + 2485 + execa@8.0.1: 2486 + dependencies: 2487 + cross-spawn: 7.0.6 2488 + get-stream: 8.0.1 2489 + human-signals: 5.0.0 2490 + is-stream: 3.0.0 2491 + merge-stream: 2.0.0 2492 + npm-run-path: 5.3.0 2493 + onetime: 6.0.0 2494 + signal-exit: 4.1.0 2495 + strip-final-newline: 3.0.0 2496 + 2497 + extendable-error@0.1.7: {} 2498 + 2499 + external-editor@3.1.0: 2500 + dependencies: 2501 + chardet: 0.7.0 2502 + iconv-lite: 0.4.24 2503 + tmp: 0.0.33 2504 + 2505 + fast-glob@3.3.3: 2506 + dependencies: 2507 + '@nodelib/fs.stat': 2.0.5 2508 + '@nodelib/fs.walk': 1.2.8 2509 + glob-parent: 5.1.2 2510 + merge2: 1.4.1 2511 + micromatch: 4.0.8 2512 + 2513 + fastq@1.19.1: 2514 + dependencies: 2515 + reusify: 1.1.0 2516 + 2517 + fdir@6.4.3(picomatch@4.0.2): 2518 + optionalDependencies: 2519 + picomatch: 4.0.2 2520 + 2521 + fill-range@7.1.1: 2522 + dependencies: 2523 + to-regex-range: 5.0.1 2524 + 2525 + find-up@4.1.0: 2526 + dependencies: 2527 + locate-path: 5.0.0 2528 + path-exists: 4.0.0 2529 + 2530 + for-each@0.3.5: 2531 + dependencies: 2532 + is-callable: 1.2.7 2533 + 2534 + foreground-child@3.3.1: 2535 + dependencies: 2536 + cross-spawn: 7.0.6 2537 + signal-exit: 4.1.0 2538 + 2539 + fs-extra@7.0.1: 2540 + dependencies: 2541 + graceful-fs: 4.2.11 2542 + jsonfile: 4.0.0 2543 + universalify: 0.1.2 2544 + 2545 + fs-extra@8.1.0: 2546 + dependencies: 2547 + graceful-fs: 4.2.11 2548 + jsonfile: 4.0.0 2549 + universalify: 0.1.2 2550 + 2551 + fsevents@2.3.3: 2552 + optional: true 2553 + 2554 + function-bind@1.1.2: {} 2555 + 2556 + function.prototype.name@1.1.8: 2557 + dependencies: 2558 + call-bind: 1.0.8 2559 + call-bound: 1.0.4 2560 + define-properties: 1.2.1 2561 + functions-have-names: 1.2.3 2562 + hasown: 2.0.2 2563 + is-callable: 1.2.7 2564 + 2565 + functions-have-names@1.2.3: {} 2566 + 2567 + gensync@1.0.0-beta.2: {} 2568 + 2569 + get-east-asian-width@1.3.0: {} 2570 + 2571 + get-intrinsic@1.3.0: 2572 + dependencies: 2573 + call-bind-apply-helpers: 1.0.2 2574 + es-define-property: 1.0.1 2575 + es-errors: 1.3.0 2576 + es-object-atoms: 1.1.1 2577 + function-bind: 1.1.2 2578 + get-proto: 1.0.1 2579 + gopd: 1.2.0 2580 + has-symbols: 1.1.0 2581 + hasown: 2.0.2 2582 + math-intrinsics: 1.1.0 2583 + 2584 + get-proto@1.0.1: 2585 + dependencies: 2586 + dunder-proto: 1.0.1 2587 + es-object-atoms: 1.1.1 2588 + 2589 + get-stream@8.0.1: {} 2590 + 2591 + get-symbol-description@1.1.0: 2592 + dependencies: 2593 + call-bound: 1.0.4 2594 + es-errors: 1.3.0 2595 + get-intrinsic: 1.3.0 2596 + 2597 + glob-parent@5.1.2: 2598 + dependencies: 2599 + is-glob: 4.0.3 2600 + 2601 + glob@11.0.1: 2602 + dependencies: 2603 + foreground-child: 3.3.1 2604 + jackspeak: 4.1.0 2605 + minimatch: 10.0.1 2606 + minipass: 7.1.2 2607 + package-json-from-dist: 1.0.1 2608 + path-scurry: 2.0.0 2609 + 2610 + globals@11.12.0: {} 2611 + 2612 + globalthis@1.0.4: 2613 + dependencies: 2614 + define-properties: 1.2.1 2615 + gopd: 1.2.0 2616 + 2617 + globby@11.1.0: 2618 + dependencies: 2619 + array-union: 2.1.0 2620 + dir-glob: 3.0.1 2621 + fast-glob: 3.3.3 2622 + ignore: 5.3.2 2623 + merge2: 1.4.1 2624 + slash: 3.0.0 2625 + 2626 + gopd@1.2.0: {} 2627 + 2628 + graceful-fs@4.2.11: {} 2629 + 2630 + has-bigints@1.1.0: {} 2631 + 2632 + has-flag@3.0.0: {} 2633 + 2634 + has-property-descriptors@1.0.2: 2635 + dependencies: 2636 + es-define-property: 1.0.1 2637 + 2638 + has-proto@1.2.0: 2639 + dependencies: 2640 + dunder-proto: 1.0.1 2641 + 2642 + has-symbols@1.1.0: {} 2643 + 2644 + has-tostringtag@1.0.2: 2645 + dependencies: 2646 + has-symbols: 1.1.0 2647 + 2648 + hasown@2.0.2: 2649 + dependencies: 2650 + function-bind: 1.1.2 2651 + 2652 + hosted-git-info@2.8.9: {} 2653 + 2654 + human-id@4.1.1: {} 2655 + 2656 + human-signals@5.0.0: {} 2657 + 2658 + iconv-lite@0.4.24: 2659 + dependencies: 2660 + safer-buffer: 2.1.2 2661 + 2662 + ignore@5.3.2: {} 2663 + 2664 + internal-slot@1.1.0: 2665 + dependencies: 2666 + es-errors: 1.3.0 2667 + hasown: 2.0.2 2668 + side-channel: 1.1.0 2669 + 2670 + is-array-buffer@3.0.5: 2671 + dependencies: 2672 + call-bind: 1.0.8 2673 + call-bound: 1.0.4 2674 + get-intrinsic: 1.3.0 2675 + 2676 + is-arrayish@0.2.1: {} 2677 + 2678 + is-async-function@2.1.1: 2679 + dependencies: 2680 + async-function: 1.0.0 2681 + call-bound: 1.0.4 2682 + get-proto: 1.0.1 2683 + has-tostringtag: 1.0.2 2684 + safe-regex-test: 1.1.0 2685 + 2686 + is-bigint@1.1.0: 2687 + dependencies: 2688 + has-bigints: 1.1.0 2689 + 2690 + is-boolean-object@1.2.2: 2691 + dependencies: 2692 + call-bound: 1.0.4 2693 + has-tostringtag: 1.0.2 2694 + 2695 + is-callable@1.2.7: {} 2696 + 2697 + is-core-module@2.16.1: 2698 + dependencies: 2699 + hasown: 2.0.2 2700 + 2701 + is-data-view@1.0.2: 2702 + dependencies: 2703 + call-bound: 1.0.4 2704 + get-intrinsic: 1.3.0 2705 + is-typed-array: 1.1.15 2706 + 2707 + is-date-object@1.1.0: 2708 + dependencies: 2709 + call-bound: 1.0.4 2710 + has-tostringtag: 1.0.2 2711 + 2712 + is-extglob@2.1.1: {} 2713 + 2714 + is-finalizationregistry@1.1.1: 2715 + dependencies: 2716 + call-bound: 1.0.4 2717 + 2718 + is-fullwidth-code-point@3.0.0: {} 2719 + 2720 + is-fullwidth-code-point@4.0.0: {} 2721 + 2722 + is-fullwidth-code-point@5.0.0: 2723 + dependencies: 2724 + get-east-asian-width: 1.3.0 2725 + 2726 + is-generator-function@1.1.0: 2727 + dependencies: 2728 + call-bound: 1.0.4 2729 + get-proto: 1.0.1 2730 + has-tostringtag: 1.0.2 2731 + safe-regex-test: 1.1.0 2732 + 2733 + is-glob@4.0.3: 2734 + dependencies: 2735 + is-extglob: 2.1.1 2736 + 2737 + is-map@2.0.3: {} 2738 + 2739 + is-module@1.0.0: {} 2740 + 2741 + is-number-object@1.1.1: 2742 + dependencies: 2743 + call-bound: 1.0.4 2744 + has-tostringtag: 1.0.2 2745 + 2746 + is-number@7.0.0: {} 2747 + 2748 + is-reference@1.2.1: 2749 + dependencies: 2750 + '@types/estree': 1.0.6 2751 + 2752 + is-regex@1.2.1: 2753 + dependencies: 2754 + call-bound: 1.0.4 2755 + gopd: 1.2.0 2756 + has-tostringtag: 1.0.2 2757 + hasown: 2.0.2 2758 + 2759 + is-set@2.0.3: {} 2760 + 2761 + is-shared-array-buffer@1.0.4: 2762 + dependencies: 2763 + call-bound: 1.0.4 2764 + 2765 + is-stream@3.0.0: {} 2766 + 2767 + is-string@1.1.1: 2768 + dependencies: 2769 + call-bound: 1.0.4 2770 + has-tostringtag: 1.0.2 2771 + 2772 + is-subdir@1.2.0: 2773 + dependencies: 2774 + better-path-resolve: 1.0.0 2775 + 2776 + is-symbol@1.1.1: 2777 + dependencies: 2778 + call-bound: 1.0.4 2779 + has-symbols: 1.1.0 2780 + safe-regex-test: 1.1.0 2781 + 2782 + is-typed-array@1.1.15: 2783 + dependencies: 2784 + which-typed-array: 1.1.19 2785 + 2786 + is-weakmap@2.0.2: {} 2787 + 2788 + is-weakref@1.1.1: 2789 + dependencies: 2790 + call-bound: 1.0.4 2791 + 2792 + is-weakset@2.0.4: 2793 + dependencies: 2794 + call-bound: 1.0.4 2795 + get-intrinsic: 1.3.0 2796 + 2797 + is-windows@1.0.2: {} 2798 + 2799 + isarray@2.0.5: {} 2800 + 2801 + isexe@2.0.0: {} 2802 + 2803 + jackspeak@4.1.0: 2804 + dependencies: 2805 + '@isaacs/cliui': 8.0.2 2806 + 2807 + js-tokens@4.0.0: {} 2808 + 2809 + js-yaml@3.14.1: 2810 + dependencies: 2811 + argparse: 1.0.10 2812 + esprima: 4.0.1 2813 + 2814 + jsesc@3.1.0: {} 2815 + 2816 + json-parse-better-errors@1.0.2: {} 2817 + 2818 + json5@2.2.3: {} 2819 + 2820 + jsonfile@4.0.0: 2821 + optionalDependencies: 2822 + graceful-fs: 4.2.11 2823 + 2824 + lilconfig@3.1.3: {} 2825 + 2826 + lint-staged@15.4.3: 2827 + dependencies: 2828 + chalk: 5.4.1 2829 + commander: 13.1.0 2830 + debug: 4.4.0 2831 + execa: 8.0.1 2832 + lilconfig: 3.1.3 2833 + listr2: 8.2.5 2834 + micromatch: 4.0.8 2835 + pidtree: 0.6.0 2836 + string-argv: 0.3.2 2837 + yaml: 2.7.0 2838 + transitivePeerDependencies: 2839 + - supports-color 2840 + 2841 + listr2@8.2.5: 2842 + dependencies: 2843 + cli-truncate: 4.0.0 2844 + colorette: 2.0.20 2845 + eventemitter3: 5.0.1 2846 + log-update: 6.1.0 2847 + rfdc: 1.4.1 2848 + wrap-ansi: 9.0.0 2849 + 2850 + load-json-file@4.0.0: 2851 + dependencies: 2852 + graceful-fs: 4.2.11 2853 + parse-json: 4.0.0 2854 + pify: 3.0.0 2855 + strip-bom: 3.0.0 2856 + 2857 + locate-path@5.0.0: 2858 + dependencies: 2859 + p-locate: 4.1.0 2860 + 2861 + lodash.startcase@4.4.0: {} 2862 + 2863 + log-update@6.1.0: 2864 + dependencies: 2865 + ansi-escapes: 7.0.0 2866 + cli-cursor: 5.0.0 2867 + slice-ansi: 7.1.0 2868 + strip-ansi: 7.1.0 2869 + wrap-ansi: 9.0.0 2870 + 2871 + lru-cache@11.0.2: {} 2872 + 2873 + lru-cache@5.1.1: 2874 + dependencies: 2875 + yallist: 3.1.1 2876 + 2877 + magic-string@0.30.17: 2878 + dependencies: 2879 + '@jridgewell/sourcemap-codec': 1.5.0 2880 + 2881 + math-intrinsics@1.1.0: {} 2882 + 2883 + memorystream@0.3.1: {} 2884 + 2885 + merge-stream@2.0.0: {} 2886 + 2887 + merge2@1.4.1: {} 2888 + 2889 + micromatch@4.0.8: 2890 + dependencies: 2891 + braces: 3.0.3 2892 + picomatch: 2.3.1 2893 + 2894 + mimic-fn@4.0.0: {} 2895 + 2896 + mimic-function@5.0.1: {} 2897 + 2898 + minimatch@10.0.1: 2899 + dependencies: 2900 + brace-expansion: 2.0.1 2901 + 2902 + minimatch@3.1.2: 2903 + dependencies: 2904 + brace-expansion: 1.1.11 2905 + 2906 + minipass@7.1.2: {} 2907 + 2908 + mri@1.2.0: {} 2909 + 2910 + ms@2.1.3: {} 2911 + 2912 + nice-try@1.0.5: {} 2913 + 2914 + node-fetch@2.7.0: 2915 + dependencies: 2916 + whatwg-url: 5.0.0 2917 + 2918 + node-releases@2.0.19: {} 2919 + 2920 + normalize-package-data@2.5.0: 2921 + dependencies: 2922 + hosted-git-info: 2.8.9 2923 + resolve: 1.22.10 2924 + semver: 5.7.2 2925 + validate-npm-package-license: 3.0.4 2926 + 2927 + npm-run-all@4.1.5: 2928 + dependencies: 2929 + ansi-styles: 3.2.1 2930 + chalk: 2.4.2 2931 + cross-spawn: 6.0.6 2932 + memorystream: 0.3.1 2933 + minimatch: 3.1.2 2934 + pidtree: 0.3.1 2935 + read-pkg: 3.0.0 2936 + shell-quote: 1.8.2 2937 + string.prototype.padend: 3.1.6 2938 + 2939 + npm-run-path@5.3.0: 2940 + dependencies: 2941 + path-key: 4.0.0 2942 + 2943 + object-inspect@1.13.4: {} 2944 + 2945 + object-keys@1.1.1: {} 2946 + 2947 + object.assign@4.1.7: 2948 + dependencies: 2949 + call-bind: 1.0.8 2950 + call-bound: 1.0.4 2951 + define-properties: 1.2.1 2952 + es-object-atoms: 1.1.1 2953 + has-symbols: 1.1.0 2954 + object-keys: 1.1.1 2955 + 2956 + onetime@6.0.0: 2957 + dependencies: 2958 + mimic-fn: 4.0.0 2959 + 2960 + onetime@7.0.0: 2961 + dependencies: 2962 + mimic-function: 5.0.1 2963 + 2964 + os-tmpdir@1.0.2: {} 2965 + 2966 + outdent@0.5.0: {} 2967 + 2968 + own-keys@1.0.1: 2969 + dependencies: 2970 + get-intrinsic: 1.3.0 2971 + object-keys: 1.1.1 2972 + safe-push-apply: 1.0.0 2973 + 2974 + p-filter@2.1.0: 2975 + dependencies: 2976 + p-map: 2.1.0 2977 + 2978 + p-limit@2.3.0: 2979 + dependencies: 2980 + p-try: 2.2.0 2981 + 2982 + p-locate@4.1.0: 2983 + dependencies: 2984 + p-limit: 2.3.0 2985 + 2986 + p-map@2.1.0: {} 2987 + 2988 + p-try@2.2.0: {} 2989 + 2990 + package-json-from-dist@1.0.1: {} 2991 + 2992 + package-manager-detector@0.2.11: 2993 + dependencies: 2994 + quansync: 0.2.8 2995 + 2996 + parse-json@4.0.0: 2997 + dependencies: 2998 + error-ex: 1.3.2 2999 + json-parse-better-errors: 1.0.2 3000 + 3001 + path-exists@4.0.0: {} 3002 + 3003 + path-key@2.0.1: {} 3004 + 3005 + path-key@3.1.1: {} 3006 + 3007 + path-key@4.0.0: {} 3008 + 3009 + path-parse@1.0.7: {} 3010 + 3011 + path-scurry@2.0.0: 3012 + dependencies: 3013 + lru-cache: 11.0.2 3014 + minipass: 7.1.2 3015 + 3016 + path-type@3.0.0: 3017 + dependencies: 3018 + pify: 3.0.0 3019 + 3020 + path-type@4.0.0: {} 3021 + 3022 + picocolors@1.1.1: {} 3023 + 3024 + picomatch@2.3.1: {} 3025 + 3026 + picomatch@4.0.2: {} 3027 + 3028 + pidtree@0.3.1: {} 3029 + 3030 + pidtree@0.6.0: {} 3031 + 3032 + pify@3.0.0: {} 3033 + 3034 + pify@4.0.1: {} 3035 + 3036 + possible-typed-array-names@1.1.0: {} 3037 + 3038 + prettier@2.8.8: {} 3039 + 3040 + prettier@3.5.3: {} 3041 + 3042 + quansync@0.2.8: {} 3043 + 3044 + queue-microtask@1.2.3: {} 3045 + 3046 + randombytes@2.1.0: 3047 + dependencies: 3048 + safe-buffer: 5.2.1 3049 + 3050 + read-pkg@3.0.0: 3051 + dependencies: 3052 + load-json-file: 4.0.0 3053 + normalize-package-data: 2.5.0 3054 + path-type: 3.0.0 3055 + 3056 + read-yaml-file@1.1.0: 3057 + dependencies: 3058 + graceful-fs: 4.2.11 3059 + js-yaml: 3.14.1 3060 + pify: 4.0.1 3061 + strip-bom: 3.0.0 3062 + 3063 + reflect.getprototypeof@1.0.10: 3064 + dependencies: 3065 + call-bind: 1.0.8 3066 + define-properties: 1.2.1 3067 + es-abstract: 1.23.9 3068 + es-errors: 1.3.0 3069 + es-object-atoms: 1.1.1 3070 + get-intrinsic: 1.3.0 3071 + get-proto: 1.0.1 3072 + which-builtin-type: 1.2.1 3073 + 3074 + regenerator-runtime@0.14.1: {} 3075 + 3076 + regexp.prototype.flags@1.5.4: 3077 + dependencies: 3078 + call-bind: 1.0.8 3079 + define-properties: 1.2.1 3080 + es-errors: 1.3.0 3081 + get-proto: 1.0.1 3082 + gopd: 1.2.0 3083 + set-function-name: 2.0.2 3084 + 3085 + resolve-from@5.0.0: {} 3086 + 3087 + resolve@1.22.10: 3088 + dependencies: 3089 + is-core-module: 2.16.1 3090 + path-parse: 1.0.7 3091 + supports-preserve-symlinks-flag: 1.0.0 3092 + 3093 + restore-cursor@5.1.0: 3094 + dependencies: 3095 + onetime: 7.0.0 3096 + signal-exit: 4.1.0 3097 + 3098 + reusify@1.1.0: {} 3099 + 3100 + rfdc@1.4.1: {} 3101 + 3102 + rimraf@6.0.1: 3103 + dependencies: 3104 + glob: 11.0.1 3105 + package-json-from-dist: 1.0.1 3106 + 3107 + rollup-plugin-cjs-check@1.0.3(rollup@4.34.9): 3108 + dependencies: 3109 + '@rollup/pluginutils': 5.1.4(rollup@4.34.9) 3110 + cjs-module-lexer: 1.4.3 3111 + rollup: 4.34.9 3112 + 3113 + rollup-plugin-dts@6.1.1(rollup@4.34.9)(typescript@5.7.3): 3114 + dependencies: 3115 + magic-string: 0.30.17 3116 + rollup: 4.34.9 3117 + typescript: 5.7.3 3118 + optionalDependencies: 3119 + '@babel/code-frame': 7.26.2 3120 + 3121 + rollup@4.34.9: 3122 + dependencies: 3123 + '@types/estree': 1.0.6 3124 + optionalDependencies: 3125 + '@rollup/rollup-android-arm-eabi': 4.34.9 3126 + '@rollup/rollup-android-arm64': 4.34.9 3127 + '@rollup/rollup-darwin-arm64': 4.34.9 3128 + '@rollup/rollup-darwin-x64': 4.34.9 3129 + '@rollup/rollup-freebsd-arm64': 4.34.9 3130 + '@rollup/rollup-freebsd-x64': 4.34.9 3131 + '@rollup/rollup-linux-arm-gnueabihf': 4.34.9 3132 + '@rollup/rollup-linux-arm-musleabihf': 4.34.9 3133 + '@rollup/rollup-linux-arm64-gnu': 4.34.9 3134 + '@rollup/rollup-linux-arm64-musl': 4.34.9 3135 + '@rollup/rollup-linux-loongarch64-gnu': 4.34.9 3136 + '@rollup/rollup-linux-powerpc64le-gnu': 4.34.9 3137 + '@rollup/rollup-linux-riscv64-gnu': 4.34.9 3138 + '@rollup/rollup-linux-s390x-gnu': 4.34.9 3139 + '@rollup/rollup-linux-x64-gnu': 4.34.9 3140 + '@rollup/rollup-linux-x64-musl': 4.34.9 3141 + '@rollup/rollup-win32-arm64-msvc': 4.34.9 3142 + '@rollup/rollup-win32-ia32-msvc': 4.34.9 3143 + '@rollup/rollup-win32-x64-msvc': 4.34.9 3144 + fsevents: 2.3.3 3145 + 3146 + run-parallel@1.2.0: 3147 + dependencies: 3148 + queue-microtask: 1.2.3 3149 + 3150 + safe-array-concat@1.1.3: 3151 + dependencies: 3152 + call-bind: 1.0.8 3153 + call-bound: 1.0.4 3154 + get-intrinsic: 1.3.0 3155 + has-symbols: 1.1.0 3156 + isarray: 2.0.5 3157 + 3158 + safe-buffer@5.2.1: {} 3159 + 3160 + safe-push-apply@1.0.0: 3161 + dependencies: 3162 + es-errors: 1.3.0 3163 + isarray: 2.0.5 3164 + 3165 + safe-regex-test@1.1.0: 3166 + dependencies: 3167 + call-bound: 1.0.4 3168 + es-errors: 1.3.0 3169 + is-regex: 1.2.1 3170 + 3171 + safer-buffer@2.1.2: {} 3172 + 3173 + semver@5.7.2: {} 3174 + 3175 + semver@6.3.1: {} 3176 + 3177 + semver@7.7.1: {} 3178 + 3179 + serialize-javascript@6.0.2: 3180 + dependencies: 3181 + randombytes: 2.1.0 3182 + 3183 + set-function-length@1.2.2: 3184 + dependencies: 3185 + define-data-property: 1.1.4 3186 + es-errors: 1.3.0 3187 + function-bind: 1.1.2 3188 + get-intrinsic: 1.3.0 3189 + gopd: 1.2.0 3190 + has-property-descriptors: 1.0.2 3191 + 3192 + set-function-name@2.0.2: 3193 + dependencies: 3194 + define-data-property: 1.1.4 3195 + es-errors: 1.3.0 3196 + functions-have-names: 1.2.3 3197 + has-property-descriptors: 1.0.2 3198 + 3199 + set-proto@1.0.0: 3200 + dependencies: 3201 + dunder-proto: 1.0.1 3202 + es-errors: 1.3.0 3203 + es-object-atoms: 1.1.1 3204 + 3205 + shebang-command@1.2.0: 3206 + dependencies: 3207 + shebang-regex: 1.0.0 3208 + 3209 + shebang-command@2.0.0: 3210 + dependencies: 3211 + shebang-regex: 3.0.0 3212 + 3213 + shebang-regex@1.0.0: {} 3214 + 3215 + shebang-regex@3.0.0: {} 3216 + 3217 + shell-quote@1.8.2: {} 3218 + 3219 + side-channel-list@1.0.0: 3220 + dependencies: 3221 + es-errors: 1.3.0 3222 + object-inspect: 1.13.4 3223 + 3224 + side-channel-map@1.0.1: 3225 + dependencies: 3226 + call-bound: 1.0.4 3227 + es-errors: 1.3.0 3228 + get-intrinsic: 1.3.0 3229 + object-inspect: 1.13.4 3230 + 3231 + side-channel-weakmap@1.0.2: 3232 + dependencies: 3233 + call-bound: 1.0.4 3234 + es-errors: 1.3.0 3235 + get-intrinsic: 1.3.0 3236 + object-inspect: 1.13.4 3237 + side-channel-map: 1.0.1 3238 + 3239 + side-channel@1.1.0: 3240 + dependencies: 3241 + es-errors: 1.3.0 3242 + object-inspect: 1.13.4 3243 + side-channel-list: 1.0.0 3244 + side-channel-map: 1.0.1 3245 + side-channel-weakmap: 1.0.2 3246 + 3247 + signal-exit@4.1.0: {} 3248 + 3249 + slash@3.0.0: {} 3250 + 3251 + slice-ansi@5.0.0: 3252 + dependencies: 3253 + ansi-styles: 6.2.1 3254 + is-fullwidth-code-point: 4.0.0 3255 + 3256 + slice-ansi@7.1.0: 3257 + dependencies: 3258 + ansi-styles: 6.2.1 3259 + is-fullwidth-code-point: 5.0.0 3260 + 3261 + smob@1.5.0: {} 3262 + 3263 + source-map-support@0.5.21: 3264 + dependencies: 3265 + buffer-from: 1.1.2 3266 + source-map: 0.6.1 3267 + 3268 + source-map@0.6.1: {} 3269 + 3270 + spawndamnit@3.0.1: 3271 + dependencies: 3272 + cross-spawn: 7.0.6 3273 + signal-exit: 4.1.0 3274 + 3275 + spdx-correct@3.2.0: 3276 + dependencies: 3277 + spdx-expression-parse: 3.0.1 3278 + spdx-license-ids: 3.0.21 3279 + 3280 + spdx-exceptions@2.5.0: {} 3281 + 3282 + spdx-expression-parse@3.0.1: 3283 + dependencies: 3284 + spdx-exceptions: 2.5.0 3285 + spdx-license-ids: 3.0.21 3286 + 3287 + spdx-license-ids@3.0.21: {} 3288 + 3289 + sprintf-js@1.0.3: {} 3290 + 3291 + string-argv@0.3.2: {} 3292 + 3293 + string-width@4.2.3: 3294 + dependencies: 3295 + emoji-regex: 8.0.0 3296 + is-fullwidth-code-point: 3.0.0 3297 + strip-ansi: 6.0.1 3298 + 3299 + string-width@5.1.2: 3300 + dependencies: 3301 + eastasianwidth: 0.2.0 3302 + emoji-regex: 9.2.2 3303 + strip-ansi: 7.1.0 3304 + 3305 + string-width@7.2.0: 3306 + dependencies: 3307 + emoji-regex: 10.4.0 3308 + get-east-asian-width: 1.3.0 3309 + strip-ansi: 7.1.0 3310 + 3311 + string.prototype.padend@3.1.6: 3312 + dependencies: 3313 + call-bind: 1.0.8 3314 + define-properties: 1.2.1 3315 + es-abstract: 1.23.9 3316 + es-object-atoms: 1.1.1 3317 + 3318 + string.prototype.trim@1.2.10: 3319 + dependencies: 3320 + call-bind: 1.0.8 3321 + call-bound: 1.0.4 3322 + define-data-property: 1.1.4 3323 + define-properties: 1.2.1 3324 + es-abstract: 1.23.9 3325 + es-object-atoms: 1.1.1 3326 + has-property-descriptors: 1.0.2 3327 + 3328 + string.prototype.trimend@1.0.9: 3329 + dependencies: 3330 + call-bind: 1.0.8 3331 + call-bound: 1.0.4 3332 + define-properties: 1.2.1 3333 + es-object-atoms: 1.1.1 3334 + 3335 + string.prototype.trimstart@1.0.8: 3336 + dependencies: 3337 + call-bind: 1.0.8 3338 + define-properties: 1.2.1 3339 + es-object-atoms: 1.1.1 3340 + 3341 + strip-ansi@6.0.1: 3342 + dependencies: 3343 + ansi-regex: 5.0.1 3344 + 3345 + strip-ansi@7.1.0: 3346 + dependencies: 3347 + ansi-regex: 6.1.0 3348 + 3349 + strip-bom@3.0.0: {} 3350 + 3351 + strip-final-newline@3.0.0: {} 3352 + 3353 + supports-color@5.5.0: 3354 + dependencies: 3355 + has-flag: 3.0.0 3356 + 3357 + supports-preserve-symlinks-flag@1.0.0: {} 3358 + 3359 + term-size@2.2.1: {} 3360 + 3361 + terser@5.39.0: 3362 + dependencies: 3363 + '@jridgewell/source-map': 0.3.6 3364 + acorn: 8.14.1 3365 + commander: 2.20.3 3366 + source-map-support: 0.5.21 3367 + 3368 + tmp@0.0.33: 3369 + dependencies: 3370 + os-tmpdir: 1.0.2 3371 + 3372 + to-regex-range@5.0.1: 3373 + dependencies: 3374 + is-number: 7.0.0 3375 + 3376 + tr46@0.0.3: {} 3377 + 3378 + typed-array-buffer@1.0.3: 3379 + dependencies: 3380 + call-bound: 1.0.4 3381 + es-errors: 1.3.0 3382 + is-typed-array: 1.1.15 3383 + 3384 + typed-array-byte-length@1.0.3: 3385 + dependencies: 3386 + call-bind: 1.0.8 3387 + for-each: 0.3.5 3388 + gopd: 1.2.0 3389 + has-proto: 1.2.0 3390 + is-typed-array: 1.1.15 3391 + 3392 + typed-array-byte-offset@1.0.4: 3393 + dependencies: 3394 + available-typed-arrays: 1.0.7 3395 + call-bind: 1.0.8 3396 + for-each: 0.3.5 3397 + gopd: 1.2.0 3398 + has-proto: 1.2.0 3399 + is-typed-array: 1.1.15 3400 + reflect.getprototypeof: 1.0.10 3401 + 3402 + typed-array-length@1.0.7: 3403 + dependencies: 3404 + call-bind: 1.0.8 3405 + for-each: 0.3.5 3406 + gopd: 1.2.0 3407 + is-typed-array: 1.1.15 3408 + possible-typed-array-names: 1.1.0 3409 + reflect.getprototypeof: 1.0.10 3410 + 3411 + typescript@5.7.3: {} 3412 + 3413 + unbox-primitive@1.1.0: 3414 + dependencies: 3415 + call-bound: 1.0.4 3416 + has-bigints: 1.1.0 3417 + has-symbols: 1.1.0 3418 + which-boxed-primitive: 1.1.1 3419 + 3420 + undici-types@5.26.5: {} 3421 + 3422 + universalify@0.1.2: {} 3423 + 3424 + update-browserslist-db@1.1.3(browserslist@4.24.4): 3425 + dependencies: 3426 + browserslist: 4.24.4 3427 + escalade: 3.2.0 3428 + picocolors: 1.1.1 3429 + 3430 + validate-npm-package-license@3.0.4: 3431 + dependencies: 3432 + spdx-correct: 3.2.0 3433 + spdx-expression-parse: 3.0.1 3434 + 3435 + webidl-conversions@3.0.1: {} 3436 + 3437 + whatwg-url@5.0.0: 3438 + dependencies: 3439 + tr46: 0.0.3 3440 + webidl-conversions: 3.0.1 3441 + 3442 + which-boxed-primitive@1.1.1: 3443 + dependencies: 3444 + is-bigint: 1.1.0 3445 + is-boolean-object: 1.2.2 3446 + is-number-object: 1.1.1 3447 + is-string: 1.1.1 3448 + is-symbol: 1.1.1 3449 + 3450 + which-builtin-type@1.2.1: 3451 + dependencies: 3452 + call-bound: 1.0.4 3453 + function.prototype.name: 1.1.8 3454 + has-tostringtag: 1.0.2 3455 + is-async-function: 2.1.1 3456 + is-date-object: 1.1.0 3457 + is-finalizationregistry: 1.1.1 3458 + is-generator-function: 1.1.0 3459 + is-regex: 1.2.1 3460 + is-weakref: 1.1.1 3461 + isarray: 2.0.5 3462 + which-boxed-primitive: 1.1.1 3463 + which-collection: 1.0.2 3464 + which-typed-array: 1.1.19 3465 + 3466 + which-collection@1.0.2: 3467 + dependencies: 3468 + is-map: 2.0.3 3469 + is-set: 2.0.3 3470 + is-weakmap: 2.0.2 3471 + is-weakset: 2.0.4 3472 + 3473 + which-typed-array@1.1.19: 3474 + dependencies: 3475 + available-typed-arrays: 1.0.7 3476 + call-bind: 1.0.8 3477 + call-bound: 1.0.4 3478 + for-each: 0.3.5 3479 + get-proto: 1.0.1 3480 + gopd: 1.2.0 3481 + has-tostringtag: 1.0.2 3482 + 3483 + which@1.3.1: 3484 + dependencies: 3485 + isexe: 2.0.0 3486 + 3487 + which@2.0.2: 3488 + dependencies: 3489 + isexe: 2.0.0 3490 + 3491 + wrap-ansi@7.0.0: 3492 + dependencies: 3493 + ansi-styles: 4.3.0 3494 + string-width: 4.2.3 3495 + strip-ansi: 6.0.1 3496 + 3497 + wrap-ansi@8.1.0: 3498 + dependencies: 3499 + ansi-styles: 6.2.1 3500 + string-width: 5.1.2 3501 + strip-ansi: 7.1.0 3502 + 3503 + wrap-ansi@9.0.0: 3504 + dependencies: 3505 + ansi-styles: 6.2.1 3506 + string-width: 7.2.0 3507 + strip-ansi: 7.1.0 3508 + 3509 + yallist@3.1.1: {} 3510 + 3511 + yaml@2.7.0: {}
+125
scripts/changelog.js
··· 1 + const { config } = require('dotenv'); 2 + const { getInfo } = require('@changesets/get-github-info'); 3 + 4 + config(); 5 + 6 + const REPO = 'kitten/fiber-dev'; 7 + const SEE_LINE = /^See:\s*(.*)/i; 8 + const TRAILING_CHAR = /[.;:]$/g; 9 + const listFormatter = new Intl.ListFormat('en-US'); 10 + 11 + const getSummaryLines = cs => { 12 + let lines = cs.summary.trim().split(/\r?\n/); 13 + if (!lines.some(line => /```/.test(line))) { 14 + lines = lines.map(l => l.trim()).filter(Boolean); 15 + const size = lines.length; 16 + if (size > 0) { 17 + lines[size - 1] = lines[size - 1].replace(TRAILING_CHAR, ''); 18 + } 19 + } 20 + return lines; 21 + }; 22 + 23 + /** Creates a "(See X)" string from a template */ 24 + const templateSeeRef = links => { 25 + const humanReadableLinks = links.filter(Boolean).map(link => { 26 + if (typeof link === 'string') return link; 27 + return link.pull || link.commit; 28 + }); 29 + 30 + const size = humanReadableLinks.length; 31 + if (size === 0) return ''; 32 + 33 + const str = listFormatter.format(humanReadableLinks); 34 + return `(See ${str})`; 35 + }; 36 + 37 + const changelogFunctions = { 38 + getDependencyReleaseLine: async (changesets, dependenciesUpdated) => { 39 + if (dependenciesUpdated.length === 0) return ''; 40 + 41 + const dependenciesLinks = await Promise.all( 42 + changesets.map(async cs => { 43 + if (!cs.commit) return undefined; 44 + 45 + const lines = getSummaryLines(cs); 46 + const prLine = lines.find(line => SEE_LINE.test(line)); 47 + if (prLine) { 48 + const match = prLine.match(SEE_LINE); 49 + return (match && match[1].trim()) || undefined; 50 + } 51 + 52 + const { links } = await getInfo({ 53 + repo: REPO, 54 + commit: cs.commit, 55 + }); 56 + 57 + return links; 58 + }) 59 + ); 60 + 61 + let changesetLink = '- Updated dependencies'; 62 + 63 + const seeRef = templateSeeRef(dependenciesLinks); 64 + if (seeRef) changesetLink += ` ${seeRef}`; 65 + 66 + const detailsLinks = dependenciesUpdated.map(dep => { 67 + return ` - ${dep.name}@${dep.newVersion}`; 68 + }); 69 + 70 + return [changesetLink, ...detailsLinks].join('\n'); 71 + }, 72 + getReleaseLine: async (changeset, type) => { 73 + let pull, commit, user; 74 + 75 + const lines = getSummaryLines(changeset); 76 + const prLineIndex = lines.findIndex(line => SEE_LINE.test(line)); 77 + if (prLineIndex > -1) { 78 + const match = lines[prLineIndex].match(SEE_LINE); 79 + pull = (match && match[1].trim()) || undefined; 80 + lines.splice(prLineIndex, 1); 81 + } 82 + 83 + const [firstLine, ...futureLines] = lines; 84 + 85 + if (changeset.commit && !pull) { 86 + const { links } = await getInfo({ 87 + repo: REPO, 88 + commit: changeset.commit, 89 + }); 90 + 91 + pull = links.pull || undefined; 92 + commit = links.commit || undefined; 93 + user = links.user || undefined; 94 + } 95 + 96 + let annotation = ''; 97 + if (type === 'patch' && /^\s*fix/i.test(firstLine)) { 98 + annotation = '⚠️ '; 99 + } 100 + 101 + let str = `- ${annotation}${firstLine}`; 102 + if (futureLines.length > 0) { 103 + str += `\n${futureLines.map(l => ` ${l}`).join('\n')}`; 104 + } 105 + 106 + const endsWithParagraph = /(?<=(?:[!;?.]|```) *)$/g; 107 + if (user && !endsWithParagraph) { 108 + str += `, by ${user}`; 109 + } else { 110 + str += `\nSubmitted by ${user}`; 111 + } 112 + 113 + if (pull || commit) { 114 + const seeRef = templateSeeRef([pull || commit]); 115 + if (seeRef) str += ` ${seeRef}`; 116 + } 117 + 118 + return str; 119 + }, 120 + }; 121 + 122 + module.exports = { 123 + ...changelogFunctions, 124 + default: changelogFunctions, 125 + };
+12
scripts/prepare.js
··· 1 + const path = require('path'); 2 + const fs = require('fs'); 3 + 4 + const precommit = path.resolve(__dirname, '../.git/hooks/pre-commit'); 5 + 6 + const hook = ` 7 + #!/bin/sh 8 + pnpm exec lint-staged --quiet --relative 9 + `.trim(); 10 + 11 + fs.writeFileSync(precommit, hook); 12 + fs.chmodSync(precommit, '755');
+300
scripts/rollup.config.mjs
··· 1 + import fs from 'node:fs/promises'; 2 + import path from 'node:path/posix'; 3 + import { fileURLToPath } from 'node:url'; 4 + import { readFileSync } from 'node:fs'; 5 + import { createRequire, isBuiltin } from 'node:module'; 6 + 7 + import * as prettier from 'prettier'; 8 + import commonjs from '@rollup/plugin-commonjs'; 9 + import resolve from '@rollup/plugin-node-resolve'; 10 + import babel from '@rollup/plugin-babel'; 11 + import terser from '@rollup/plugin-terser'; 12 + import cjsCheck from 'rollup-plugin-cjs-check'; 13 + import dts from 'rollup-plugin-dts'; 14 + 15 + const __dirname = path.dirname(fileURLToPath(import.meta.url)); 16 + 17 + const normalize = name => [] 18 + .concat(name) 19 + .join(' ') 20 + .replace(/[@\s/.]+/g, ' ') 21 + .trim() 22 + .replace(/\s+/, '-') 23 + .toLowerCase(); 24 + 25 + const extension = name => { 26 + if (/\.d.ts$/.test(name)) { 27 + return '.d.ts'; 28 + } else { 29 + return path.extname(name); 30 + } 31 + }; 32 + 33 + const meta = JSON.parse(readFileSync('package.json')); 34 + const name = normalize(meta.name); 35 + 36 + const externalModules = [ 37 + ...Object.keys(meta.dependencies || {}), 38 + ...Object.keys(meta.peerDependencies || {}), 39 + ]; 40 + 41 + const moduleRe = /^(?!node:|[.{1,2}\/])(@[\w.-]+\/)?[\w.-]+/; 42 + const externalRe = new RegExp(`^(${externalModules.join('|')})($|/)`); 43 + 44 + const exports = {}; 45 + for (const key in meta.exports) { 46 + const entry = meta.exports[key]; 47 + if (typeof entry === 'object' && !!entry.source) { 48 + const entryPath = normalize(key); 49 + const entryName = normalize([name, entryPath]); 50 + exports[entryName] = { 51 + path: entryPath, 52 + ...entry, 53 + }; 54 + } 55 + } 56 + 57 + const externals = new Set(); 58 + 59 + const commonConfig = { 60 + input: Object.entries(exports).reduce((input, [exportName, entry]) => { 61 + input[exportName] = entry.source; 62 + return input; 63 + }, {}), 64 + onwarn: () => {}, 65 + external(id) { 66 + const isExternal = isBuiltin(id) || (externalModules.length && externalRe.test(id)); 67 + if (!isExternal && moduleRe.test(id)) 68 + externals.add(id); 69 + return isExternal; 70 + }, 71 + treeshake: { 72 + unknownGlobalSideEffects: false, 73 + tryCatchDeoptimization: false, 74 + moduleSideEffects: false, 75 + }, 76 + }; 77 + 78 + const commonPlugins = [ 79 + resolve({ 80 + extensions: ['.mjs', '.js', '.ts'], 81 + mainFields: ['module', 'jsnext', 'main'], 82 + preferBuiltins: false, 83 + browser: true, 84 + }), 85 + 86 + commonjs({ 87 + ignoreGlobal: true, 88 + include: /\/node_modules\//, 89 + }), 90 + ]; 91 + 92 + const commonOutput = { 93 + dir: './', 94 + exports: 'auto', 95 + sourcemap: true, 96 + sourcemapExcludeSources: false, 97 + hoistTransitiveImports: false, 98 + indent: false, 99 + freeze: false, 100 + strict: false, 101 + generatedCode: { 102 + preset: 'es5', 103 + reservedNamesAsProps: false, 104 + objectShorthand: false, 105 + constBindings: false, 106 + }, 107 + }; 108 + 109 + const outputPlugins = [ 110 + { 111 + name: 'outputPackageJsons', 112 + async writeBundle() { 113 + for (const key in exports) { 114 + const entry = exports[key]; 115 + if (entry.path) { 116 + const output = path.relative(entry.path, process.cwd()); 117 + const json = JSON.stringify({ 118 + name: key, 119 + private: true, 120 + version: '0.0.0', 121 + main: path.join(output, entry.require), 122 + module: path.join(output, entry.import), 123 + types: path.join(output, entry.types), 124 + source: path.join(output, entry.source), 125 + exports: { 126 + '.': { 127 + types: path.join(output, entry.types), 128 + import: path.join(output, entry.import), 129 + require: path.join(output, entry.require), 130 + source: path.join(output, entry.source), 131 + }, 132 + }, 133 + }, null, 2); 134 + 135 + await fs.mkdir(entry.path, { recursive: true }); 136 + await fs.writeFile(path.join(entry.path, 'package.json'), json); 137 + } 138 + } 139 + }, 140 + }, 141 + 142 + { 143 + name: 'outputBundledLicenses', 144 + async writeBundle() { 145 + const require = createRequire(import.meta.url); 146 + const rootLicense = path.join(__dirname, '../LICENSE.md'); 147 + const outputLicense = path.resolve('LICENSE.md'); 148 + if (rootLicense === outputLicense) return; 149 + const licenses = new Map(); 150 + for (const packageName of [...externals].sort()) { 151 + let license; 152 + let metaPath; 153 + let meta; 154 + try { 155 + metaPath = require.resolve(path.join(packageName, '/package.json')); 156 + meta = require(metaPath); 157 + } catch (_error) { 158 + continue; 159 + } 160 + const packagePath = path.dirname(metaPath); 161 + let licenseName = (await fs.readdir(packagePath).catch(() => [])) 162 + .find((name) => /^licen[sc]e/i.test(name)); 163 + if (!licenseName) { 164 + const match = /^SEE LICENSE IN (.*)/i.exec(meta.license || ''); 165 + licenseName = match ? match[1] : meta.license; 166 + } 167 + try { 168 + license = await fs.readFile(path.join(packagePath, licenseName), 'utf8'); 169 + } catch (_error) { 170 + license = meta.author 171 + ? `${licenseName}, Copyright (c) ${meta.author.name || meta.author}` 172 + : `${licenseName}, See license at: ${meta.repository.url || meta.repository}`; 173 + } 174 + licenses.set(packageName, license); 175 + } 176 + let output = (await fs.readFile(rootLicense, 'utf8')).trim(); 177 + for (const [packageName, licenseText] of licenses) 178 + output += `\n\n## ${packageName}\n\n${licenseText.trim()}`; 179 + await fs.writeFile(outputLicense, output); 180 + }, 181 + }, 182 + 183 + cjsCheck(), 184 + 185 + terser({ 186 + warnings: true, 187 + ecma: 2015, 188 + keep_fnames: true, 189 + ie8: false, 190 + compress: { 191 + pure_getters: true, 192 + toplevel: true, 193 + booleans_as_integers: false, 194 + keep_fnames: true, 195 + keep_fargs: true, 196 + if_return: false, 197 + ie8: false, 198 + sequences: false, 199 + loops: false, 200 + conditionals: false, 201 + join_vars: false, 202 + }, 203 + mangle: { 204 + module: true, 205 + keep_fnames: true, 206 + }, 207 + output: { 208 + beautify: true, 209 + braces: true, 210 + indent_level: 2, 211 + }, 212 + }), 213 + ]; 214 + 215 + export default [ 216 + { 217 + ...commonConfig, 218 + plugins: [ 219 + ...commonPlugins, 220 + babel({ 221 + babelrc: false, 222 + babelHelpers: 'bundled', 223 + extensions: ['mjs', 'js', 'jsx', 'ts', 'tsx'], 224 + exclude: 'node_modules/**', 225 + presets: [], 226 + plugins: [ 227 + '@babel/plugin-transform-typescript', 228 + '@babel/plugin-transform-block-scoping', 229 + ], 230 + }), 231 + ], 232 + output: [ 233 + { 234 + ...commonOutput, 235 + format: 'esm', 236 + chunkFileNames(chunk) { 237 + return `dist/chunks/[name]-chunk${extension(chunk.name) || '.mjs'}`; 238 + }, 239 + entryFileNames(chunk) { 240 + return chunk.isEntry 241 + ? path.normalize(exports[chunk.name].import) 242 + : `dist/[name].mjs`; 243 + }, 244 + plugins: outputPlugins, 245 + }, 246 + { 247 + ...commonOutput, 248 + format: 'cjs', 249 + esModule: true, 250 + externalLiveBindings: true, 251 + chunkFileNames(chunk) { 252 + return `dist/chunks/[name]-chunk${extension(chunk.name) || '.js'}`; 253 + }, 254 + entryFileNames(chunk) { 255 + return chunk.isEntry 256 + ? path.normalize(exports[chunk.name].require) 257 + : `dist/[name].js`; 258 + }, 259 + plugins: outputPlugins, 260 + }, 261 + ], 262 + }, 263 + 264 + { 265 + ...commonConfig, 266 + plugins: [ 267 + ...commonPlugins, 268 + dts(), 269 + ], 270 + output: { 271 + ...commonOutput, 272 + sourcemap: false, 273 + format: 'dts', 274 + chunkFileNames(chunk) { 275 + return `dist/chunks/[name]-chunk${extension(chunk.name) || '.d.ts'}`; 276 + }, 277 + entryFileNames(chunk) { 278 + return chunk.isEntry 279 + ? path.normalize(exports[chunk.name].types) 280 + : `dist/[name].d.ts`; 281 + }, 282 + plugins: [ 283 + { 284 + renderChunk(code, chunk) { 285 + if (chunk.fileName.endsWith('d.ts')) { 286 + return prettier.format(code, { 287 + filepath: chunk.fileName, 288 + parser: 'typescript', 289 + singleQuote: true, 290 + tabWidth: 2, 291 + printWidth: 100, 292 + trailingComma: 'es5', 293 + }); 294 + } 295 + }, 296 + }, 297 + ], 298 + }, 299 + }, 300 + ];
+574
src/asyncResourceGraph.ts
··· 1 + import { 2 + executionAsyncId as _getExecutionAsyncId, 3 + executionAsyncResource as _getExecutionAsyncResource, 4 + createHook, 5 + } from 'node:async_hooks'; 6 + import { AsyncResourceKind } from './constants'; 7 + import { StackFrame, getStackFrame, promiseWithReject } from './utils'; 8 + import { FiberError } from './errors'; 9 + 10 + export const enum AsyncResourceFlags { 11 + INIT = 0, 12 + /** The node's `before` trigger was invoked. Work must have started */ 13 + PRE_EXECUTION = 1 << 0, 14 + /** The node's `after` trigger was invoked. Work must have been completed */ 15 + POST_EXECUTION = 1 << 1, 16 + /** The node (which is a promise) has been resolved and triggered subsequent promises */ 17 + RESOLVED = 1 << 2, 18 + /** The node has been created in a context by a cancelled fiber */ 19 + ABORTED = 1 << 3, 20 + 21 + /** If these flags are set it indicates that the resource is no longer blocking work it's a trigger for */ 22 + FINALIZED = AsyncResourceFlags.POST_EXECUTION | AsyncResourceFlags.RESOLVED, 23 + } 24 + 25 + type AsyncResourceObserverFn = ( 26 + event: AsyncResourceFlags, 27 + node: AsyncResourceNode 28 + ) => void; 29 + 30 + class AsyncResourceObserver { 31 + fiberId: number; 32 + callback: AsyncResourceObserverFn; 33 + constructor(fiber: AsyncResourceFiber, callback: AsyncResourceObserverFn) { 34 + this.fiberId = fiber.fiberId; 35 + this.callback = callback; 36 + } 37 + 38 + _onExecute(executionNode: AsyncResourceNode, node: AsyncResourceNode) { 39 + this.callback(AsyncResourceFlags.INIT, executionNode); 40 + if (node.fiberId === this.fiberId) { 41 + this.observe(node); 42 + } 43 + } 44 + 45 + _onBefore(node: AsyncResourceNode) { 46 + this.callback(AsyncResourceFlags.PRE_EXECUTION, node); 47 + } 48 + 49 + _onAfter(node: AsyncResourceNode) { 50 + this.callback(AsyncResourceFlags.POST_EXECUTION, node); 51 + node.notifyObserver = null; 52 + } 53 + 54 + _onPromiseResolve(node: AsyncResourceNode) { 55 + this.callback(AsyncResourceFlags.RESOLVED, node); 56 + node.notifyObserver = null; 57 + } 58 + 59 + isObserved(node: AsyncResourceNode): boolean { 60 + return node.notifyObserver === this; 61 + } 62 + 63 + observe(node: AsyncResourceNode): void { 64 + if (node.notifyObserver !== null && node.notifyObserver !== this) { 65 + throw new TypeError( 66 + 'Only one observer can be attached to a node at a time.\n' + 67 + `Node (${node.asyncId}) is already being observed` 68 + ); 69 + } 70 + node.notifyObserver = this; 71 + } 72 + } 73 + 74 + type RawAsyncResource = object & { [K in typeof fiberRef]?: AsyncResourceNode }; 75 + 76 + const fiberRef = Symbol('async_resource_node'); 77 + const fiberStack: AsyncResourceFiber[] = []; 78 + 79 + const getExecutionAsyncResource: () => RawAsyncResource = 80 + _getExecutionAsyncResource; 81 + const getExecutionAsyncId = _getExecutionAsyncId; 82 + 83 + let _fiberIdx = 1; 84 + 85 + export class AsyncResourceFiber { 86 + readonly fiberId = _fiberIdx++; 87 + readonly root: AsyncResourceNode; 88 + 89 + active = false; 90 + parent: AsyncResourceFiber | null; 91 + frame: StackFrame | null; 92 + 93 + constructor(frame: StackFrame | null) { 94 + // Fibers are created as children of the current fiber, 95 + // but their root resource will be the current execution context, 96 + // even if it's deeper into the parent fiber's async graph 97 + const executionAsyncResource = getExecutionAsyncResource(); 98 + let root = executionAsyncResource[fiberRef]; 99 + if (root === undefined) { 100 + // WARN: This must imply `!this.parent` 101 + // If no parent fiber exists, this is the root fiber, and 102 + // empty state is created for its resource node 103 + root = new AsyncResourceNode( 104 + this.fiberId, 105 + getExecutionAsyncId(), 106 + null, 107 + frame 108 + ); 109 + executionAsyncResource[fiberRef] = root; 110 + } 111 + this.root = root; 112 + this.parent = getFiber(); 113 + this.frame = frame; 114 + } 115 + 116 + enable() { 117 + if (!this.active) { 118 + // Set the current execution context's fiber to be the current fiber 119 + this.root.fiberId = this.fiberId; 120 + this.active = true; 121 + fiberStack.push(this); 122 + asyncResourceGraphHook.enable(); 123 + } 124 + return this; 125 + } 126 + 127 + disable() { 128 + fiberStack.splice(fiberStack.indexOf(this), 1); 129 + if (!fiberStack.length) asyncResourceGraphHook.disable(); 130 + // Reset the context's fiber. This must use the stack since fibers 131 + // may be created out of order and `this.parent` may not be 132 + // the same as the stack's fiber 133 + this.root.fiberId = getFiber()?.fiberId || 0; 134 + this.active = false; 135 + return this; 136 + } 137 + 138 + get parentFiberIds(): readonly number[] { 139 + const parentFiberIds: number[] = []; 140 + let fiber: AsyncResourceFiber | null = this; 141 + while ((fiber = fiber.parent) !== null) parentFiberIds.push(fiber.fiberId); 142 + return parentFiberIds; 143 + } 144 + 145 + /** Returns amount of pending tasks in the fiber */ 146 + get pending() { 147 + const countExecutionTargets = (node: AsyncResourceNode) => { 148 + let count = 0; 149 + // To count all pending tasks, we check all resources that 150 + // have been created on the fiber recursively and count all 151 + // non-finalized ones 152 + for (const target of node.executionTargets.values()) { 153 + if (target.fiberId === this.fiberId) { 154 + count += countExecutionTargets(target); 155 + count += target.flags & AsyncResourceFlags.FINALIZED ? 0 : 1; 156 + } 157 + } 158 + return count; 159 + }; 160 + // Pending tasks may be counted excluding the top-level resource, 161 + // as it presumably will still be in progress, but shouldn't be 162 + // considered to be blocking. 163 + return countExecutionTargets(this.root); 164 + } 165 + 166 + get executionTargets(): AsyncResourceNode[] { 167 + return [...this.root.executionTargets.values()].filter(node => { 168 + return node.fiberId === this.fiberId; 169 + }); 170 + } 171 + 172 + toString() { 173 + return `[Fiber: ${this.fiberId}]`; 174 + } 175 + } 176 + 177 + /** Descriptors for an async resource (akin to IO tasks) */ 178 + export class AsyncResourceNode { 179 + asyncId: number; 180 + fiberId: number; 181 + type: AsyncResourceKind | null; 182 + active: boolean; 183 + 184 + /** If available, a stacktrace frame pointing to the resource's initialization */ 185 + frame: StackFrame | null; 186 + 187 + /** An execution context's descriptor this async resource was created in */ 188 + executionOrigin: AsyncResourceNode | null; 189 + /** An async resource's descriptor which will, upon completion, trigger this async resource 190 + * @remarks 191 + * This will be identical to `executionOrigin` if the resource was triggerd synchronously 192 + */ 193 + triggerOrigin: AsyncResourceNode | null; 194 + 195 + /** Async resources that this resource has created (sub-tasks) */ 196 + executionTargets: Map<number, AsyncResourceNode>; 197 + /** Async resources that this resource will trigger upon completion (follow-up tasks) */ 198 + triggerTargets: Map<number, AsyncResourceNode>; 199 + 200 + /** Descriptions and completion state of this node */ 201 + flags: AsyncResourceFlags; 202 + 203 + /** Observer that should be notified about changes */ 204 + notifyObserver: AsyncResourceObserver | null; 205 + 206 + constructor( 207 + fiberId: number, 208 + asyncId: number, 209 + type: string | null, 210 + frame: StackFrame | null 211 + ) { 212 + this.active = true; 213 + this.asyncId = asyncId; 214 + this.fiberId = fiberId; 215 + this.type = type as AsyncResourceKind; 216 + this.frame = frame; 217 + this.executionOrigin = null; 218 + this.triggerOrigin = null; 219 + this.executionTargets = new Map(); 220 + this.triggerTargets = new Map(); 221 + this.flags = AsyncResourceFlags.INIT; 222 + this.notifyObserver = null; 223 + } 224 + 225 + _onExecute( 226 + asyncId: number, 227 + type: string, 228 + triggerAsyncId: number, 229 + resource: RawAsyncResource 230 + ) { 231 + if (!this.active) { 232 + return; 233 + } 234 + // This method is called on an execution context's descriptor that created a new async resource. 235 + // Hence, we create a new child async resource here 236 + const frame = getStackFrame(1); 237 + const node = new AsyncResourceNode(this.fiberId, asyncId, type, frame); 238 + node.executionOrigin = this; 239 + resource[fiberRef] = node; 240 + this.executionTargets.set(asyncId, node); 241 + const triggerNode = 242 + asyncId !== triggerAsyncId 243 + ? getAsyncResourceNode(triggerAsyncId) 244 + : undefined; 245 + if (triggerNode) { 246 + node.triggerOrigin = triggerNode; 247 + triggerNode.triggerTargets.set(asyncId, node); 248 + } 249 + if (this.notifyObserver) { 250 + this.notifyObserver._onExecute(this, node); 251 + } 252 + } 253 + 254 + _onBefore() { 255 + this.flags |= AsyncResourceFlags.PRE_EXECUTION; 256 + if (this.active && this.notifyObserver) { 257 + this.notifyObserver._onBefore(this); 258 + } 259 + } 260 + 261 + _onAfter() { 262 + this.flags |= AsyncResourceFlags.POST_EXECUTION; 263 + if (this.active && this.notifyObserver) { 264 + this.notifyObserver._onAfter(this); 265 + } 266 + } 267 + 268 + _onPromiseResolve() { 269 + this.flags |= AsyncResourceFlags.RESOLVED; 270 + if (this.active && this.notifyObserver) { 271 + this.notifyObserver._onPromiseResolve(this); 272 + } 273 + } 274 + 275 + toString() { 276 + return `[async ${this.type || `Fiber: ${this.fiberId}`}]`; 277 + } 278 + } 279 + 280 + const taintAsyncResourceGraph = ( 281 + node: AsyncResourceNode, 282 + mask: AsyncResourceFlags, 283 + flags: AsyncResourceFlags 284 + ) => { 285 + if ((node.flags & mask & flags) === 0) { 286 + node.flags |= flags; 287 + for (const target of node.executionTargets.values()) 288 + taintAsyncResourceGraph(target, mask, flags); 289 + for (const target of node.triggerTargets.values()) 290 + taintAsyncResourceGraph(target, mask, flags); 291 + } 292 + }; 293 + 294 + const getAsyncResourceNode = ( 295 + asyncId: number 296 + ): AsyncResourceNode | undefined => { 297 + let executionNode = getExecutionAsyncResource()[fiberRef] ?? null; 298 + if (executionNode) { 299 + // The `asyncResourceGraphHook`'s callbacks execute inside the fiber's execution context stack. 300 + // This means we can find any node by checking all nodes in the current and any parent 301 + // execution contexts. 302 + let node: AsyncResourceNode | undefined; 303 + do { 304 + if (executionNode.asyncId === asyncId) return executionNode; 305 + if ((node = executionNode.executionTargets.get(asyncId))) return node; 306 + } while ((executionNode = executionNode.executionOrigin)); 307 + } 308 + }; 309 + 310 + let _asyncResourceGraphHookActive = false; 311 + 312 + const asyncResourceGraphHook = createHook({ 313 + init( 314 + asyncId: number, 315 + type: string, 316 + triggerAsyncId: number, 317 + resource: RawAsyncResource 318 + ) { 319 + if (!_asyncResourceGraphHookActive) { 320 + try { 321 + _asyncResourceGraphHookActive = true; 322 + const executionNode = getExecutionAsyncResource()[fiberRef]; 323 + executionNode?._onExecute(asyncId, type, triggerAsyncId, resource); 324 + } finally { 325 + _asyncResourceGraphHookActive = false; 326 + } 327 + } 328 + }, 329 + before(asyncId: number) { 330 + try { 331 + _asyncResourceGraphHookActive = true; 332 + getAsyncResourceNode(asyncId)?._onBefore(); 333 + } finally { 334 + _asyncResourceGraphHookActive = false; 335 + } 336 + }, 337 + after(asyncId: number) { 338 + try { 339 + _asyncResourceGraphHookActive = true; 340 + getAsyncResourceNode(asyncId)?._onAfter(); 341 + } finally { 342 + _asyncResourceGraphHookActive = false; 343 + } 344 + }, 345 + promiseResolve(asyncId: number) { 346 + try { 347 + _asyncResourceGraphHookActive = true; 348 + getAsyncResourceNode(asyncId)?._onPromiseResolve(); 349 + } finally { 350 + _asyncResourceGraphHookActive = false; 351 + } 352 + }, 353 + // NOTE: While it's nice for cleanups we leave out the `destroy` 354 + // hook since it has performance implications according to the docs 355 + }); 356 + 357 + function fiberWatchdog<T>( 358 + fiber: AsyncResourceFiber, 359 + params: FiberParams, 360 + promise: Promise<T> 361 + ): Promise<T> { 362 + try { 363 + let watchdogImmediate: NodeJS.Immediate | void; 364 + fiber.root.active = false; 365 + 366 + const { abort } = params; 367 + const { parentFiberIds } = fiber; 368 + 369 + const pendingExecutionTargets = new Set<AsyncResourceNode>(); 370 + const watchdogResult = promiseWithReject(promise, () => { 371 + if (watchdogImmediate) 372 + watchdogImmediate = clearImmediate(watchdogImmediate); 373 + }); 374 + 375 + function lastExecutionTarget(): AsyncResourceNode { 376 + if (pendingExecutionTargets.size) { 377 + const targets = [...pendingExecutionTargets.values()]; 378 + return targets[targets.length - 1]; 379 + } else { 380 + const targets = fiber.executionTargets; 381 + return targets[targets.length - 1] || fiber.root; 382 + } 383 + } 384 + 385 + function assertFiberAbort(node: AsyncResourceNode) { 386 + if (node.flags & AsyncResourceFlags.ABORTED) { 387 + assertFiberError(new FiberError('FIBER_ABORTED', fiber, node)); 388 + } else if ( 389 + node.triggerOrigin && 390 + node.triggerOrigin.flags & AsyncResourceFlags.ABORTED 391 + ) { 392 + if (node.triggerOrigin.fiberId === fiber.fiberId) { 393 + assertFiberError( 394 + new FiberError('FIBER_ABORTED', fiber, node.triggerOrigin) 395 + ); 396 + } else { 397 + assertFiberError( 398 + new FiberError('FOREIGN_ASYNC_ABORTED', fiber, node.triggerOrigin) 399 + ); 400 + } 401 + } else if (abort?.aborted) { 402 + assertFiberError(abort.reason); 403 + if (_asyncResourceGraphHookActive) abort.throwIfAborted(); 404 + } 405 + } 406 + 407 + function assertFiberError(error: Error) { 408 + watchdogResult.reject(error); 409 + if (_asyncResourceGraphHookActive) throw error; 410 + } 411 + 412 + function assertFiberOwnership(node: AsyncResourceNode) { 413 + const { triggerOrigin } = node; 414 + if (node.fiberId !== fiber.fiberId || !triggerOrigin) { 415 + // We only check triggers for nodes owned by the current fiber 416 + } else if (triggerOrigin === fiber.root) { 417 + // Immediately invoked async IO on the fiber root are ignored 418 + } else if (triggerOrigin.fiberId === node.fiberId) { 419 + // If the trigger is a node in the same fiber, this is allowed 420 + } else { 421 + const isParentFiberTrigger = parentFiberIds.includes( 422 + triggerOrigin.fiberId 423 + ); 424 + if (!isParentFiberTrigger) { 425 + assertFiberError( 426 + new FiberError('FOREIGN_ASYNC_TRIGGER', fiber, node) 427 + ); 428 + } else { 429 + // TODO: Selectively allow resolved promises 430 + assertFiberError(new FiberError('PARENT_ASYNC_TRIGGER', fiber, node)); 431 + } 432 + } 433 + } 434 + 435 + function stallWatchdog() { 436 + watchdogImmediate = undefined; 437 + if (abort?.aborted) { 438 + return; 439 + } 440 + let hasAsyncIO = false; 441 + for (const asyncNode of pendingExecutionTargets) { 442 + if ( 443 + (asyncNode.flags & AsyncResourceFlags.FINALIZED) === 0 && 444 + asyncNode.type !== 'PROMISE' 445 + ) { 446 + hasAsyncIO = true; 447 + break; 448 + } 449 + } 450 + if (!hasAsyncIO) { 451 + watchdogResult.reject( 452 + new FiberError('FIBER_STALL', fiber, lastExecutionTarget()) 453 + ); 454 + } 455 + } 456 + 457 + const scheduleCheck = () => 458 + watchdogImmediate || (watchdogImmediate = setImmediate(stallWatchdog)); 459 + watchdogImmediate = setImmediate(stallWatchdog); 460 + 461 + abort?.addEventListener('abort', () => { 462 + taintAsyncResourceGraph( 463 + fiber.root, 464 + AsyncResourceFlags.FINALIZED, 465 + AsyncResourceFlags.ABORTED 466 + ); 467 + }); 468 + 469 + const observer = new AsyncResourceObserver(fiber, (event, node) => { 470 + scheduleCheck(); 471 + switch (event) { 472 + case AsyncResourceFlags.INIT: 473 + assertFiberOwnership(node); 474 + assertFiberAbort(node); 475 + pendingExecutionTargets.add(node); 476 + return; 477 + case AsyncResourceFlags.POST_EXECUTION: 478 + pendingExecutionTargets.delete(node); 479 + return; 480 + case AsyncResourceFlags.RESOLVED: 481 + assertFiberAbort(node); 482 + pendingExecutionTargets.delete(node); 483 + return; 484 + default: 485 + return; 486 + } 487 + }); 488 + 489 + const stack: AsyncResourceNode[] = []; 490 + for (const target of fiber.root.executionTargets.values()) { 491 + if (target.fiberId === fiber.fiberId) { 492 + stack.push(target); 493 + observer.observe(target); 494 + if ((target.flags & AsyncResourceFlags.FINALIZED) === 0) { 495 + assertFiberOwnership(target); 496 + pendingExecutionTargets.add(target); 497 + } 498 + } 499 + } 500 + let pointer: AsyncResourceNode | undefined; 501 + while ((pointer = stack.pop())) { 502 + for (const target of pointer.executionTargets.values()) { 503 + if (!observer.isObserved(target)) { 504 + stack.push(target); 505 + observer.observe(target); 506 + if ((target.flags & AsyncResourceFlags.FINALIZED) === 0) { 507 + assertFiberOwnership(target); 508 + pendingExecutionTargets.add(target); 509 + } 510 + } 511 + } 512 + } 513 + 514 + return watchdogResult.promise; 515 + } finally { 516 + fiber.root.active = false; 517 + } 518 + } 519 + 520 + /** Enable async resource graph tracking and initialize root fiber if needed. 521 + * @remarks 522 + * Call this as early as async resources are created that other fibers depend 523 + * on. No async resources outside of the root fiber will be tracked! 524 + */ 525 + export function enable(): AsyncResourceFiber { 526 + return getFiber() || new AsyncResourceFiber(getStackFrame(0)).enable(); 527 + } 528 + 529 + /** Disable top-level fiber 530 + * @remarks 531 + * If a root fiber has been created with `enable()`, calling this function 532 + * allows all fiber data to be garbage collected. 533 + */ 534 + export function disable(): AsyncResourceFiber | null { 535 + return getFiber()?.disable() || null; 536 + } 537 + 538 + /** Get currently active fiber */ 539 + export function getFiber(): AsyncResourceFiber | null { 540 + for (let idx = fiberStack.length - 1; idx >= 0; idx--) 541 + if (fiberStack[idx].active) return fiberStack[idx]; 542 + return null; 543 + } 544 + 545 + /** Returns an arbitrary async resource's descriptor 546 + * @remarks 547 + * WARN: This will only work for async resource objects that have been 548 + * created in a fiber. 549 + */ 550 + export function getFiberNode(resource: object): AsyncResourceNode | undefined { 551 + return resource[fiberRef]; 552 + } 553 + 554 + export interface FiberParams { 555 + abort?: AbortSignal; 556 + } 557 + 558 + /** Create a fiber and execute it, returning both the result of `fn` and its fiber 559 + * @remarks 560 + * While this function returns synchronously, it will track all async resources 561 + * that the passed function has created. 562 + */ 563 + export function fiber<T>( 564 + fn: () => Promise<T>, 565 + params: FiberParams = {} 566 + ): { return: Promise<T>; fiber: AsyncResourceFiber } { 567 + const fiber = new AsyncResourceFiber(getStackFrame(0)); 568 + try { 569 + fiber.enable(); 570 + return { return: fiberWatchdog(fiber, params, fn()), fiber }; 571 + } finally { 572 + fiber.disable(); 573 + } 574 + }
+64
src/constants.ts
··· 1 + export type AsyncResourceKind = 2 + | 'NONE' 3 + | 'DIRHANDLE' 4 + | 'DNSCHANNEL' 5 + | 'ELDHISTOGRAM' 6 + | 'FILEHANDLE' 7 + | 'FILEHANDLECLOSEREQ' 8 + | 'BLOBREADER' 9 + | 'FSEVENTWRAP' 10 + | 'FSREQCALLBACK' 11 + | 'FSREQPROMISE' 12 + | 'GETADDRINFOREQWRAP' 13 + | 'GETNAMEINFOREQWRAP' 14 + | 'HEAPSNAPSHOT' 15 + | 'HTTP2SESSION' 16 + | 'HTTP2STREAM' 17 + | 'HTTP2PING' 18 + | 'HTTP2SETTINGS' 19 + | 'HTTPINCOMINGMESSAGE' 20 + | 'HTTPCLIENTREQUEST' 21 + | 'JSSTREAM' 22 + | 'JSUDPWRAP' 23 + | 'MESSAGEPORT' 24 + | 'PIPECONNECTWRAP' 25 + | 'PIPESERVERWRAP' 26 + | 'PIPEWRAP' 27 + | 'PROCESSWRAP' 28 + | 'PROMISE' 29 + | 'QUERYWRAP' 30 + | 'QUIC_ENDPOINT' 31 + | 'QUIC_LOGSTREAM' 32 + | 'QUIC_PACKET' 33 + | 'QUIC_SESSION' 34 + | 'QUIC_STREAM' 35 + | 'QUIC_UDP' 36 + | 'SHUTDOWNWRAP' 37 + | 'SIGNALWRAP' 38 + | 'STATWATCHER' 39 + | 'STREAMPIPE' 40 + | 'TCPCONNECTWRAP' 41 + | 'TCPSERVERWRAP' 42 + | 'TCPWRAP' 43 + | 'TTYWRAP' 44 + | 'UDPSENDWRAP' 45 + | 'UDPWRAP' 46 + | 'SIGINTWATCHDOG' 47 + | 'WORKER' 48 + | 'WORKERHEAPSNAPSHOT' 49 + | 'WRITEWRAP' 50 + | 'ZLIB' 51 + | 'CHECKPRIMEREQUEST' 52 + | 'PBKDF2REQUEST' 53 + | 'KEYPAIRGENREQUEST' 54 + | 'KEYGENREQUEST' 55 + | 'KEYEXPORTREQUEST' 56 + | 'CIPHERREQUEST' 57 + | 'DERIVEBITSREQUEST' 58 + | 'HASHREQUEST' 59 + | 'RANDOMBYTESREQUEST' 60 + | 'RANDOMPRIMEREQUEST' 61 + | 'SCRYPTREQUEST' 62 + | 'SIGNREQUEST' 63 + | 'TLSWRAP' 64 + | 'VERIFYREQUEST';
+92
src/errors.ts
··· 1 + import type { 2 + AsyncResourceFiber, 3 + AsyncResourceNode, 4 + } from './asyncResourceGraph'; 5 + 6 + export type FiberErrorCode = 7 + | 'FOREIGN_ASYNC_TRIGGER' 8 + | 'PARENT_ASYNC_TRIGGER' 9 + | 'FOREIGN_ASYNC_ABORTED' 10 + | 'FIBER_ABORTED' 11 + | 'FIBER_STALL'; 12 + 13 + const codeToMessage = ( 14 + code: FiberErrorCode, 15 + fiber: AsyncResourceFiber, 16 + node: AsyncResourceNode 17 + ): string => { 18 + switch (code) { 19 + case 'FOREIGN_ASYNC_TRIGGER': 20 + return ( 21 + `${fiber} tried to create ${node} which will be triggered by async IO from a different fiber.\n` + 22 + 'Fibers are isolated and may only create and reference async resources they have created themselves.' 23 + ); 24 + case 'PARENT_ASYNC_TRIGGER': 25 + return ( 26 + `${fiber} tried to create ${node} which will be triggered by async IO of this fiber's parent context.\n` + 27 + 'Fibers are isolated and may only create and reference async resources they have created themselves.' 28 + ); 29 + case 'FOREIGN_ASYNC_ABORTED': 30 + return ( 31 + `${fiber} used ${node} from another fiber which was aborted and can never resolve.\n` + 32 + 'Fibers may not share async resources, and may accidentally prevent each other from resolving if they do.' 33 + ); 34 + case 'FIBER_ABORTED': 35 + return ( 36 + `${fiber}'s ${node} was aborted and will never resolve.\n` + 37 + "If you see this message, you're observing an internal forceful cancellation of a fiber and this error is expected." 38 + ); 39 + case 'FIBER_STALL': 40 + return ( 41 + `${fiber} has finished all of its work but won't resolve and pass control back to the parent fiber.\n` + 42 + 'This usally happens if a Promise is unresolved or if its async IO has been cancelled without a callback being handled.\n' + 43 + `${node} is the last async resource the fiber got stuck on.` 44 + ); 45 + } 46 + }; 47 + 48 + const traceNode = ( 49 + node: AsyncResourceNode, 50 + fiber: AsyncResourceFiber, 51 + depth = 1 52 + ): string => { 53 + let trace = `${node}`; 54 + let origin: AsyncResourceNode | null = node; 55 + for (let idx = 1; origin && origin !== fiber.root && idx <= depth; idx++) { 56 + if (origin.frame) trace += `\n at ${origin.frame}`; 57 + origin = origin.executionOrigin; 58 + } 59 + return trace; 60 + }; 61 + 62 + export class FiberError extends Error { 63 + static stackTraceLimit = 10; 64 + 65 + readonly fiber: AsyncResourceFiber; 66 + readonly node: AsyncResourceNode; 67 + readonly code: FiberErrorCode; 68 + 69 + constructor( 70 + code: FiberErrorCode, 71 + fiber: AsyncResourceFiber, 72 + node: AsyncResourceNode 73 + ) { 74 + super(codeToMessage(code, fiber, node)); 75 + this.fiber = fiber; 76 + this.node = node; 77 + this.code = code; 78 + } 79 + 80 + get trace(): string { 81 + let trace = traceNode(this.node, this.fiber); 82 + if (this.node.triggerOrigin) 83 + trace += `\ntriggered by ${traceNode(this.node.triggerOrigin, this.fiber, FiberError.stackTraceLimit)}`; 84 + if (this.node.executionOrigin) 85 + trace += `\nexecuted in ${traceNode(this.node.executionOrigin, this.fiber, FiberError.stackTraceLimit)}`; 86 + return trace; 87 + } 88 + 89 + toString() { 90 + return `${this.message.trim()}\n\n${this.trace}`; 91 + } 92 + }
+12
src/index.ts
··· 1 + export type { StackFrame } from './utils'; 2 + export type * from './constants'; 3 + export type * from './errors'; 4 + export type * from './asyncResourceGraph'; 5 + 6 + export { 7 + getFiberNode, 8 + getFiber, 9 + fiber, 10 + enable, 11 + disable, 12 + } from './asyncResourceGraph';
+108
src/utils.ts
··· 1 + import { inspect } from 'node:util'; 2 + import { writeSync } from 'node:fs'; 3 + 4 + export const printf = (...args: unknown[]) => { 5 + writeSync( 6 + process.stderr.fd, 7 + args 8 + .map(arg => { 9 + return typeof arg === 'object' && arg ? inspect(arg) : `${arg}`; 10 + }) 11 + .join(' ') + '\n' 12 + ); 13 + }; 14 + 15 + const MAX_STACK_DEPTH = 10; 16 + 17 + const isNodeSite = (site: NodeJS.CallSite) => 18 + !!site.getFileName()?.startsWith('node:'); 19 + const isNodeInternalSite = (site: NodeJS.CallSite) => 20 + !!site.getFileName()?.startsWith('node:internal/'); 21 + 22 + export class StackFrame { 23 + isToplevel: boolean; 24 + isNative: boolean; 25 + isConstructor: boolean; 26 + typeName: string | null; 27 + functionName: string | null; 28 + methodName: string | null; 29 + fileName: string | null; 30 + lineNumber: number | null; 31 + columnNumber: number | null; 32 + constructor(stack: NodeJS.CallSite[], offset: number) { 33 + let idx = offset; 34 + let site: NodeJS.CallSite | undefined = stack[idx]; 35 + while (idx < stack.length && isNodeSite((site = stack[idx]))) idx++; 36 + this.fileName = site.getFileName() || null; 37 + this.lineNumber = site.getLineNumber(); 38 + this.columnNumber = site.getColumnNumber(); 39 + this.functionName = site.getFunctionName(); 40 + do { 41 + this.isToplevel = site.isToplevel(); 42 + this.isNative = site.isNative(); 43 + this.isConstructor = site.isConstructor(); 44 + this.typeName = site.getTypeName(); 45 + this.functionName = site.getFunctionName(); 46 + this.methodName = site.getMethodName(); 47 + } while ( 48 + idx > offset && 49 + this.functionName === null && 50 + this.methodName === null && 51 + !isNodeInternalSite((site = stack[--idx])) 52 + ); 53 + } 54 + toString() { 55 + const prefix = this.isConstructor ? 'new ' : ''; 56 + const namePrefix = 57 + this.typeName !== null && this.typeName !== 'global' 58 + ? `${this.typeName}.` 59 + : ''; 60 + const name = `${namePrefix}${this.functionName || this.methodName || '<anonymous>'}`; 61 + let location = this.fileName || '<anonymous>'; 62 + if (this.lineNumber != null) location += `:${this.lineNumber}`; 63 + if (this.columnNumber != null) location += `:${this.columnNumber}`; 64 + return `${prefix}${name}${!!name ? ' (' : ''}${location}${!!name ? ')' : ''}`; 65 + } 66 + } 67 + 68 + export function getStackFrame(offset = 0): StackFrame | null { 69 + const originalStackFormatter = Error.prepareStackTrace; 70 + const originalStackTraceLimit = Error.stackTraceLimit; 71 + try { 72 + Error.stackTraceLimit = MAX_STACK_DEPTH + offset; 73 + Error.prepareStackTrace = (_err, stack) => 74 + new StackFrame(stack, 2 + offset); 75 + return new Error().stack as any; 76 + } finally { 77 + Error.prepareStackTrace = originalStackFormatter; 78 + Error.stackTraceLimit = originalStackTraceLimit; 79 + } 80 + } 81 + 82 + export interface PromiseWithReject<T> { 83 + promise: Promise<T>; 84 + reject(reason?: any): void; 85 + } 86 + 87 + export function promiseWithReject<T>( 88 + promise: Promise<T>, 89 + onSettled: () => void 90 + ): PromiseWithReject<T> { 91 + let reject: PromiseWithReject<T>['reject']; 92 + return { 93 + promise: new Promise<T>((resolve, _reject) => { 94 + promise.then( 95 + result => { 96 + resolve(result); 97 + onSettled(); 98 + }, 99 + reason => { 100 + _reject(reason); 101 + onSettled(); 102 + } 103 + ); 104 + reject = _reject; 105 + }), 106 + reject: reject!, 107 + }; 108 + }
+25
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + "types": ["@types/node"], 4 + "baseUrl": "./", 5 + "rootDir": ".", 6 + "forceConsistentCasingInFileNames": true, 7 + "importsNotUsedAsValues": "remove", 8 + "noEmit": true, 9 + "esModuleInterop": true, 10 + "noUnusedLocals": true, 11 + "allowJs": true, 12 + "lib": ["es2016"], 13 + "jsx": "react-jsx", 14 + "module": "es2022", 15 + "moduleResolution": "node", 16 + "resolveJsonModule": true, 17 + "target": "esnext", 18 + "strict": true, 19 + "noImplicitAny": false, 20 + "noUnusedParameters": true, 21 + "skipLibCheck": true, 22 + "isolatedModules": true 23 + }, 24 + "include": ["src", "packages"] 25 + }